diff --git a/.gitignore b/.gitignore
index b25c15b..bc6b8bb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,5 @@
*~
+*.hi
+*.o
+
+dist
diff --git a/Asmblr.cabal b/Asmblr.cabal
new file mode 100644
index 0000000..658327b
--- /dev/null
+++ b/Asmblr.cabal
@@ -0,0 +1,69 @@
+-- Initial Asmblr.cabal generated by cabal init. For further
+-- documentation, see http://haskell.org/cabal/users-guide/
+
+-- The name of the package.
+name: Asmblr
+
+-- The package version. See the Haskell package versioning policy (PVP)
+-- for standards guiding when and how versions should be incremented.
+-- http://www.haskell.org/haskellwiki/Package_versioning_policy
+-- PVP summary: +-+------- breaking API changes
+-- | | +----- non-breaking API additions
+-- | | | +--- code changes with no API change
+version: 0.1.0.0
+
+-- A short (one-line) description of the package.
+synopsis: Assembler for Hack platform
+
+-- A longer description of the package.
+-- description:
+
+-- URL for the project homepage or repository.
+homepage: http://git.rekahsoft.ca/hack
+
+-- The license under which the package is released.
+license: GPL-3
+
+-- The file containing the license text.
+license-file: LICENSE
+
+-- The package author(s).
+author: Collin J. Doering
+
+-- An email address to which users can send suggestions, bug reports, and
+-- patches.
+maintainer: collin.doering@rekahsoft.ca
+
+-- A copyright notice.
+-- copyright:
+
+-- category:
+
+build-type: Simple
+
+-- Extra files to be distributed with the package, such as examples or a
+-- README.
+-- extra-source-files:
+
+-- Constraint on the version of Cabal needed to build this package.
+cabal-version: >=1.10
+
+
+executable Asmblr
+ -- .hs or .lhs file containing the Main module.
+ main-is: Main.hs
+
+ -- Modules included in this executable, other than Main.
+ -- other-modules:
+
+ -- LANGUAGE extensions used by modules in this package.
+ -- other-extensions:
+
+ -- Other library packages from which modules are imported.
+ build-depends: base >=4.8 && <4.9, parsec >=3.1 && <3.2, filepath >=1.4 && <1.5, containers >=0.5 && <0.6
+
+ -- Directories containing source files.
+ hs-source-dirs: src
+
+ -- Base language which the package is written in.
+ default-language: Haskell2010
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..45644ff
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..fcfcc03
--- /dev/null
+++ b/README.md
@@ -0,0 +1,49 @@
+# Hack Assembler in Haskell
+
+`Asmblr` is a small Haskell program that transforms *Hack Assembly* into its machine language representation.
+
+## Features
+
+* Follows a similar structure to the implementation describe by the *Nand to Tetris* book
+* Faster then the implementation given with the *Nand to Tetris* course
+* Can read from stdin and write to stdout (if requested)
+* Uses open-source tools wherever possible
+
+## Building
+
+`Asmblr` requires GHC and cabal to be built and can be done like so:
+
+ $ cabal configure
+ $ cabal build
+
+Once built, the `Asmblr` executable will be in the `dist/build/Asmblr` folder, and can be run using cabal, or your shell. The `Asmblr` program can also be installed using `cabal install`. For more information on installing cabal packages and using cabal see [its manual](https://www.haskell.org/cabal/users-guide/).
+
+## Tools
+
+The creation of this software was made possible by the following open source tools and
+libraries.
+
+* [Gnu Emacs][], because there is no place like home; and no greater editor!
+* [GHC][], for compilation of Haskell code
+* [Cabal][], for building the project
+
+## License
+
+This project is licensed under the [GPLv3][]. Please see the LICENSE file for full details.
+
+## Issues
+
+There are some minor issues that can be cleaned up in future releases. Namely, making error output more human readable, and a few minor optimization's.
+
+* Explicitly handle if input file dne or is unreadable
+* Explicitly handle if output file is un-writable
+* Create ParseException type to throw from parser and can be caught in Asmblr.defaultMain
+* Add (> "error description") throughout parsers to make error output more readable
+* Re-factor cInstrDest and cInstrAluOps to remove unneeded use of 'try'
+ for optimization's sake
+* Write tests so that future changes don't break things (see folder `testsuite`)
+
+[Gnu Emacs]: http://www.gnu.org/software/emacs/
+[GPLv3]: https://www.gnu.org/licenses/gpl.html
+[GHC]: https://www.haskell.org/ghc/
+[Cabal]: https://github.com/haskell/cabal/
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
index 0000000..9a994af
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/doc/examples/Add.asm b/doc/examples/Add.asm
new file mode 100644
index 0000000..a5b268c
--- /dev/null
+++ b/doc/examples/Add.asm
@@ -0,0 +1,13 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+// File name: projects/06/add/Add.asm
+
+// Computes R0 = 2 + 3
+
+@2
+D=A
+@3
+D=D+A
+@0
+M=D
diff --git a/doc/examples/Max.asm b/doc/examples/Max.asm
new file mode 100644
index 0000000..99ae212
--- /dev/null
+++ b/doc/examples/Max.asm
@@ -0,0 +1,26 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+// File name: projects/06/max/Max.asm
+
+// Computes R2 = max(R0, R1) (R0,R1,R2 refer to RAM[0],RAM[1],RAM[2])
+
+ @R0
+ D=M // D = first number
+ @R1
+ D=D-M // D = first number - second number
+ @OUTPUT_FIRST
+ D;JGT // if D>0 (first is greater) goto output_first
+ @R1
+ D=M // D = second number
+ @OUTPUT_D
+ 0;JMP // goto output_d
+(OUTPUT_FIRST)
+ @R0
+ D=M // D = first number
+(OUTPUT_D)
+ @R2
+ M=D // M[2] = D (greatest number)
+(INFINITE_LOOP)
+ @INFINITE_LOOP
+ 0;JMP // infinite loop
diff --git a/doc/examples/Max2.asm b/doc/examples/Max2.asm
new file mode 100644
index 0000000..3f48bfd
--- /dev/null
+++ b/doc/examples/Max2.asm
@@ -0,0 +1,26 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+// File name: projects/06/max/Max.asm
+
+// Computes R2 = max(R0, R1) (R0,R1,R2 refer to RAM[0],RAM[1],RAM[2])
+
+ @R0
+ D=M // D = first number
+ @R1
+ D=D-M // D = first number - second number
+ @OUTPUT_FIRST
+ D;JGT // if D>0 (first is greater) goto output_first
+ @R1
+ D=M // D = second number
+ @OUTPUT_D
+ 0;JMP // goto output_d
+(OUTPUT_FIRST)
+ @R0
+ D=M // D = first number
+(OUTPUT_D)
+ @R2
+ M=D // M[2] = D (greatest number)
+(INFINITE_LOOP)
+ @INFINITE_LOOP
+ 0;JMP // infinite loop
diff --git a/doc/examples/Pong.asm b/doc/examples/Pong.asm
new file mode 100644
index 0000000..85c6c86
--- /dev/null
+++ b/doc/examples/Pong.asm
@@ -0,0 +1,28374 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+// File name: projects/06/pong/Pong.asm
+
+// This program was originally written in the high-level Jack language.
+// The Jack code was then translated by the Jack compiler into the machine
+// code given here.
+
+@256
+D=A
+@SP
+M=D
+@133
+0;JMP
+@R15
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+D=M-D
+M=0
+@END_EQ
+D;JNE
+@SP
+A=M-1
+M=-1
+(END_EQ)
+@R15
+A=M
+0;JMP
+@R15
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+D=M-D
+M=0
+@END_GT
+D;JLE
+@SP
+A=M-1
+M=-1
+(END_GT)
+@R15
+A=M
+0;JMP
+@R15
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+D=M-D
+M=0
+@END_LT
+D;JGE
+@SP
+A=M-1
+M=-1
+(END_LT)
+@R15
+A=M
+0;JMP
+@5
+D=A
+@LCL
+A=M-D
+D=M
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M
+M=D
+D=A
+@SP
+M=D+1
+@LCL
+D=M
+@R14
+AM=D-1
+D=M
+@THAT
+M=D
+@R14
+AM=M-1
+D=M
+@THIS
+M=D
+@R14
+AM=M-1
+D=M
+@ARG
+M=D
+@R14
+AM=M-1
+D=M
+@LCL
+M=D
+@R13
+A=M
+0;JMP
+@SP
+A=M
+M=D
+@LCL
+D=M
+@SP
+AM=M+1
+M=D
+@ARG
+D=M
+@SP
+AM=M+1
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+M=D
+@THAT
+D=M
+@SP
+AM=M+1
+M=D
+@4
+D=A
+@R13
+D=D+M
+@SP
+D=M-D
+@ARG
+M=D
+@SP
+MD=M+1
+@LCL
+M=D
+@R14
+A=M
+0;JMP
+@0
+D=A
+@R13
+M=D
+@sys.init
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL0
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL0)
+(ball.new)
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@memory.alloc
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL1
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL1)
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@10
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@THIS
+D=M
+@11
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@ARG
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@12
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@ARG
+D=M
+@5
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@THIS
+D=M
+@13
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@THIS
+D=M
+@14
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ball.show
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL2
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL2)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(ball.dispose)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@memory.dealloc
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL3
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL3)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(ball.show)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@1
+D=A
+@R13
+M=D
+@screen.setcolor
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL4
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL4)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ball.draw
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL5
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL5)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(ball.hide)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@1
+D=A
+@R13
+M=D
+@screen.setcolor
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL6
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL6)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ball.draw
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL7
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL7)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(ball.draw)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@5
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@5
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@R13
+M=D
+@screen.drawrectangle
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL8
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL8)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(ball.getleft)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(ball.getright)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@5
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@54
+0;JMP
+(ball.setdestination)
+@3
+D=A
+(LOOP_ball.setdestination)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_ball.setdestination
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@math.abs
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL9
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL9)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@math.abs
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL10
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL10)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT0
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT0)
+@THIS
+D=M
+@7
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@THIS
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ball.setdestination$if_true0
+D;JNE
+@ball.setdestination$if_false0
+0;JMP
+(ball.setdestination$if_true0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT1
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT1)
+@THIS
+D=M
+@8
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT2
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT2)
+@THIS
+D=M
+@9
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@ball.setdestination$if_end0
+0;JMP
+(ball.setdestination$if_false0)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT3
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT3)
+@THIS
+D=M
+@8
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT4
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT4)
+@THIS
+D=M
+@9
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+(ball.setdestination$if_end0)
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL11
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL11)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL12
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL12)
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL13
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL13)
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(ball.move)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ball.hide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL14
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL14)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT5
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT5)
+@SP
+AM=M-1
+D=M
+@ball.move$if_true0
+D;JNE
+@ball.move$if_false0
+0;JMP
+(ball.move$if_true0)
+@THIS
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@5
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@ball.move$if_end0
+0;JMP
+(ball.move$if_false0)
+@THIS
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@THIS
+D=M
+@9
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ball.move$if_true1
+D;JNE
+@ball.move$if_false1
+0;JMP
+(ball.move$if_true1)
+@THIS
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ball.move$if_true2
+D;JNE
+@ball.move$if_false2
+0;JMP
+(ball.move$if_true2)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+@ball.move$if_end2
+0;JMP
+(ball.move$if_false2)
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+M=D
+(ball.move$if_end2)
+@ball.move$if_end1
+0;JMP
+(ball.move$if_false1)
+@THIS
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ball.move$if_true3
+D;JNE
+@ball.move$if_false3
+0;JMP
+(ball.move$if_true3)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+@ball.move$if_end3
+0;JMP
+(ball.move$if_false3)
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+M=D
+(ball.move$if_end3)
+(ball.move$if_end1)
+(ball.move$if_end0)
+@THIS
+D=M
+@8
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ball.move$if_true4
+D;JNE
+@ball.move$if_false4
+0;JMP
+(ball.move$if_true4)
+@THIS
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ball.move$if_true5
+D;JNE
+@ball.move$if_false5
+0;JMP
+(ball.move$if_true5)
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+M=D
+@ball.move$if_end5
+0;JMP
+(ball.move$if_false5)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+(ball.move$if_end5)
+@ball.move$if_end4
+0;JMP
+(ball.move$if_false4)
+@THIS
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ball.move$if_true6
+D;JNE
+@ball.move$if_false6
+0;JMP
+(ball.move$if_true6)
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+M=D
+@ball.move$if_end6
+0;JMP
+(ball.move$if_false6)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+(ball.move$if_end6)
+(ball.move$if_end4)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@10
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT0
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT0)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@ball.move$if_true7
+D;JNE
+@ball.move$if_false7
+0;JMP
+(ball.move$if_true7)
+@SP
+M=M+1
+A=M-1
+M=1
+@THIS
+D=M
+@14
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@THIS
+D=M
+@10
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+(ball.move$if_false7)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@11
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT6
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT6)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@ball.move$if_true8
+D;JNE
+@ball.move$if_false8
+0;JMP
+(ball.move$if_true8)
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@14
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@THIS
+D=M
+@11
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+(ball.move$if_false8)
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@12
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT1
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT1)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@ball.move$if_true9
+D;JNE
+@ball.move$if_false9
+0;JMP
+(ball.move$if_true9)
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@14
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@THIS
+D=M
+@12
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+M=D
+(ball.move$if_false9)
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@13
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT7
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT7)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@ball.move$if_true10
+D;JNE
+@ball.move$if_false10
+0;JMP
+(ball.move$if_true10)
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@14
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@THIS
+D=M
+@13
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+M=D
+(ball.move$if_false10)
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ball.show
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL15
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL15)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@14
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(ball.bounce)
+@5
+D=A
+(LOOP_ball.bounce)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_ball.bounce
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL16
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL16)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL17
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL17)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ0
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ0)
+@SP
+AM=M-1
+D=M
+@ball.bounce$if_true0
+D;JNE
+@ball.bounce$if_false0
+0;JMP
+(ball.bounce$if_true0)
+@10
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@ball.bounce$if_end0
+0;JMP
+(ball.bounce$if_false0)
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT8
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT8)
+@SP
+A=M-1
+M=!M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@RET_ADDRESS_EQ1
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ1)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT9
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT9)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+A=M-1
+D=!M
+M=D+1
+@RET_ADDRESS_EQ2
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ2)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+AM=M-1
+D=M
+@ball.bounce$if_true1
+D;JNE
+@ball.bounce$if_false1
+0;JMP
+(ball.bounce$if_true1)
+@20
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@ball.bounce$if_end1
+0;JMP
+(ball.bounce$if_false1)
+@5
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+(ball.bounce$if_end1)
+(ball.bounce$if_end0)
+@THIS
+D=M
+@14
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@RET_ADDRESS_EQ3
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ3)
+@SP
+AM=M-1
+D=M
+@ball.bounce$if_true2
+D;JNE
+@ball.bounce$if_false2
+0;JMP
+(ball.bounce$if_true2)
+@506
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@50
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+D=!M
+M=D+1
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL18
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL18)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL19
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL19)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL20
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL20)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@ball.bounce$if_end2
+0;JMP
+(ball.bounce$if_false2)
+@THIS
+D=M
+@14
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ4
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ4)
+@SP
+AM=M-1
+D=M
+@ball.bounce$if_true3
+D;JNE
+@ball.bounce$if_false3
+0;JMP
+(ball.bounce$if_true3)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@50
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL21
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL21)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL22
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL22)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL23
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL23)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@ball.bounce$if_end3
+0;JMP
+(ball.bounce$if_false3)
+@THIS
+D=M
+@14
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ5
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ5)
+@SP
+AM=M-1
+D=M
+@ball.bounce$if_true4
+D;JNE
+@ball.bounce$if_false4
+0;JMP
+(ball.bounce$if_true4)
+@250
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@25
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+D=!M
+M=D+1
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL24
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL24)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL25
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL25)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL26
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL26)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@ball.bounce$if_end4
+0;JMP
+(ball.bounce$if_false4)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@25
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL27
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL27)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL28
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL28)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL29
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL29)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(ball.bounce$if_end4)
+(ball.bounce$if_end3)
+(ball.bounce$if_end2)
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@R13
+M=D
+@ball.setdestination
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL30
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL30)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(bat.new)
+@5
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@memory.alloc
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL31
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL31)
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@bat.show
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL32
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL32)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(bat.dispose)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@memory.dealloc
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL33
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL33)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(bat.show)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@1
+D=A
+@R13
+M=D
+@screen.setcolor
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL34
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL34)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@bat.draw
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL35
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL35)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(bat.hide)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@1
+D=A
+@R13
+M=D
+@screen.setcolor
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL36
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL36)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@bat.draw
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL37
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL37)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(bat.draw)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@R13
+M=D
+@screen.drawrectangle
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL38
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL38)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(bat.setdirection)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(bat.getleft)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(bat.getright)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@54
+0;JMP
+(bat.setwidth)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@bat.hide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL39
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL39)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@bat.show
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL40
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL40)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(bat.move)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@RET_ADDRESS_EQ6
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ6)
+@SP
+AM=M-1
+D=M
+@bat.move$if_true0
+D;JNE
+@bat.move$if_false0
+0;JMP
+(bat.move$if_true0)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT10
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT10)
+@SP
+AM=M-1
+D=M
+@bat.move$if_true1
+D;JNE
+@bat.move$if_false1
+0;JMP
+(bat.move$if_true1)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+(bat.move$if_false1)
+@SP
+M=M+1
+A=M-1
+M=0
+@1
+D=A
+@R13
+M=D
+@screen.setcolor
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL41
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL41)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@R13
+M=D
+@screen.drawrectangle
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL42
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL42)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@1
+D=A
+@R13
+M=D
+@screen.setcolor
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL43
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL43)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@R13
+M=D
+@screen.drawrectangle
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL44
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL44)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@bat.move$if_end0
+0;JMP
+(bat.move$if_false0)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@511
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT2
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT2)
+@SP
+AM=M-1
+D=M
+@bat.move$if_true2
+D;JNE
+@bat.move$if_false2
+0;JMP
+(bat.move$if_true2)
+@511
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+(bat.move$if_false2)
+@SP
+M=M+1
+A=M-1
+M=0
+@1
+D=A
+@R13
+M=D
+@screen.setcolor
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL45
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL45)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@R13
+M=D
+@screen.drawrectangle
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL46
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL46)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@1
+D=A
+@R13
+M=D
+@screen.setcolor
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL47
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL47)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@R13
+M=D
+@screen.drawrectangle
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL48
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL48)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(bat.move$if_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(main.main)
+@SP
+AM=M+1
+A=A-1
+M=0
+@0
+D=A
+@R13
+M=D
+@ponggame.newinstance
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL49
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL49)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@0
+D=A
+@R13
+M=D
+@ponggame.getinstance
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL50
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL50)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ponggame.run
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL51
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL51)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ponggame.dispose
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL52
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL52)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(ponggame.new)
+@7
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@memory.alloc
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL53
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL53)
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@0
+D=A
+@R13
+M=D
+@screen.clearscreen
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL54
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL54)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@50
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@230
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@229
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@R13
+M=D
+@bat.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL55
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL55)
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+@253
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@222
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@511
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@229
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@R13
+M=D
+@ball.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL56
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL56)
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@400
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@3
+D=A
+@R13
+M=D
+@ball.setdestination
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL57
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL57)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@238
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@240
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@R13
+M=D
+@screen.drawrectangle
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL58
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL58)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@22
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@2
+D=A
+@R13
+M=D
+@output.movecursor
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL59
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL59)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@8
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@string.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL60
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL60)
+@83
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL61
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL61)
+@99
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL62
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL62)
+@111
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL63
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL63)
+@114
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL64
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL64)
+@101
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL65
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL65)
+@58
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL66
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL66)
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL67
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL67)
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL68
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL68)
+@1
+D=A
+@R13
+M=D
+@output.printstring
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL69
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL69)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(ponggame.dispose)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@bat.dispose
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL70
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL70)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ball.dispose
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL71
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL71)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@memory.dealloc
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL72
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL72)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(ponggame.newinstance)
+@0
+D=A
+@R13
+M=D
+@ponggame.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL73
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL73)
+@SP
+AM=M-1
+D=M
+@ponggame.0
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(ponggame.getinstance)
+@ponggame.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(ponggame.run)
+@SP
+AM=M+1
+A=A-1
+M=0
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+(ponggame.run$while_exp0)
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@ponggame.run$while_end0
+D;JNE
+(ponggame.run$while_exp1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ7
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ7)
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@ponggame.run$while_end1
+D;JNE
+@0
+D=A
+@R13
+M=D
+@keyboard.keypressed
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL74
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL74)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@bat.move
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL75
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL75)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ponggame.moveball
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL76
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL76)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@ponggame.run$while_exp1
+0;JMP
+(ponggame.run$while_end1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@130
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ8
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ8)
+@SP
+AM=M-1
+D=M
+@ponggame.run$if_true0
+D;JNE
+@ponggame.run$if_false0
+0;JMP
+(ponggame.run$if_true0)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@2
+D=A
+@R13
+M=D
+@bat.setdirection
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL77
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL77)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@ponggame.run$if_end0
+0;JMP
+(ponggame.run$if_false0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@132
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ9
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ9)
+@SP
+AM=M-1
+D=M
+@ponggame.run$if_true1
+D;JNE
+@ponggame.run$if_false1
+0;JMP
+(ponggame.run$if_true1)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@bat.setdirection
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL78
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL78)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@ponggame.run$if_end1
+0;JMP
+(ponggame.run$if_false1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@140
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ10
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ10)
+@SP
+AM=M-1
+D=M
+@ponggame.run$if_true2
+D;JNE
+@ponggame.run$if_false2
+0;JMP
+(ponggame.run$if_true2)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+M=D
+(ponggame.run$if_false2)
+(ponggame.run$if_end1)
+(ponggame.run$if_end0)
+(ponggame.run$while_exp2)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ11
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ11)
+@SP
+A=M-1
+M=!M
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@ponggame.run$while_end2
+D;JNE
+@0
+D=A
+@R13
+M=D
+@keyboard.keypressed
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL79
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL79)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@bat.move
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL80
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL80)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ponggame.moveball
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL81
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL81)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@ponggame.run$while_exp2
+0;JMP
+(ponggame.run$while_end2)
+@ponggame.run$while_exp0
+0;JMP
+(ponggame.run$while_end0)
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ponggame.run$if_true3
+D;JNE
+@ponggame.run$if_false3
+0;JMP
+(ponggame.run$if_true3)
+@10
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@output.movecursor
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL82
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL82)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@9
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@string.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL83
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL83)
+@71
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL84
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL84)
+@97
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL85
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL85)
+@109
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL86
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL86)
+@101
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL87
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL87)
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL88
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL88)
+@79
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL89
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL89)
+@118
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL90
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL90)
+@101
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL91
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL91)
+@114
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL92
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL92)
+@1
+D=A
+@R13
+M=D
+@output.printstring
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL93
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL93)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(ponggame.run$if_false3)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(ponggame.moveball)
+@5
+D=A
+(LOOP_ponggame.moveball)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_ponggame.moveball
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ball.move
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL94
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL94)
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT3
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT3)
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@5
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ12
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ12)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+AM=M-1
+D=M
+@ponggame.moveball$if_true0
+D;JNE
+@ponggame.moveball$if_false0
+0;JMP
+(ponggame.moveball$if_true0)
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@bat.getleft
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL95
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL95)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@bat.getright
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL96
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL96)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ball.getleft
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL97
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL97)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ball.getright
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL98
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL98)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ13
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ13)
+@SP
+AM=M-1
+D=M
+@ponggame.moveball$if_true1
+D;JNE
+@ponggame.moveball$if_false1
+0;JMP
+(ponggame.moveball$if_true1)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT4
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT4)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT11
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT11)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+M=D
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@ponggame.moveball$if_true2
+D;JNE
+@ponggame.moveball$if_false2
+0;JMP
+(ponggame.moveball$if_true2)
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@RET_ADDRESS_LT12
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT12)
+@SP
+AM=M-1
+D=M
+@ponggame.moveball$if_true3
+D;JNE
+@ponggame.moveball$if_false3
+0;JMP
+(ponggame.moveball$if_true3)
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+A=M-1
+D=!M
+M=D+1
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@ponggame.moveball$if_end3
+0;JMP
+(ponggame.moveball$if_false3)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@RET_ADDRESS_GT5
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT5)
+@SP
+AM=M-1
+D=M
+@ponggame.moveball$if_true4
+D;JNE
+@ponggame.moveball$if_false4
+0;JMP
+(ponggame.moveball$if_true4)
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(ponggame.moveball$if_false4)
+(ponggame.moveball$if_end3)
+@THIS
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@bat.setwidth
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL99
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL99)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@22
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@output.movecursor
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL100
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL100)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@output.printint
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL101
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL101)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(ponggame.moveball$if_false2)
+(ponggame.moveball$if_false1)
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@ball.bounce
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL102
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL102)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(ponggame.moveball$if_false0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(array.new)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT6
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT6)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@array.new$if_true0
+D;JNE
+@array.new$if_false0
+0;JMP
+(array.new$if_true0)
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL103
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL103)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(array.new$if_false0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@memory.alloc
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL104
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL104)
+@54
+0;JMP
+(array.dispose)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@memory.dealloc
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL105
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL105)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(keyboard.init)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(keyboard.keypressed)
+@24576
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@memory.peek
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL106
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL106)
+@54
+0;JMP
+(keyboard.readchar)
+@SP
+A=M
+M=0
+AD=A+1
+M=0
+@SP
+M=D+1
+@SP
+M=M+1
+A=M-1
+M=0
+@1
+D=A
+@R13
+M=D
+@output.printchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL107
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL107)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(keyboard.readchar$while_exp0)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ14
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ14)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT7
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT7)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@keyboard.readchar$while_end0
+D;JNE
+@0
+D=A
+@R13
+M=D
+@keyboard.keypressed
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL108
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL108)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT8
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT8)
+@SP
+AM=M-1
+D=M
+@keyboard.readchar$if_true0
+D;JNE
+@keyboard.readchar$if_false0
+0;JMP
+(keyboard.readchar$if_true0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+(keyboard.readchar$if_false0)
+@keyboard.readchar$while_exp0
+0;JMP
+(keyboard.readchar$while_end0)
+@0
+D=A
+@R13
+M=D
+@string.backspace
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL109
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL109)
+@1
+D=A
+@R13
+M=D
+@output.printchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL110
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL110)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@output.printchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL111
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL111)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(keyboard.readline)
+@5
+D=A
+(LOOP_keyboard.readline)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_keyboard.readline
+D;JGT
+@80
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@string.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL112
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL112)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@output.printstring
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL113
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL113)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@0
+D=A
+@R13
+M=D
+@string.newline
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL114
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL114)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@0
+D=A
+@R13
+M=D
+@string.backspace
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL115
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL115)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+(keyboard.readline$while_exp0)
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@keyboard.readline$while_end0
+D;JNE
+@0
+D=A
+@R13
+M=D
+@keyboard.readchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL116
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL116)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ15
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ15)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@keyboard.readline$if_true0
+D;JNE
+@keyboard.readline$if_false0
+0;JMP
+(keyboard.readline$if_true0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ16
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ16)
+@SP
+AM=M-1
+D=M
+@keyboard.readline$if_true1
+D;JNE
+@keyboard.readline$if_false1
+0;JMP
+(keyboard.readline$if_true1)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@string.eraselastchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL117
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL117)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@keyboard.readline$if_end1
+0;JMP
+(keyboard.readline$if_false1)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL118
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL118)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+(keyboard.readline$if_end1)
+(keyboard.readline$if_false0)
+@keyboard.readline$while_exp0
+0;JMP
+(keyboard.readline$while_end0)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(keyboard.readint)
+@SP
+A=M
+M=0
+AD=A+1
+M=0
+@SP
+M=D+1
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@keyboard.readline
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL119
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL119)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@string.intvalue
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL120
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL120)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@string.dispose
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL121
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL121)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(math.init)
+@SP
+AM=M+1
+A=A-1
+M=0
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@array.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL122
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL122)
+@SP
+AM=M-1
+D=M
+@math.1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@array.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL123
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL123)
+@SP
+AM=M-1
+D=M
+@math.0
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@math.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+(math.init$while_exp0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT13
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT13)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@math.init$while_end0
+D;JNE
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@math.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@math.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@math.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@math.init$while_exp0
+0;JMP
+(math.init$while_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(math.abs)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT14
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT14)
+@SP
+AM=M-1
+D=M
+@math.abs$if_true0
+D;JNE
+@math.abs$if_false0
+0;JMP
+(math.abs$if_true0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+D=!M
+M=D+1
+@SP
+AM=M-1
+D=M
+@ARG
+A=M
+M=D
+(math.abs$if_false0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(math.multiply)
+@5
+D=A
+(LOOP_math.multiply)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_math.multiply
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT15
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT15)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT9
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT9)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT10
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT10)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT16
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT16)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@math.abs
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL124
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL124)
+@SP
+AM=M-1
+D=M
+@ARG
+A=M
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@math.abs
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL125
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL125)
+@SP
+AM=M-1
+D=M
+@ARG
+A=M+1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT17
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT17)
+@SP
+AM=M-1
+D=M
+@math.multiply$if_true0
+D;JNE
+@math.multiply$if_false0
+0;JMP
+(math.multiply$if_true0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M+1
+M=D
+(math.multiply$if_false0)
+(math.multiply$while_exp0)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT18
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT18)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@math.multiply$while_end0
+D;JNE
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@math.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT11
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT11)
+@SP
+AM=M-1
+D=M
+@math.multiply$if_true1
+D;JNE
+@math.multiply$if_false1
+0;JMP
+(math.multiply$if_true1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@math.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+(math.multiply$if_false1)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@ARG
+A=M
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@math.multiply$while_exp0
+0;JMP
+(math.multiply$while_end0)
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@math.multiply$if_true2
+D;JNE
+@math.multiply$if_false2
+0;JMP
+(math.multiply$if_true2)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+D=!M
+M=D+1
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(math.multiply$if_false2)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(math.divide)
+@4
+D=A
+(LOOP_math.divide)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_math.divide
+D;JGT
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ17
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ17)
+@SP
+AM=M-1
+D=M
+@math.divide$if_true0
+D;JNE
+@math.divide$if_false0
+0;JMP
+(math.divide$if_true0)
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL126
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL126)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(math.divide$if_false0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT19
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT19)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT12
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT12)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT13
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT13)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT20
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT20)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@math.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@math.abs
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL127
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL127)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@math.abs
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL128
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL128)
+@SP
+AM=M-1
+D=M
+@ARG
+A=M
+M=D
+(math.divide$while_exp0)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@math.divide$while_end0
+D;JNE
+@32767
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@math.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@math.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT21
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT21)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@math.divide$if_true1
+D;JNE
+@math.divide$if_false1
+0;JMP
+(math.divide$if_true1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@math.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@math.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@math.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@math.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT14
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT14)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@math.divide$if_true2
+D;JNE
+@math.divide$if_false2
+0;JMP
+(math.divide$if_true2)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(math.divide$if_false2)
+(math.divide$if_false1)
+@math.divide$while_exp0
+0;JMP
+(math.divide$while_end0)
+(math.divide$while_exp1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+A=M-1
+D=!M
+M=D+1
+@RET_ADDRESS_GT15
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT15)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@math.divide$while_end1
+D;JNE
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@math.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT16
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT16)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@math.divide$if_true3
+D;JNE
+@math.divide$if_false3
+0;JMP
+(math.divide$if_true3)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@math.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@math.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M
+M=D
+(math.divide$if_false3)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@math.divide$while_exp1
+0;JMP
+(math.divide$while_end1)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@math.divide$if_true4
+D;JNE
+@math.divide$if_false4
+0;JMP
+(math.divide$if_true4)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+D=!M
+M=D+1
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+(math.divide$if_false4)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(math.sqrt)
+@4
+D=A
+(LOOP_math.sqrt)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_math.sqrt
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT22
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT22)
+@SP
+AM=M-1
+D=M
+@math.sqrt$if_true0
+D;JNE
+@math.sqrt$if_false0
+0;JMP
+(math.sqrt$if_true0)
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL129
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL129)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(math.sqrt$if_false0)
+@7
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(math.sqrt$while_exp0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+A=M-1
+D=!M
+M=D+1
+@RET_ADDRESS_GT17
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT17)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@math.sqrt$while_end0
+D;JNE
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@math.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL130
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL130)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT18
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT18)
+@SP
+A=M-1
+M=!M
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT23
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT23)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+AM=M-1
+D=M
+@math.sqrt$if_true1
+D;JNE
+@math.sqrt$if_false1
+0;JMP
+(math.sqrt$if_true1)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+(math.sqrt$if_false1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@math.sqrt$while_exp0
+0;JMP
+(math.sqrt$while_end0)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(math.max)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT19
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT19)
+@SP
+AM=M-1
+D=M
+@math.max$if_true0
+D;JNE
+@math.max$if_false0
+0;JMP
+(math.max$if_true0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M+1
+M=D
+(math.max$if_false0)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(math.min)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT24
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT24)
+@SP
+AM=M-1
+D=M
+@math.min$if_true0
+D;JNE
+@math.min$if_false0
+0;JMP
+(math.min$if_true0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M+1
+M=D
+(math.min$if_false0)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(memory.init)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@memory.0
+M=D
+@2048
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@memory.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@14334
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@2049
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@memory.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2050
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(memory.peek)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@memory.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(memory.poke)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@memory.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(memory.alloc)
+@SP
+AM=M+1
+A=A-1
+M=0
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@RET_ADDRESS_LT25
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT25)
+@SP
+AM=M-1
+D=M
+@memory.alloc$if_true0
+D;JNE
+@memory.alloc$if_false0
+0;JMP
+(memory.alloc$if_true0)
+@5
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL131
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL131)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(memory.alloc$if_false0)
+@2048
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(memory.alloc$while_exp0)
+@SP
+M=M+1
+A=M-1
+M=0
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT26
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT26)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@memory.alloc$while_end0
+D;JNE
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@memory.alloc$while_exp0
+0;JMP
+(memory.alloc$while_end0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@16379
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT20
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT20)
+@SP
+AM=M-1
+D=M
+@memory.alloc$if_true1
+D;JNE
+@memory.alloc$if_false1
+0;JMP
+(memory.alloc$if_true1)
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL132
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL132)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(memory.alloc$if_false1)
+@SP
+M=M+1
+A=M-1
+M=0
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@RET_ADDRESS_GT21
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT21)
+@SP
+AM=M-1
+D=M
+@memory.alloc$if_true2
+D;JNE
+@memory.alloc$if_false2
+0;JMP
+(memory.alloc$if_true2)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+M=M+1
+A=M-1
+M=0
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@RET_ADDRESS_EQ18
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ18)
+@SP
+AM=M-1
+D=M
+@memory.alloc$if_true3
+D;JNE
+@memory.alloc$if_false3
+0;JMP
+(memory.alloc$if_true3)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@memory.alloc$if_end3
+0;JMP
+(memory.alloc$if_false3)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+(memory.alloc$if_end3)
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+(memory.alloc$if_false2)
+@SP
+M=M+1
+A=M-1
+M=0
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@54
+0;JMP
+(memory.dealloc)
+@SP
+A=M
+M=0
+AD=A+1
+M=0
+@SP
+M=D+1
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ19
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ19)
+@SP
+AM=M-1
+D=M
+@memory.dealloc$if_true0
+D;JNE
+@memory.dealloc$if_false0
+0;JMP
+(memory.dealloc$if_true0)
+@SP
+M=M+1
+A=M-1
+M=0
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@memory.dealloc$if_end0
+0;JMP
+(memory.dealloc$if_false0)
+@SP
+M=M+1
+A=M-1
+M=0
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+M=M+1
+A=M-1
+M=0
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@RET_ADDRESS_EQ20
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ20)
+@SP
+AM=M-1
+D=M
+@memory.dealloc$if_true1
+D;JNE
+@memory.dealloc$if_false1
+0;JMP
+(memory.dealloc$if_true1)
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@memory.dealloc$if_end1
+0;JMP
+(memory.dealloc$if_false1)
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+(memory.dealloc$if_end1)
+(memory.dealloc$if_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(output.init)
+@16384
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@output.4
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@output.2
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@output.1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@output.0
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@string.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL133
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL133)
+@SP
+AM=M-1
+D=M
+@output.3
+M=D
+@0
+D=A
+@R13
+M=D
+@output.initmap
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL134
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL134)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@0
+D=A
+@R13
+M=D
+@output.createshiftedmap
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL135
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL135)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(output.initmap)
+@127
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@array.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL136
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL136)
+@SP
+AM=M-1
+D=M
+@output.5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL137
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL137)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL138
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL138)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@33
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL139
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL139)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@34
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@20
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL140
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL140)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@35
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@18
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL141
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL141)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@36
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL142
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL142)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@37
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@35
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@49
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL143
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL143)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@38
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL144
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL144)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@39
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL145
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL145)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@40
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL146
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL146)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@41
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL147
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL147)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@42
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL148
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL148)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@43
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL149
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL149)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@44
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL150
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL150)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@45
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL151
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL151)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@46
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL152
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL152)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@47
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL153
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL153)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL154
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL154)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@49
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@14
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL155
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL155)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@50
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL156
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL156)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL157
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL157)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@52
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@26
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@25
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@60
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL158
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL158)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@53
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL159
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL159)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL160
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL160)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@55
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@49
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL161
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL161)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@56
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL162
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL162)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@57
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@62
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@14
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL163
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL163)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@58
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL164
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL164)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@59
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL165
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL165)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@60
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL166
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL166)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@61
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL167
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL167)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@62
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL168
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL168)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@64
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL169
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL169)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL170
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL170)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@65
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL171
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL171)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@66
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL172
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL172)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@67
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL173
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL173)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@68
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL174
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL174)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@69
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL175
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL175)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@70
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL176
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL176)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@71
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@44
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL177
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL177)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@72
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL178
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL178)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@73
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL179
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL179)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@74
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@60
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@14
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL180
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL180)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@75
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL181
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL181)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@76
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL182
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL182)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@77
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@33
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL183
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL183)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@78
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@55
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@55
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL184
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL184)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@79
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL185
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL185)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@80
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL186
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL186)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@81
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL187
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL187)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@82
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL188
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL188)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@83
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL189
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL189)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@84
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@45
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL190
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL190)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@85
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL191
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL191)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@86
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL192
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL192)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@87
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL193
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL193)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@88
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL194
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL194)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@89
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL195
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL195)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@90
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@49
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL196
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL196)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@91
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL197
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL197)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@92
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=1
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL198
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL198)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@93
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL199
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL199)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@94
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@8
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL200
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL200)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@95
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL201
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL201)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@96
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL202
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL202)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@97
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@14
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL203
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL203)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@98
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL204
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL204)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@99
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL205
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL205)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@100
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@60
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL206
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL206)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@101
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL207
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL207)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@102
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@38
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL208
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL208)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@103
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@62
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL209
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL209)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@104
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@55
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL210
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL210)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@105
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@14
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL211
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL211)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@106
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@56
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL212
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL212)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@107
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL213
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL213)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@108
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@14
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL214
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL214)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@109
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@29
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@43
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@43
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@43
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@43
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL215
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL215)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@110
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@29
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL216
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL216)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@111
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL217
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL217)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@112
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL218
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL218)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@113
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@62
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL219
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL219)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@114
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@29
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@55
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL220
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL220)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@115
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL221
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL221)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@116
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL222
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL222)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@117
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL223
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL223)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@118
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL224
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL224)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@119
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL225
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL225)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@120
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL226
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL226)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@121
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@62
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL227
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL227)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@122
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL228
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL228)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@123
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@56
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@56
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL229
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL229)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@124
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL230
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL230)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@125
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@56
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL231
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL231)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@126
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@38
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@45
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@25
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL232
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL232)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(output.create)
+@SP
+AM=M+1
+A=A-1
+M=0
+@11
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@array.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL233
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL233)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@output.5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+D=M
+@5
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@5
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@7
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+D=M
+@8
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@8
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+D=M
+@9
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@9
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+D=M
+@10
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@10
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+D=M
+@11
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(output.createshiftedmap)
+@4
+D=A
+(LOOP_output.createshiftedmap)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_output.createshiftedmap
+D;JGT
+@127
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@array.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL234
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL234)
+@SP
+AM=M-1
+D=M
+@output.6
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+(output.createshiftedmap$while_exp0)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@127
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT27
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT27)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@output.createshiftedmap$while_end0
+D;JNE
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@output.5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@11
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@array.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL235
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL235)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@output.6
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+(output.createshiftedmap$while_exp1)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT28
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT28)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@output.createshiftedmap$while_end1
+D;JNE
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@256
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL236
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL236)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@output.createshiftedmap$while_exp1
+0;JMP
+(output.createshiftedmap$while_end1)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ21
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ21)
+@SP
+AM=M-1
+D=M
+@output.createshiftedmap$if_true0
+D;JNE
+@output.createshiftedmap$if_false0
+0;JMP
+(output.createshiftedmap$if_true0)
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@output.createshiftedmap$if_end0
+0;JMP
+(output.createshiftedmap$if_false0)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+(output.createshiftedmap$if_end0)
+@output.createshiftedmap$while_exp0
+0;JMP
+(output.createshiftedmap$while_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(output.getmap)
+@SP
+AM=M+1
+A=A-1
+M=0
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT29
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT29)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@126
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT22
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT22)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@output.getmap$if_true0
+D;JNE
+@output.getmap$if_false0
+0;JMP
+(output.getmap$if_true0)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@ARG
+A=M
+M=D
+(output.getmap$if_false0)
+@output.2
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@output.getmap$if_true1
+D;JNE
+@output.getmap$if_false1
+0;JMP
+(output.getmap$if_true1)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@output.5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@output.getmap$if_end1
+0;JMP
+(output.getmap$if_false1)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@output.6
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(output.getmap$if_end1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(output.drawchar)
+@4
+D=A
+(LOOP_output.drawchar)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_output.drawchar
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@output.getmap
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL237
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL237)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@output.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(output.drawchar$while_exp0)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT30
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT30)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@output.drawchar$while_end0
+D;JNE
+@output.2
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@output.drawchar$if_true0
+D;JNE
+@output.drawchar$if_false0
+0;JMP
+(output.drawchar$if_true0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@output.4
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@256
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+D=!M
+M=D+1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@output.drawchar$if_end0
+0;JMP
+(output.drawchar$if_false0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@output.4
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@255
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+(output.drawchar$if_end0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@output.4
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@output.drawchar$while_exp0
+0;JMP
+(output.drawchar$while_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(output.movecursor)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT31
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT31)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@22
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT23
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT23)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT32
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT32)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT24
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT24)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@output.movecursor$if_true0
+D;JNE
+@output.movecursor$if_false0
+0;JMP
+(output.movecursor$if_true0)
+@20
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL238
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL238)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(output.movecursor$if_false0)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL239
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL239)
+@SP
+AM=M-1
+D=M
+@output.0
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@352
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL240
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL240)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@output.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@output.1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@output.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL241
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL241)
+@RET_ADDRESS_EQ22
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ22)
+@SP
+AM=M-1
+D=M
+@output.2
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@output.drawchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL242
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL242)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(output.printchar)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@0
+D=A
+@R13
+M=D
+@string.newline
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL243
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL243)
+@RET_ADDRESS_EQ23
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ23)
+@SP
+AM=M-1
+D=M
+@output.printchar$if_true0
+D;JNE
+@output.printchar$if_false0
+0;JMP
+(output.printchar$if_true0)
+@0
+D=A
+@R13
+M=D
+@output.println
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL244
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL244)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@output.printchar$if_end0
+0;JMP
+(output.printchar$if_false0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@0
+D=A
+@R13
+M=D
+@string.backspace
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL245
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL245)
+@RET_ADDRESS_EQ24
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ24)
+@SP
+AM=M-1
+D=M
+@output.printchar$if_true1
+D;JNE
+@output.printchar$if_false1
+0;JMP
+(output.printchar$if_true1)
+@0
+D=A
+@R13
+M=D
+@output.backspace
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL246
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL246)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@output.printchar$if_end1
+0;JMP
+(output.printchar$if_false1)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@output.drawchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL247
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL247)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@output.2
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@output.printchar$if_true2
+D;JNE
+@output.printchar$if_false2
+0;JMP
+(output.printchar$if_true2)
+@output.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@output.0
+M=D
+@output.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@output.1
+M=D
+(output.printchar$if_false2)
+@output.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ25
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ25)
+@SP
+AM=M-1
+D=M
+@output.printchar$if_true3
+D;JNE
+@output.printchar$if_false3
+0;JMP
+(output.printchar$if_true3)
+@0
+D=A
+@R13
+M=D
+@output.println
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL248
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL248)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@output.printchar$if_end3
+0;JMP
+(output.printchar$if_false3)
+@output.2
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@output.2
+M=D
+(output.printchar$if_end3)
+(output.printchar$if_end1)
+(output.printchar$if_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(output.printstring)
+@SP
+A=M
+M=0
+AD=A+1
+M=0
+@SP
+M=D+1
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@string.length
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL249
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL249)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+(output.printstring$while_exp0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT33
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT33)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@output.printstring$while_end0
+D;JNE
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.charat
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL250
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL250)
+@1
+D=A
+@R13
+M=D
+@output.printchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL251
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL251)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@output.printstring$while_exp0
+0;JMP
+(output.printstring$while_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(output.printint)
+@output.3
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.setint
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL252
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL252)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@output.3
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@output.printstring
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL253
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL253)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(output.println)
+@output.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@352
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@output.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@output.1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@output.0
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@output.2
+M=D
+@output.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@8128
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ26
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ26)
+@SP
+AM=M-1
+D=M
+@output.println$if_true0
+D;JNE
+@output.println$if_false0
+0;JMP
+(output.println$if_true0)
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@output.1
+M=D
+(output.println$if_false0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(output.backspace)
+@output.2
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@output.backspace$if_true0
+D;JNE
+@output.backspace$if_false0
+0;JMP
+(output.backspace$if_true0)
+@output.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT25
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT25)
+@SP
+AM=M-1
+D=M
+@output.backspace$if_true1
+D;JNE
+@output.backspace$if_false1
+0;JMP
+(output.backspace$if_true1)
+@output.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@output.0
+M=D
+@output.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@output.1
+M=D
+@output.backspace$if_end1
+0;JMP
+(output.backspace$if_false1)
+@31
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@output.0
+M=D
+@output.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ27
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ27)
+@SP
+AM=M-1
+D=M
+@output.backspace$if_true2
+D;JNE
+@output.backspace$if_false2
+0;JMP
+(output.backspace$if_true2)
+@8128
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@output.1
+M=D
+(output.backspace$if_false2)
+@output.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@321
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@output.1
+M=D
+(output.backspace$if_end1)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@output.2
+M=D
+@output.backspace$if_end0
+0;JMP
+(output.backspace$if_false0)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@output.2
+M=D
+(output.backspace$if_end0)
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@output.drawchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL254
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL254)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(screen.init)
+@SP
+AM=M+1
+A=A-1
+M=0
+@16384
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@screen.1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@screen.2
+M=D
+@17
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@array.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL255
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL255)
+@SP
+AM=M-1
+D=M
+@screen.0
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@screen.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+(screen.init$while_exp0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT34
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT34)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@screen.init$while_end0
+D;JNE
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@screen.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@screen.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@screen.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@screen.init$while_exp0
+0;JMP
+(screen.init$while_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(screen.clearscreen)
+@SP
+AM=M+1
+A=A-1
+M=0
+(screen.clearscreen$while_exp0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@8192
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT35
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT35)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@screen.clearscreen$while_end0
+D;JNE
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@screen.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@screen.clearscreen$while_exp0
+0;JMP
+(screen.clearscreen$while_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(screen.updatelocation)
+@screen.2
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@screen.updatelocation$if_true0
+D;JNE
+@screen.updatelocation$if_false0
+0;JMP
+(screen.updatelocation$if_true0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@screen.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@screen.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@screen.updatelocation$if_end0
+0;JMP
+(screen.updatelocation$if_false0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@screen.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@screen.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+(screen.updatelocation$if_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(screen.setcolor)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@screen.2
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(screen.drawpixel)
+@3
+D=A
+(LOOP_screen.drawpixel)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_screen.drawpixel
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT36
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT36)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT26
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT26)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT37
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT37)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@255
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT27
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT27)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@screen.drawpixel$if_true0
+D;JNE
+@screen.drawpixel$if_false0
+0;JMP
+(screen.drawpixel$if_true0)
+@7
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL256
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL256)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(screen.drawpixel$if_false0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL257
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL257)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL258
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL258)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL259
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL259)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@screen.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@screen.updatelocation
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL260
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL260)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(screen.drawconditional)
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@screen.drawconditional$if_true0
+D;JNE
+@screen.drawconditional$if_false0
+0;JMP
+(screen.drawconditional$if_true0)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@screen.drawpixel
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL261
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL261)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@screen.drawconditional$if_end0
+0;JMP
+(screen.drawconditional$if_false0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@screen.drawpixel
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL262
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL262)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(screen.drawconditional$if_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(screen.drawline)
+@11
+D=A
+(LOOP_screen.drawline)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_screen.drawline
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT38
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT38)
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT28
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT28)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT39
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT39)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@255
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT29
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT29)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@screen.drawline$if_true0
+D;JNE
+@screen.drawline$if_false0
+0;JMP
+(screen.drawline$if_true0)
+@8
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL263
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL263)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(screen.drawline$if_false0)
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@1
+D=A
+@R13
+M=D
+@math.abs
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL264
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL264)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@1
+D=A
+@R13
+M=D
+@math.abs
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL265
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL265)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT40
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT40)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@LCL
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT41
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT41)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@LCL
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT42
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT42)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@screen.drawline$if_true1
+D;JNE
+@screen.drawline$if_false1
+0;JMP
+(screen.drawline$if_true1)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M+1
+A=A+1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M+1
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M+1
+A=A+1
+A=A+1
+M=D
+(screen.drawline$if_false1)
+@LCL
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@screen.drawline$if_true2
+D;JNE
+@screen.drawline$if_false2
+0;JMP
+(screen.drawline$if_true2)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@8
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT30
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT30)
+@LCL
+D=M
+@7
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@screen.drawline$if_end2
+0;JMP
+(screen.drawline$if_false2)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@8
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT31
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT31)
+@LCL
+D=M
+@7
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+(screen.drawline$if_end2)
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL266
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL266)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL267
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL267)
+@LCL
+D=M
+@9
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL268
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL268)
+@LCL
+D=M
+@10
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@R13
+M=D
+@screen.drawconditional
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL269
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL269)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(screen.drawline$while_exp0)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@8
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT43
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT43)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@screen.drawline$while_end0
+D;JNE
+@LCL
+D=M
+@5
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT44
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT44)
+@SP
+AM=M-1
+D=M
+@screen.drawline$if_true3
+D;JNE
+@screen.drawline$if_false3
+0;JMP
+(screen.drawline$if_true3)
+@LCL
+D=M
+@5
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@9
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@screen.drawline$if_end3
+0;JMP
+(screen.drawline$if_false3)
+@LCL
+D=M
+@5
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@10
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@LCL
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@screen.drawline$if_true4
+D;JNE
+@screen.drawline$if_false4
+0;JMP
+(screen.drawline$if_true4)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@screen.drawline$if_end4
+0;JMP
+(screen.drawline$if_false4)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(screen.drawline$if_end4)
+(screen.drawline$if_end3)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@R13
+M=D
+@screen.drawconditional
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL270
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL270)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@screen.drawline$while_exp0
+0;JMP
+(screen.drawline$while_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(screen.drawrectangle)
+@9
+D=A
+(LOOP_screen.drawrectangle)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_screen.drawrectangle
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT32
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT32)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT33
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT33)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT45
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT45)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT34
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT34)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT46
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT46)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@255
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT35
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT35)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@screen.drawrectangle$if_true0
+D;JNE
+@screen.drawrectangle$if_false0
+0;JMP
+(screen.drawrectangle$if_true0)
+@9
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL271
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL271)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(screen.drawrectangle$if_false0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL272
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL272)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL273
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL273)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@LCL
+D=M
+@7
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL274
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL274)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL275
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL275)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@LCL
+D=M
+@8
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@LCL
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@screen.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@LCL
+D=M
+@8
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@screen.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL276
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL276)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+(screen.drawrectangle$while_exp0)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT36
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT36)
+@SP
+A=M-1
+M=!M
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@screen.drawrectangle$while_end0
+D;JNE
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ28
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ28)
+@SP
+AM=M-1
+D=M
+@screen.drawrectangle$if_true1
+D;JNE
+@screen.drawrectangle$if_false1
+0;JMP
+(screen.drawrectangle$if_true1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@5
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@2
+D=A
+@R13
+M=D
+@screen.updatelocation
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL277
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL277)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@screen.drawrectangle$if_end1
+0;JMP
+(screen.drawrectangle$if_false1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@screen.updatelocation
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL278
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL278)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(screen.drawrectangle$while_exp1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT47
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT47)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@screen.drawrectangle$while_end1
+D;JNE
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+A=M-1
+D=!M
+M=D+1
+@2
+D=A
+@R13
+M=D
+@screen.updatelocation
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL279
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL279)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@screen.drawrectangle$while_exp1
+0;JMP
+(screen.drawrectangle$while_end1)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@5
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@screen.updatelocation
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL280
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL280)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(screen.drawrectangle$if_end1)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@ARG
+A=M+1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@screen.drawrectangle$while_exp0
+0;JMP
+(screen.drawrectangle$while_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(screen.drawhorizontal)
+@11
+D=A
+(LOOP_screen.drawhorizontal)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_screen.drawhorizontal
+D;JGT
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.min
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL281
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL281)
+@LCL
+D=M
+@7
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.max
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL282
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL282)
+@LCL
+D=M
+@8
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+A=M-1
+D=!M
+M=D+1
+@RET_ADDRESS_GT37
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT37)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@256
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT48
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT48)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@LCL
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@512
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT49
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT49)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@LCL
+D=M
+@8
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+A=M-1
+D=!M
+M=D+1
+@RET_ADDRESS_GT38
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT38)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+AM=M-1
+D=M
+@screen.drawhorizontal$if_true0
+D;JNE
+@screen.drawhorizontal$if_false0
+0;JMP
+(screen.drawhorizontal$if_true0)
+@LCL
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@2
+D=A
+@R13
+M=D
+@math.max
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL283
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL283)
+@LCL
+D=M
+@7
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@LCL
+D=M
+@8
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.min
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL284
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL284)
+@LCL
+D=M
+@8
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@LCL
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL285
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL285)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@LCL
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL286
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL286)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@LCL
+D=M
+@9
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@LCL
+D=M
+@8
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL287
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL287)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@LCL
+D=M
+@8
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL288
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL288)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@LCL
+D=M
+@10
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@LCL
+D=M
+@9
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@screen.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@LCL
+D=M
+@10
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@screen.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL289
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL289)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@LCL
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ29
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ29)
+@SP
+AM=M-1
+D=M
+@screen.drawhorizontal$if_true1
+D;JNE
+@screen.drawhorizontal$if_false1
+0;JMP
+(screen.drawhorizontal$if_true1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@5
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@2
+D=A
+@R13
+M=D
+@screen.updatelocation
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL290
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL290)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@screen.drawhorizontal$if_end1
+0;JMP
+(screen.drawhorizontal$if_false1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@5
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@screen.updatelocation
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL291
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL291)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(screen.drawhorizontal$while_exp0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT50
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT50)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@screen.drawhorizontal$while_end0
+D;JNE
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+A=M-1
+D=!M
+M=D+1
+@2
+D=A
+@R13
+M=D
+@screen.updatelocation
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL292
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL292)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@screen.drawhorizontal$while_exp0
+0;JMP
+(screen.drawhorizontal$while_end0)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@screen.updatelocation
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL293
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL293)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(screen.drawhorizontal$if_end1)
+(screen.drawhorizontal$if_false0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(screen.drawsymetric)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@3
+D=A
+@R13
+M=D
+@screen.drawhorizontal
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL294
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL294)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@3
+D=A
+@R13
+M=D
+@screen.drawhorizontal
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL295
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL295)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+D=A
+@R13
+M=D
+@screen.drawhorizontal
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL296
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL296)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+D=A
+@R13
+M=D
+@screen.drawhorizontal
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL297
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL297)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(screen.drawcircle)
+@3
+D=A
+(LOOP_screen.drawcircle)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_screen.drawcircle
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT51
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT51)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT39
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT39)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT52
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT52)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@255
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT40
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT40)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@screen.drawcircle$if_true0
+D;JNE
+@screen.drawcircle$if_false0
+0;JMP
+(screen.drawcircle$if_true0)
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL298
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL298)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(screen.drawcircle$if_false0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT53
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT53)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@511
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT41
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT41)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT54
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT54)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@255
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT42
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT42)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@screen.drawcircle$if_true1
+D;JNE
+@screen.drawcircle$if_false1
+0;JMP
+(screen.drawcircle$if_true1)
+@13
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL299
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL299)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(screen.drawcircle$if_false1)
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@R13
+M=D
+@screen.drawsymetric
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL300
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL300)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(screen.drawcircle$while_exp0)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT43
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT43)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@screen.drawcircle$while_end0
+D;JNE
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT55
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT55)
+@SP
+AM=M-1
+D=M
+@screen.drawcircle$if_true2
+D;JNE
+@screen.drawcircle$if_false2
+0;JMP
+(screen.drawcircle$if_true2)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL301
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL301)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@screen.drawcircle$if_end2
+0;JMP
+(screen.drawcircle$if_false2)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL302
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL302)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@5
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+(screen.drawcircle$if_end2)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@R13
+M=D
+@screen.drawsymetric
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL303
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL303)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@screen.drawcircle$while_exp0
+0;JMP
+(screen.drawcircle$while_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(string.new)
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@memory.alloc
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL304
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL304)
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT56
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT56)
+@SP
+AM=M-1
+D=M
+@string.new$if_true0
+D;JNE
+@string.new$if_false0
+0;JMP
+(string.new$if_true0)
+@14
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL305
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL305)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(string.new$if_false0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT44
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT44)
+@SP
+AM=M-1
+D=M
+@string.new$if_true1
+D;JNE
+@string.new$if_false1
+0;JMP
+(string.new$if_true1)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@array.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL306
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL306)
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+M=D
+(string.new$if_false1)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(string.dispose)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT45
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT45)
+@SP
+AM=M-1
+D=M
+@string.dispose$if_true0
+D;JNE
+@string.dispose$if_false0
+0;JMP
+(string.dispose$if_true0)
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@array.dispose
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL307
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL307)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(string.dispose$if_false0)
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@memory.dealloc
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL308
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL308)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(string.length)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(string.charat)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT57
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT57)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT46
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT46)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ30
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ30)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@string.charat$if_true0
+D;JNE
+@string.charat$if_false0
+0;JMP
+(string.charat$if_true0)
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL309
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL309)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(string.charat$if_false0)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(string.setcharat)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT58
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT58)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT47
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT47)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ31
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ31)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@string.setcharat$if_true0
+D;JNE
+@string.setcharat$if_false0
+0;JMP
+(string.setcharat$if_true0)
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL310
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL310)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(string.setcharat$if_false0)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(string.appendchar)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ32
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ32)
+@SP
+AM=M-1
+D=M
+@string.appendchar$if_true0
+D;JNE
+@string.appendchar$if_false0
+0;JMP
+(string.appendchar$if_true0)
+@17
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL311
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL311)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(string.appendchar$if_false0)
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(string.eraselastchar)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ33
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ33)
+@SP
+AM=M-1
+D=M
+@string.eraselastchar$if_true0
+D;JNE
+@string.eraselastchar$if_false0
+0;JMP
+(string.eraselastchar$if_true0)
+@18
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL312
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL312)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(string.eraselastchar$if_false0)
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(string.intvalue)
+@5
+D=A
+(LOOP_string.intvalue)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_string.intvalue
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ34
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ34)
+@SP
+AM=M-1
+D=M
+@string.intvalue$if_true0
+D;JNE
+@string.intvalue$if_false0
+0;JMP
+(string.intvalue$if_true0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(string.intvalue$if_false0)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@45
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ35
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ35)
+@SP
+AM=M-1
+D=M
+@string.intvalue$if_true1
+D;JNE
+@string.intvalue$if_false1
+0;JMP
+(string.intvalue$if_true1)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(string.intvalue$if_false1)
+(string.intvalue$while_exp0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT59
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT59)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@string.intvalue$while_end0
+D;JNE
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT60
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT60)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@9
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT48
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT48)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@string.intvalue$if_true2
+D;JNE
+@string.intvalue$if_false2
+0;JMP
+(string.intvalue$if_true2)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL313
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL313)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(string.intvalue$if_false2)
+@string.intvalue$while_exp0
+0;JMP
+(string.intvalue$while_end0)
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@string.intvalue$if_true3
+D;JNE
+@string.intvalue$if_false3
+0;JMP
+(string.intvalue$if_true3)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+D=!M
+M=D+1
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+(string.intvalue$if_false3)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(string.setint)
+@4
+D=A
+(LOOP_string.setint)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_string.setint
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ36
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ36)
+@SP
+AM=M-1
+D=M
+@string.setint$if_true0
+D;JNE
+@string.setint$if_false0
+0;JMP
+(string.setint$if_true0)
+@19
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL314
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL314)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(string.setint$if_false0)
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@array.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL315
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL315)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT61
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT61)
+@SP
+AM=M-1
+D=M
+@string.setint$if_true1
+D;JNE
+@string.setint$if_false1
+0;JMP
+(string.setint$if_true1)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+D=!M
+M=D+1
+@SP
+AM=M-1
+D=M
+@ARG
+A=M+1
+M=D
+(string.setint$if_false1)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+(string.setint$while_exp0)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT49
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT49)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@string.setint$while_end0
+D;JNE
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL316
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL316)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL317
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL317)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M+1
+M=D
+@string.setint$while_exp0
+0;JMP
+(string.setint$while_end0)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@string.setint$if_true2
+D;JNE
+@string.setint$if_false2
+0;JMP
+(string.setint$if_true2)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@45
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(string.setint$if_false2)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT62
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT62)
+@SP
+AM=M-1
+D=M
+@string.setint$if_true3
+D;JNE
+@string.setint$if_false3
+0;JMP
+(string.setint$if_true3)
+@19
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL318
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL318)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(string.setint$if_false3)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ37
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ37)
+@SP
+AM=M-1
+D=M
+@string.setint$if_true4
+D;JNE
+@string.setint$if_false4
+0;JMP
+(string.setint$if_true4)
+@SP
+M=M+1
+A=M-1
+M=0
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+M=D
+@string.setint$if_end4
+0;JMP
+(string.setint$if_false4)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+M=D
+(string.setint$while_exp1)
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT63
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT63)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@string.setint$while_end1
+D;JNE
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+M=D
+@string.setint$while_exp1
+0;JMP
+(string.setint$while_end1)
+(string.setint$if_end4)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@array.dispose
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL319
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL319)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(string.newline)
+@128
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(string.backspace)
+@129
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(string.doublequote)
+@34
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(sys.init)
+@0
+D=A
+@R13
+M=D
+@memory.init
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL320
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL320)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@0
+D=A
+@R13
+M=D
+@math.init
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL321
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL321)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@0
+D=A
+@R13
+M=D
+@screen.init
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL322
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL322)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@0
+D=A
+@R13
+M=D
+@output.init
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL323
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL323)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@0
+D=A
+@R13
+M=D
+@keyboard.init
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL324
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL324)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@0
+D=A
+@R13
+M=D
+@main.main
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL325
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL325)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@0
+D=A
+@R13
+M=D
+@sys.halt
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL326
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL326)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(sys.halt)
+(sys.halt$while_exp0)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@sys.halt$while_end0
+D;JNE
+@sys.halt$while_exp0
+0;JMP
+(sys.halt$while_end0)
+(sys.wait)
+@SP
+AM=M+1
+A=A-1
+M=0
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT64
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT64)
+@SP
+AM=M-1
+D=M
+@sys.wait$if_true0
+D;JNE
+@sys.wait$if_false0
+0;JMP
+(sys.wait$if_true0)
+@SP
+M=M+1
+A=M-1
+M=1
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL327
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL327)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(sys.wait$if_false0)
+(sys.wait$while_exp0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT50
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT50)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@sys.wait$while_end0
+D;JNE
+@50
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(sys.wait$while_exp1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT51
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT51)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@sys.wait$while_end1
+D;JNE
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@sys.wait$while_exp1
+0;JMP
+(sys.wait$while_end1)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M
+M=D
+@sys.wait$while_exp0
+0;JMP
+(sys.wait$while_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(sys.error)
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@string.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL328
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL328)
+@69
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL329
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL329)
+@82
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL330
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL330)
+@82
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL331
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL331)
+@1
+D=A
+@R13
+M=D
+@output.printstring
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL332
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL332)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@output.printint
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL333
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL333)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@0
+D=A
+@R13
+M=D
+@sys.halt
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL334
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL334)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
diff --git a/doc/examples/PongL.asm b/doc/examples/PongL.asm
new file mode 100644
index 0000000..17c1044
--- /dev/null
+++ b/doc/examples/PongL.asm
@@ -0,0 +1,27490 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+// File name: projects/06/pong/PongL.asm
+
+// Symbol-less version of the Pong.asm program.
+
+@256
+D=A
+@0
+M=D
+@133
+0;JMP
+@15
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+D=M-D
+M=0
+@19
+D;JNE
+@0
+A=M-1
+M=-1
+@15
+A=M
+0;JMP
+@15
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+D=M-D
+M=0
+@35
+D;JLE
+@0
+A=M-1
+M=-1
+@15
+A=M
+0;JMP
+@15
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+D=M-D
+M=0
+@51
+D;JGE
+@0
+A=M-1
+M=-1
+@15
+A=M
+0;JMP
+@5
+D=A
+@1
+A=M-D
+D=M
+@13
+M=D
+@0
+AM=M-1
+D=M
+@2
+A=M
+M=D
+D=A
+@0
+M=D+1
+@1
+D=M
+@14
+AM=D-1
+D=M
+@4
+M=D
+@14
+AM=M-1
+D=M
+@3
+M=D
+@14
+AM=M-1
+D=M
+@2
+M=D
+@14
+AM=M-1
+D=M
+@1
+M=D
+@13
+A=M
+0;JMP
+@0
+A=M
+M=D
+@1
+D=M
+@0
+AM=M+1
+M=D
+@2
+D=M
+@0
+AM=M+1
+M=D
+@3
+D=M
+@0
+AM=M+1
+M=D
+@4
+D=M
+@0
+AM=M+1
+M=D
+@4
+D=A
+@13
+D=D+M
+@0
+D=M-D
+@2
+M=D
+@0
+MD=M+1
+@1
+M=D
+@14
+A=M
+0;JMP
+@0
+D=A
+@13
+M=D
+@27058
+D=A
+@14
+M=D
+@145
+D=A
+@95
+0;JMP
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@8643
+D=A
+@14
+M=D
+@163
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@3
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@10
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@3
+D=M
+@11
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@2
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@12
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@2
+D=M
+@5
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@3
+D=M
+@13
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@3
+D=M
+@14
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@387
+D=A
+@14
+M=D
+@333
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@9357
+D=A
+@14
+M=D
+@376
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@1
+D=A
+@13
+M=D
+@20889
+D=A
+@14
+M=D
+@418
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@514
+D=A
+@14
+M=D
+@441
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1
+D=A
+@13
+M=D
+@20889
+D=A
+@14
+M=D
+@480
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@514
+D=A
+@14
+M=D
+@503
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@5
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@5
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@13
+M=D
+@22354
+D=A
+@14
+M=D
+@588
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@5
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@54
+0;JMP
+@3
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@654
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@6774
+D=A
+@14
+M=D
+@747
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@6774
+D=A
+@14
+M=D
+@774
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@798
+D=A
+@38
+0;JMP
+@3
+D=M
+@7
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@3
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@826
+D;JNE
+@930
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@886
+D=A
+@38
+0;JMP
+@3
+D=M
+@8
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@916
+D=A
+@38
+0;JMP
+@3
+D=M
+@9
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@991
+0;JMP
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@948
+D=A
+@38
+0;JMP
+@3
+D=M
+@8
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@979
+D=A
+@38
+0;JMP
+@3
+D=M
+@9
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@1016
+D=A
+@95
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@1062
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@1109
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@452
+D=A
+@14
+M=D
+@1156
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1178
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@1185
+D;JNE
+@1219
+0;JMP
+@3
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@5
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@1401
+0;JMP
+@3
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@3
+D=M
+@9
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1267
+D;JNE
+@1335
+0;JMP
+@3
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1283
+D;JNE
+@1309
+0;JMP
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@1333
+0;JMP
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+M=D
+@1401
+0;JMP
+@3
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1351
+D;JNE
+@1377
+0;JMP
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@1401
+0;JMP
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+M=D
+@3
+D=M
+@8
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1417
+D;JNE
+@1485
+0;JMP
+@3
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1433
+D;JNE
+@1459
+0;JMP
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+M=D
+@1483
+0;JMP
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@1551
+0;JMP
+@3
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1501
+D;JNE
+@1527
+0;JMP
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+M=D
+@1551
+0;JMP
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@10
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1571
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@1581
+D;JNE
+@1612
+0;JMP
+@0
+M=M+1
+A=M-1
+M=1
+@3
+D=M
+@14
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@3
+D=M
+@10
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@11
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1632
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@1642
+D;JNE
+@1675
+0;JMP
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@14
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@3
+D=M
+@11
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@12
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1695
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@1705
+D;JNE
+@1738
+0;JMP
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@14
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@3
+D=M
+@12
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@13
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1758
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@1768
+D;JNE
+@1801
+0;JMP
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@14
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@3
+D=M
+@13
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@387
+D=A
+@14
+M=D
+@1819
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@14
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@5
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@1837
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@1882
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@1916
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1939
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@1946
+D;JNE
+@1963
+0;JMP
+@10
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2086
+0;JMP
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1979
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@1997
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@2018
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+A=M-1
+D=!M
+M=D+1
+@2042
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+AM=M-1
+D=M
+@2054
+D;JNE
+@2071
+0;JMP
+@20
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2086
+0;JMP
+@5
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@3
+D=M
+@14
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@2103
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@2110
+D;JNE
+@2227
+0;JMP
+@506
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@50
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+D=!M
+M=D+1
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@2153
+D=A
+@95
+0;JMP
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@2173
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@2214
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@2616
+0;JMP
+@3
+D=M
+@14
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2246
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@2253
+D;JNE
+@2364
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@50
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@2290
+D=A
+@95
+0;JMP
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@2310
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@2351
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@2616
+0;JMP
+@3
+D=M
+@14
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2383
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@2390
+D;JNE
+@2507
+0;JMP
+@250
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@25
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+D=!M
+M=D+1
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@2432
+D=A
+@95
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@2453
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@2494
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@2616
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@25
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@2543
+D=A
+@95
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@2564
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@2605
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@13
+M=D
+@652
+D=A
+@14
+M=D
+@2648
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@5
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@8643
+D=A
+@14
+M=D
+@2677
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@3
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@2827
+D=A
+@14
+M=D
+@2773
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@9357
+D=A
+@14
+M=D
+@2816
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@1
+D=A
+@13
+M=D
+@20889
+D=A
+@14
+M=D
+@2858
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@2954
+D=A
+@14
+M=D
+@2881
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1
+D=A
+@13
+M=D
+@20889
+D=A
+@14
+M=D
+@2920
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@2954
+D=A
+@14
+M=D
+@2943
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@13
+M=D
+@22354
+D=A
+@14
+M=D
+@3033
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@2892
+D=A
+@14
+M=D
+@3163
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@2827
+D=A
+@14
+M=D
+@3200
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@3240
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@3247
+D;JNE
+@3525
+0;JMP
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@3286
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@3293
+D;JNE
+@3303
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1
+D=A
+@13
+M=D
+@20889
+D=A
+@14
+M=D
+@3319
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@13
+M=D
+@22354
+D=A
+@14
+M=D
+@3424
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@1
+D=A
+@13
+M=D
+@20889
+D=A
+@14
+M=D
+@3448
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@13
+M=D
+@22354
+D=A
+@14
+M=D
+@3518
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3831
+0;JMP
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@511
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3579
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+@3586
+D;JNE
+@3611
+0;JMP
+@511
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1
+D=A
+@13
+M=D
+@20889
+D=A
+@14
+M=D
+@3627
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@13
+M=D
+@22354
+D=A
+@14
+M=D
+@3706
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@1
+D=A
+@13
+M=D
+@20889
+D=A
+@14
+M=D
+@3730
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@13
+M=D
+@22354
+D=A
+@14
+M=D
+@3826
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@0
+AM=M+1
+A=A-1
+M=0
+@0
+D=A
+@13
+M=D
+@4508
+D=A
+@14
+M=D
+@3853
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+D=A
+@13
+M=D
+@4531
+D=A
+@14
+M=D
+@3870
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@4539
+D=A
+@14
+M=D
+@3895
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@4419
+D=A
+@14
+M=D
+@3919
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@7
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@8643
+D=A
+@14
+M=D
+@3948
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@3
+M=D
+@0
+D=A
+@13
+M=D
+@20598
+D=A
+@14
+M=D
+@3965
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@50
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@230
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@229
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@13
+M=D
+@2659
+D=A
+@14
+M=D
+@4026
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@253
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@222
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@511
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@229
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@13
+M=D
+@145
+D=A
+@14
+M=D
+@4076
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@400
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@3
+D=A
+@13
+M=D
+@652
+D=A
+@14
+M=D
+@4111
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@238
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@240
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@13
+M=D
+@22354
+D=A
+@14
+M=D
+@4150
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@22
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@2
+D=A
+@13
+M=D
+@19350
+D=A
+@14
+M=D
+@4177
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@8
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@25105
+D=A
+@14
+M=D
+@4200
+D=A
+@95
+0;JMP
+@83
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@4218
+D=A
+@95
+0;JMP
+@99
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@4236
+D=A
+@95
+0;JMP
+@111
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@4254
+D=A
+@95
+0;JMP
+@114
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@4272
+D=A
+@95
+0;JMP
+@101
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@4290
+D=A
+@95
+0;JMP
+@58
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@4308
+D=A
+@95
+0;JMP
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@4326
+D=A
+@95
+0;JMP
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@4344
+D=A
+@95
+0;JMP
+@1
+D=A
+@13
+M=D
+@19850
+D=A
+@14
+M=D
+@4356
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@2786
+D=A
+@14
+M=D
+@4450
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@346
+D=A
+@14
+M=D
+@4474
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@9357
+D=A
+@14
+M=D
+@4497
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@0
+D=A
+@13
+M=D
+@3930
+D=A
+@14
+M=D
+@4520
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@16
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@16
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@0
+AM=M+1
+A=A-1
+M=0
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@4943
+D;JNE
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@4590
+D=A
+@6
+0;JMP
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@4682
+D;JNE
+@0
+D=A
+@13
+M=D
+@5924
+D=A
+@14
+M=D
+@4627
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@3211
+D=A
+@14
+M=D
+@4652
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5191
+D=A
+@14
+M=D
+@4675
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@4575
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@130
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@4699
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@4706
+D;JNE
+@4736
+0;JMP
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@2
+D=A
+@13
+M=D
+@3044
+D=A
+@14
+M=D
+@4729
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@4831
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@132
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@4753
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@4760
+D;JNE
+@4792
+0;JMP
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@3044
+D=A
+@14
+M=D
+@4785
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@4831
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@140
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@4809
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@4816
+D;JNE
+@4831
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@4846
+D=A
+@6
+0;JMP
+@0
+A=M-1
+M=!M
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@4941
+D;JNE
+@0
+D=A
+@13
+M=D
+@5924
+D=A
+@14
+M=D
+@4886
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@3211
+D=A
+@14
+M=D
+@4911
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5191
+D=A
+@14
+M=D
+@4934
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@4831
+0;JMP
+@4555
+0;JMP
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4959
+D;JNE
+@5185
+0;JMP
+@10
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@19350
+D=A
+@14
+M=D
+@4983
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@9
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@25105
+D=A
+@14
+M=D
+@5006
+D=A
+@95
+0;JMP
+@71
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@5024
+D=A
+@95
+0;JMP
+@97
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@5042
+D=A
+@95
+0;JMP
+@109
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@5060
+D=A
+@95
+0;JMP
+@101
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@5078
+D=A
+@95
+0;JMP
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@5096
+D=A
+@95
+0;JMP
+@79
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@5114
+D=A
+@95
+0;JMP
+@118
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@5132
+D=A
+@95
+0;JMP
+@101
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@5150
+D=A
+@95
+0;JMP
+@114
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@5168
+D=A
+@95
+0;JMP
+@1
+D=A
+@13
+M=D
+@19850
+D=A
+@14
+M=D
+@5180
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@5
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@5193
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@1126
+D=A
+@14
+M=D
+@5231
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@5254
+D=A
+@22
+0;JMP
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@5
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@5275
+D=A
+@6
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+AM=M-1
+D=M
+@5290
+D;JNE
+@5802
+0;JMP
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@3078
+D=A
+@14
+M=D
+@5337
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@3099
+D=A
+@14
+M=D
+@5362
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@599
+D=A
+@14
+M=D
+@5388
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@620
+D=A
+@14
+M=D
+@5415
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@5442
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@5449
+D;JNE
+@5771
+0;JMP
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@5469
+D=A
+@22
+0;JMP
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@5490
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+M=D
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@5522
+D;JNE
+@5771
+0;JMP
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@5553
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@5560
+D;JNE
+@5576
+0;JMP
+@0
+M=M+1
+A=M-1
+M=1
+@0
+A=M-1
+D=!M
+M=D+1
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@5625
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@5608
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+@5615
+D;JNE
+@5625
+0;JMP
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@3
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@3133
+D=A
+@14
+M=D
+@5684
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@22
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@19350
+D=A
+@14
+M=D
+@5740
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@19981
+D=A
+@14
+M=D
+@5766
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@1835
+D=A
+@14
+M=D
+@5797
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@5823
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@5833
+D;JNE
+@5856
+0;JMP
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@5851
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@8643
+D=A
+@14
+M=D
+@5875
+D=A
+@95
+0;JMP
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@9357
+D=A
+@14
+M=D
+@5907
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@24576
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@8558
+D=A
+@14
+M=D
+@5942
+D=A
+@95
+0;JMP
+@54
+0;JMP
+@0
+A=M
+M=0
+AD=A+1
+M=0
+@0
+M=D+1
+@0
+M=M+1
+A=M-1
+M=0
+@1
+D=A
+@13
+M=D
+@19610
+D=A
+@14
+M=D
+@5967
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@5987
+D=A
+@6
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@6002
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@6070
+D;JNE
+@0
+D=A
+@13
+M=D
+@5924
+D=A
+@14
+M=D
+@6027
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@6048
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+@6055
+D;JNE
+@6068
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@5972
+0;JMP
+@0
+D=A
+@13
+M=D
+@27042
+D=A
+@14
+M=D
+@6082
+D=A
+@95
+0;JMP
+@1
+D=A
+@13
+M=D
+@19610
+D=A
+@14
+M=D
+@6094
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@19610
+D=A
+@14
+M=D
+@6118
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@5
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@6134
+D;JGT
+@80
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@25105
+D=A
+@14
+M=D
+@6159
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@19850
+D=A
+@14
+M=D
+@6186
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+D=A
+@13
+M=D
+@27034
+D=A
+@14
+M=D
+@6203
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@0
+D=A
+@13
+M=D
+@27042
+D=A
+@14
+M=D
+@6221
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@6404
+D;JNE
+@0
+D=A
+@13
+M=D
+@5944
+D=A
+@14
+M=D
+@6260
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@6284
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@6312
+D;JNE
+@6402
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@6331
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@6338
+D;JNE
+@6366
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@25801
+D=A
+@14
+M=D
+@6359
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@6402
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@6394
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@6228
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@0
+A=M
+M=0
+AD=A+1
+M=0
+@0
+M=D+1
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@6132
+D=A
+@14
+M=D
+@6441
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@25889
+D=A
+@14
+M=D
+@6466
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@25252
+D=A
+@14
+M=D
+@6491
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@0
+AM=M+1
+A=A-1
+M=0
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5808
+D=A
+@14
+M=D
+@6527
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@17
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5808
+D=A
+@14
+M=D
+@6550
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@18
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@18
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6613
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@6768
+D;JNE
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@18
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@18
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@6596
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@6789
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@6796
+D;JNE
+@6813
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+D=!M
+M=D+1
+@0
+AM=M-1
+D=M
+@2
+A=M
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@5
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@6824
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@6846
+D=A
+@38
+0;JMP
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@6861
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@6881
+D=A
+@22
+0;JMP
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@6896
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@6774
+D=A
+@14
+M=D
+@6934
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@2
+A=M
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@6774
+D=A
+@14
+M=D
+@6959
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@2
+A=M+1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@6983
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@6990
+D;JNE
+@7029
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@2
+A=M
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@2
+A=M+1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@7048
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@7245
+D;JNE
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+M=M+1
+A=M-1
+M=0
+@7108
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+@7115
+D;JNE
+@7192
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@2
+A=M
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@7029
+0;JMP
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@7261
+D;JNE
+@7278
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+D=!M
+M=D+1
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@4
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@7289
+D;JGT
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@7311
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@7318
+D;JNE
+@7341
+0;JMP
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@7336
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@7356
+D=A
+@38
+0;JMP
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@7371
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@7391
+D=A
+@22
+0;JMP
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@7406
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@17
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@6774
+D=A
+@14
+M=D
+@7457
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@6774
+D=A
+@14
+M=D
+@7498
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@2
+A=M
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@7841
+D;JNE
+@32767
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@17
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@17
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@7599
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@7626
+D;JNE
+@7839
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@17
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@17
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@17
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@17
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@7790
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@7817
+D;JNE
+@7839
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@7504
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+A=M-1
+D=!M
+M=D+1
+@7860
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@8039
+D;JNE
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@17
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@7909
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@7919
+D;JNE
+@8015
+0;JMP
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@17
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@2
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@7841
+0;JMP
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@8054
+D;JNE
+@8071
+0;JMP
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+D=!M
+M=D+1
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@4
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@8082
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@8104
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@8111
+D;JNE
+@8134
+0;JMP
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@8129
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@7
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+A=M-1
+D=!M
+M=D+1
+@8165
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@8348
+D;JNE
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@8249
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@8275
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@8294
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+AM=M-1
+D=M
+@8309
+D;JNE
+@8324
+0;JMP
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@8146
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@8377
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+@8384
+D;JNE
+@8397
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@2
+A=M+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@8424
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@8431
+D;JNE
+@8444
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@2
+A=M+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@19
+M=D
+@2048
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@19
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@14334
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@2049
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@19
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2050
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@19
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@19
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@0
+AM=M+1
+A=A-1
+M=0
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@8662
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@8669
+D;JNE
+@8692
+0;JMP
+@5
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@8687
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2048
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@8743
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@8787
+D;JNE
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@8704
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@16379
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@8816
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+@8823
+D;JNE
+@8846
+0;JMP
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@8841
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@8896
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+@8903
+D;JNE
+@9295
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+M=M+1
+A=M-1
+M=0
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@9056
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@9063
+D;JNE
+@9147
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@9227
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@54
+0;JMP
+@0
+A=M
+M=0
+AD=A+1
+M=0
+@0
+M=D+1
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@9458
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@9465
+D;JNE
+@9556
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@9848
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+M=M+1
+A=M-1
+M=0
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@9717
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@9724
+D;JNE
+@9782
+0;JMP
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@9848
+0;JMP
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@16384
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@20
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@21
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@22
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@23
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@25105
+D=A
+@14
+M=D
+@9915
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@24
+M=D
+@0
+D=A
+@13
+M=D
+@9960
+D=A
+@14
+M=D
+@9932
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+D=A
+@13
+M=D
+@18456
+D=A
+@14
+M=D
+@9949
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@127
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5808
+D=A
+@14
+M=D
+@9978
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@25
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10061
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10128
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@33
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10211
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@34
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@20
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10284
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@35
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@18
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10367
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@36
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10454
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@37
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@35
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@49
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10535
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@38
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10620
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@39
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10693
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@40
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10778
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@41
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10863
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@42
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10940
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@43
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11017
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@44
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11090
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@45
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11159
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@46
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11230
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@47
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11309
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11394
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@49
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@14
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11479
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@50
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11564
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11649
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@52
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@26
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@25
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@60
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11734
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@53
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11819
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11904
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@55
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@49
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11989
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@56
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12074
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@57
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@62
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@14
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12159
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@58
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12234
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@59
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12311
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@60
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12392
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@61
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12463
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@62
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12544
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@64
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12629
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12712
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@65
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12797
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@66
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12882
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@67
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12967
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@68
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13052
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@69
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13137
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@70
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13222
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@71
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@44
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13307
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@72
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13392
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@73
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13477
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@74
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@60
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@14
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13562
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@75
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13647
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@76
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13732
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@77
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@33
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13817
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@78
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@55
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@55
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13902
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@79
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13987
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@80
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@14072
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@81
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@14159
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@82
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@14244
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@83
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@14329
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@84
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@45
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@14414
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@85
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@14499
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@86
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@14584
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@87
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@14669
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@88
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@14754
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@89
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@14839
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@90
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@49
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@14924
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@91
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15009
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@92
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=1
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15088
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@93
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15173
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@94
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@8
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15246
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@95
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15315
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@96
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15388
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@97
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@14
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15467
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@98
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15552
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@99
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15631
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@100
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@60
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15716
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@101
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15795
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@102
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@38
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15880
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@103
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@62
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15963
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@104
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@55
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16048
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@105
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@14
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16131
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@106
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@56
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16216
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@107
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16301
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@108
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@14
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16386
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@109
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@29
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@43
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@43
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@43
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@43
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16465
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@110
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@29
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16544
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@111
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16623
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@112
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16704
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@113
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@62
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16785
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@114
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@29
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@55
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16864
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@115
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16943
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@116
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@17028
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@117
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@17107
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@118
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@17186
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@119
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@17265
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@120
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@17344
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@121
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@62
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@17425
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@122
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@17504
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@123
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@56
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@56
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@17589
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@124
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@17674
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@125
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@56
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@17759
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@126
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@38
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@45
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@25
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@17832
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@0
+AM=M+1
+A=A-1
+M=0
+@11
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5808
+D=A
+@14
+M=D
+@17865
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@25
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+D=M
+@5
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@5
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@7
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+D=M
+@8
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@8
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+D=M
+@9
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@9
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+D=M
+@10
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@10
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+D=M
+@11
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@4
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@18458
+D;JGT
+@127
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5808
+D=A
+@14
+M=D
+@18483
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@26
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@127
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@18517
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@18859
+D;JNE
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@25
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@11
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5808
+D=A
+@14
+M=D
+@18580
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@26
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@18665
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@18795
+D;JNE
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@256
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@18745
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@18646
+0;JMP
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@18811
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@18818
+D;JNE
+@18833
+0;JMP
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@18857
+0;JMP
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@18499
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@0
+AM=M+1
+A=A-1
+M=0
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@18886
+D=A
+@38
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@126
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@18903
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@18915
+D;JNE
+@18925
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@2
+A=M
+M=D
+@21
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@18938
+D;JNE
+@18976
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@25
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@19012
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@26
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@4
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@19023
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@18865
+D=A
+@14
+M=D
+@19049
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@22
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@19085
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@19344
+D;JNE
+@21
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@19106
+D;JNE
+@19161
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@20
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@256
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+D=!M
+M=D+1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@19210
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@20
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@255
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@20
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@19068
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@19365
+D=A
+@38
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@22
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@19382
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@19402
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@19424
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@19436
+D;JNE
+@19459
+0;JMP
+@20
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@19454
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@19484
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@23
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@352
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@19520
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@23
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@22
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@23
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@19572
+D=A
+@95
+0;JMP
+@19576
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@21
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@19021
+D=A
+@14
+M=D
+@19599
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+D=A
+@13
+M=D
+@27034
+D=A
+@14
+M=D
+@19629
+D=A
+@95
+0;JMP
+@19633
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@19640
+D;JNE
+@19659
+0;JMP
+@0
+D=A
+@13
+M=D
+@20040
+D=A
+@14
+M=D
+@19652
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@19844
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+D=A
+@13
+M=D
+@27042
+D=A
+@14
+M=D
+@19678
+D=A
+@95
+0;JMP
+@19682
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@19689
+D;JNE
+@19708
+0;JMP
+@0
+D=A
+@13
+M=D
+@20134
+D=A
+@14
+M=D
+@19701
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@19844
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@19021
+D=A
+@14
+M=D
+@19727
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@21
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@19748
+D;JNE
+@19788
+0;JMP
+@23
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@23
+M=D
+@22
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@22
+M=D
+@23
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@19804
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@19811
+D;JNE
+@19830
+0;JMP
+@0
+D=A
+@13
+M=D
+@20040
+D=A
+@14
+M=D
+@19823
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@19844
+0;JMP
+@21
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@21
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@0
+A=M
+M=0
+AD=A+1
+M=0
+@0
+M=D+1
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@25339
+D=A
+@14
+M=D
+@19876
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@19900
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@19975
+D;JNE
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25361
+D=A
+@14
+M=D
+@19934
+D=A
+@95
+0;JMP
+@1
+D=A
+@13
+M=D
+@19610
+D=A
+@14
+M=D
+@19946
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@19882
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@24
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@26291
+D=A
+@14
+M=D
+@20006
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@24
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@19850
+D=A
+@14
+M=D
+@20029
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@22
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@352
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@23
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@22
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@23
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@21
+M=D
+@22
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@8128
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@20110
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@20117
+D;JNE
+@20128
+0;JMP
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@22
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@21
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@20147
+D;JNE
+@20288
+0;JMP
+@23
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@20161
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+@20168
+D;JNE
+@20210
+0;JMP
+@23
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@23
+M=D
+@22
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@22
+M=D
+@20277
+0;JMP
+@31
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@23
+M=D
+@22
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@20237
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@20244
+D;JNE
+@20255
+0;JMP
+@8128
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@22
+M=D
+@22
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@321
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@22
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@21
+M=D
+@20300
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@21
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@19021
+D=A
+@14
+M=D
+@20318
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@0
+AM=M+1
+A=A-1
+M=0
+@16384
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@27
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@28
+M=D
+@17
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5808
+D=A
+@14
+M=D
+@20374
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@29
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@29
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@20437
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@20592
+D;JNE
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@29
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@29
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@29
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@20420
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@0
+AM=M+1
+A=A-1
+M=0
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@8192
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@20619
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@20695
+D;JNE
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@20602
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@28
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@20714
+D;JNE
+@20798
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@20883
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@28
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@3
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@20909
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@20931
+D=A
+@38
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@20948
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@20968
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@255
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@20990
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@21002
+D;JNE
+@21025
+0;JMP
+@7
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@21020
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@21050
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@21088
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@21124
+D=A
+@95
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@29
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@20701
+D=A
+@14
+M=D
+@21193
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@21219
+D;JNE
+@21252
+0;JMP
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@20907
+D=A
+@14
+M=D
+@21245
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@21283
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@20907
+D=A
+@14
+M=D
+@21278
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@11
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@21291
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@21313
+D=A
+@38
+0;JMP
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@21331
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@21351
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@255
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@21375
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@21387
+D;JNE
+@21410
+0;JMP
+@8
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@21405
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@1
+D=A
+@13
+M=D
+@6774
+D=A
+@14
+M=D
+@21442
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@1
+D=A
+@13
+M=D
+@6774
+D=A
+@14
+M=D
+@21483
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@21511
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@21551
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@1
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@21587
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@21604
+D;JNE
+@21698
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@2
+A=M
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@2
+A=M+1
+A=A+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@2
+A=M+1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@2
+A=M+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@21714
+D;JNE
+@21844
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@8
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@21830
+D=A
+@22
+0;JMP
+@1
+D=M
+@7
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@21922
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@8
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@21910
+D=A
+@22
+0;JMP
+@1
+D=M
+@7
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@21948
+D=A
+@95
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@21998
+D=A
+@95
+0;JMP
+@1
+D=M
+@9
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@22050
+D=A
+@95
+0;JMP
+@1
+D=M
+@10
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@13
+M=D
+@21204
+D=A
+@14
+M=D
+@22097
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@8
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@22122
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@22348
+D;JNE
+@1
+D=M
+@5
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@22147
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@22154
+D;JNE
+@22189
+0;JMP
+@1
+D=M
+@5
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@9
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@22284
+0;JMP
+@1
+D=M
+@5
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@10
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@22238
+D;JNE
+@22262
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@22284
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@13
+M=D
+@21204
+D=A
+@14
+M=D
+@22341
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@22102
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@9
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@22356
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@22382
+D=A
+@22
+0;JMP
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@22402
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@22422
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@22445
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@22465
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@255
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@22489
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@22501
+D;JNE
+@22524
+0;JMP
+@9
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@22519
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@22549
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@22591
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@1
+D=M
+@7
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@22634
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@22678
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@1
+D=M
+@8
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@1
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@29
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@8
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@29
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@22835
+D=A
+@95
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@22905
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@23245
+D;JNE
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@22958
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@22965
+D;JNE
+@23014
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@5
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@2
+D=A
+@13
+M=D
+@20701
+D=A
+@14
+M=D
+@23007
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@23184
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@20701
+D=A
+@14
+M=D
+@23042
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@23087
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@23151
+D;JNE
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+A=M-1
+D=!M
+M=D+1
+@2
+D=A
+@13
+M=D
+@20701
+D=A
+@14
+M=D
+@23122
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@23069
+0;JMP
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@5
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@20701
+D=A
+@14
+M=D
+@23179
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@2
+A=M+1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@22885
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@11
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@23253
+D;JGT
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@8406
+D=A
+@14
+M=D
+@23287
+D=A
+@95
+0;JMP
+@1
+D=M
+@7
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@8359
+D=A
+@14
+M=D
+@23326
+D=A
+@95
+0;JMP
+@1
+D=M
+@8
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+A=M-1
+D=!M
+M=D+1
+@23357
+D=A
+@22
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@256
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@23374
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@1
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@512
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@23398
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@1
+D=M
+@8
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+A=M-1
+D=!M
+M=D+1
+@23424
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+AM=M-1
+D=M
+@23436
+D;JNE
+@24145
+0;JMP
+@1
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@2
+D=A
+@13
+M=D
+@8359
+D=A
+@14
+M=D
+@23461
+D=A
+@95
+0;JMP
+@1
+D=M
+@7
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@1
+D=M
+@8
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@8406
+D=A
+@14
+M=D
+@23500
+D=A
+@95
+0;JMP
+@1
+D=M
+@8
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@1
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@23539
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@23579
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@1
+D=M
+@9
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@1
+D=M
+@8
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@23623
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@1
+D=M
+@8
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@23665
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@1
+D=M
+@10
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@1
+D=M
+@9
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@29
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@10
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@29
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@23820
+D=A
+@95
+0;JMP
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@23915
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@23922
+D;JNE
+@23971
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@5
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@2
+D=A
+@13
+M=D
+@20701
+D=A
+@14
+M=D
+@23964
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@24145
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@5
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@20701
+D=A
+@14
+M=D
+@23999
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@24046
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@24110
+D;JNE
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+A=M-1
+D=!M
+M=D+1
+@2
+D=A
+@13
+M=D
+@20701
+D=A
+@14
+M=D
+@24081
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@24026
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@20701
+D=A
+@14
+M=D
+@24140
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@3
+D=A
+@13
+M=D
+@23251
+D=A
+@14
+M=D
+@24224
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@3
+D=A
+@13
+M=D
+@23251
+D=A
+@14
+M=D
+@24302
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+D=A
+@13
+M=D
+@23251
+D=A
+@14
+M=D
+@24381
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+D=A
+@13
+M=D
+@23251
+D=A
+@14
+M=D
+@24460
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@3
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@24473
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@24495
+D=A
+@38
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24512
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@24532
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@255
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24554
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@24566
+D;JNE
+@24589
+0;JMP
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@24584
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+M=M+1
+A=M-1
+M=0
+@24617
+D=A
+@38
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@511
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24647
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+M=M+1
+A=M-1
+M=0
+@24680
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@255
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24715
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@24727
+D;JNE
+@24750
+0;JMP
+@13
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@24745
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@13
+M=D
+@24151
+D=A
+@14
+M=D
+@24828
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@24851
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@25099
+D;JNE
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@24875
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@24882
+D;JNE
+@24940
+0;JMP
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@24915
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@25030
+0;JMP
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@24985
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@5
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@13
+M=D
+@24151
+D=A
+@14
+M=D
+@25092
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@24833
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@8643
+D=A
+@14
+M=D
+@25123
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@3
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@25143
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@25150
+D;JNE
+@25173
+0;JMP
+@14
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@25168
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@25188
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+@25195
+D;JNE
+@25220
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5808
+D=A
+@14
+M=D
+@25214
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@25279
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+@25286
+D;JNE
+@25310
+0;JMP
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5877
+D=A
+@14
+M=D
+@25305
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@9357
+D=A
+@14
+M=D
+@25328
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@25388
+D=A
+@38
+0;JMP
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@25407
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@25431
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@25443
+D;JNE
+@25466
+0;JMP
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@25461
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@25526
+D=A
+@38
+0;JMP
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@25545
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@25569
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@25581
+D;JNE
+@25604
+0;JMP
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@25599
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@25690
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@25697
+D;JNE
+@25720
+0;JMP
+@17
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@25715
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@25829
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@25836
+D;JNE
+@25859
+0;JMP
+@18
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@25854
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@5
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@25891
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@25926
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@25933
+D;JNE
+@25939
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@45
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@25992
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@25999
+D;JNE
+@26025
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@26044
+D=A
+@38
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@26249
+D;JNE
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@26131
+D=A
+@38
+0;JMP
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@9
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@26149
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@26181
+D;JNE
+@26247
+0;JMP
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@26206
+D=A
+@95
+0;JMP
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@26025
+0;JMP
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@26265
+D;JNE
+@26282
+0;JMP
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+D=!M
+M=D+1
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@4
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@26293
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@26327
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@26334
+D;JNE
+@26357
+0;JMP
+@19
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@26352
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5808
+D=A
+@14
+M=D
+@26375
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@26397
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@26404
+D;JNE
+@26436
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+D=!M
+M=D+1
+@0
+AM=M-1
+D=M
+@2
+A=M+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@26464
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@26630
+D;JNE
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@26497
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@26561
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@2
+A=M+1
+M=D
+@26449
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@26646
+D;JNE
+@26716
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@45
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@26734
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@26741
+D;JNE
+@26764
+0;JMP
+@19
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@26759
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@26779
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@26786
+D;JNE
+@26843
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+M=D
+@27003
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@26873
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@27003
+D;JNE
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+M=D
+@26854
+0;JMP
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5877
+D=A
+@14
+M=D
+@27023
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@128
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@129
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@34
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@0
+D=A
+@13
+M=D
+@8453
+D=A
+@14
+M=D
+@27070
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+D=A
+@13
+M=D
+@6505
+D=A
+@14
+M=D
+@27087
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+D=A
+@13
+M=D
+@20329
+D=A
+@14
+M=D
+@27104
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+D=A
+@13
+M=D
+@9854
+D=A
+@14
+M=D
+@27121
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+D=A
+@13
+M=D
+@5918
+D=A
+@14
+M=D
+@27138
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+D=A
+@13
+M=D
+@3837
+D=A
+@14
+M=D
+@27155
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+D=A
+@13
+M=D
+@27177
+D=A
+@14
+M=D
+@27172
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@27194
+D;JNE
+@27177
+0;JMP
+@0
+AM=M+1
+A=A-1
+M=0
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@27213
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@27220
+D;JNE
+@27241
+0;JMP
+@0
+M=M+1
+A=M-1
+M=1
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@27236
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@27256
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@27347
+D;JNE
+@50
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@27291
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@27323
+D;JNE
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@27276
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@2
+A=M
+M=D
+@27241
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@25105
+D=A
+@14
+M=D
+@27371
+D=A
+@95
+0;JMP
+@69
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@27389
+D=A
+@95
+0;JMP
+@82
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@27407
+D=A
+@95
+0;JMP
+@82
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@27425
+D=A
+@95
+0;JMP
+@1
+D=A
+@13
+M=D
+@19850
+D=A
+@14
+M=D
+@27437
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@19981
+D=A
+@14
+M=D
+@27461
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+D=A
+@13
+M=D
+@27177
+D=A
+@14
+M=D
+@27478
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
diff --git a/doc/examples/Rect.asm b/doc/examples/Rect.asm
new file mode 100644
index 0000000..6cbbaeb
--- /dev/null
+++ b/doc/examples/Rect.asm
@@ -0,0 +1,35 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+// File name: projects/06/rect/Rect.asm
+
+// Draws a rectangle at the top-left corner of the screen.
+// The rectangle is 16 pixels wide and R0 pixels high.
+
+ @0
+ D=M
+ @INFINITE_LOOP
+ D;JLE
+ @counter
+ M=D
+ @SCREEN
+ D=A
+ @address
+ M=D
+(LOOP)
+ @address
+ A=M
+ M=-1
+ @address
+ D=M
+ @32
+ D=D+A
+ @address
+ M=D
+ @counter
+ MD=M-1
+ @LOOP
+ D;JGT
+(INFINITE_LOOP)
+ @INFINITE_LOOP
+ 0;JMP
diff --git a/src/Asmblr.hs b/src/Asmblr.hs
new file mode 100644
index 0000000..b9f80d3
--- /dev/null
+++ b/src/Asmblr.hs
@@ -0,0 +1,111 @@
+-- (C) Copyright Collin J. Doering 2015
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program. If not, see .
+
+-- File: Asmblr.hs
+-- Author: Collin J. Doering
+-- Date: Jun 5, 2015
+
+----------------------------------------------------------------------------
+
+{-|
+Module : Asmblr
+Description : Program that takes a hack assembly and converts it to its
+ machine language representation
+Copyright : (c) Collin J. Doering, 2015
+License : GPL-3
+Maintainer : collin.doering@rekahsoft.ca
+Stability : stable
+Portability : POSIX
+
+TODO: describe the assemblers operation in more detail
+-}
+module Asmblr (defaultMain) where
+
+import System.IO
+import System.FilePath (dropExtension)
+import System.Console.GetOpt
+import System.Environment (getArgs)
+
+import Asmblr.Parser
+
+----------------------------------------------------------------------------
+
+-- | TODO: Documentation
+data Flag = Verbose
+ | Version
+ | Help
+ | Output (Maybe String)
+ deriving (Eq, Show)
+
+-- | TODO: Documentation
+options :: [OptDescr Flag]
+options = [ Option ['v'] ["verbose"] (NoArg Verbose) "chatty output on stderr"
+ , Option ['V'] ["version"] (NoArg Version) "show version number"
+ , Option ['h'] ["help"] (NoArg Help) "show program usage"
+ , Option ['o'] ["output"] (OptArg Output "FILE") "output file or '-' for stdout" ]
+
+-- | TODO: Documentation
+isVersion :: Flag -> Bool
+isVersion Version = True
+isVersion _ = False
+
+-- | TODO: Documentation
+isHelp :: Flag -> Bool
+isHelp Help = True
+isHelp _ = False
+
+-- | TODO: Documentation
+hasOutput :: [Flag] -> Maybe String
+hasOutput [] = Nothing
+hasOutput ((Output (Just x)):_) = Just x
+hasOutput (_:xs) = hasOutput xs
+
+-- | TODO: Documentation
+progVersion :: String
+progVersion = unlines
+ [ "Assmblr 0.1.0.0"
+ , "Copyright (C) 2014 RekahSoft, Ltd."
+ , "License GPLv3+: GNU GPL version 3 or later ."
+ , "This is free software: you are free to change and redistribute it."
+ , "There is NO WARRANTY, to the extent permitted by law."
+ , ""
+ , "Written by Collin J. Doering." ]
+
+-- | TODO: Documentation
+defaultMain :: IO ()
+defaultMain = do
+ argv <- getArgs
+
+ case getOpt Permute options argv of
+ (o, _, []) | any isVersion o -> putStr progVersion
+ (o, _, []) | any isHelp o -> putStr $ usageInfo header options
+ (o, [i], []) -> do
+ --curDir <- getWorkingDirectory
+ inFile <- if i == "-"
+ then return stdin
+ else openFile i ReadMode
+ outFile <- case hasOutput o of
+ Nothing -> if i /= "-"
+ then openFile (dropExtension i ++ ".hack") WriteMode
+ else return stdout
+ Just x | x == "-" -> return stdout
+ Just x -> openFile x WriteMode
+
+ hGetContents inFile >>= parseHackAsm >>= hPutStr outFile
+ hClose inFile
+ hClose outFile
+ (o, xs, []) -> ioError (userError $ "Gave more then one input file.\n" ++ usageInfo header options)
+ (_, _, errs) -> ioError (userError (concat errs ++ usageInfo header options))
+ where header = "Usage: Asmblr [OPTION...] file"
diff --git a/Asmblr.hs b/src/Asmblr/Parser.hs
similarity index 77%
rename from Asmblr.hs
rename to src/Asmblr/Parser.hs
index 3494534..3dfd22b 100644
--- a/Asmblr.hs
+++ b/src/Asmblr/Parser.hs
@@ -13,41 +13,54 @@
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see .
--- File: Asmblr.hs
+-- File: Parser.hs
-- Author: Collin J. Doering
--- Date: Jun 5, 2015
+-- Date: Jun 16, 2015
-----------------------------------------------------------------------------
+{-|
+Module : Asmblr.Parser
+Description : Parse hack assembly into its machine language representation
+Copyright : (c) Collin J. Doering, 2015
+License : GPL-3
+Maintainer : collin.doering@rekahsoft.ca
+Stability : stable
+Portability : POSIX
+
+TODO: describe the assemblers operation in more detail
+-}
+module Asmblr.Parser (parseHackAsm, parseHackAsmFile) where
import Text.ParserCombinators.Parsec
import Text.Parsec.Prim (modifyState)
import Text.Parsec.Char (endOfLine)
import System.IO
-import System.FilePath (dropExtension)
-import System.Console.GetOpt
-import System.Environment (getArgs)
-
import Control.Monad (liftM)
+import Control.Exception hiding (try)
import Numeric (showIntAtBase)
import Data.Char (intToDigit)
import qualified Data.Map as Map
----------------------------------------------------------------------------
+-- | TODO: Documentation
type Label = String
+-- | TODO: Documentation
type SymbolTable = Map.Map Label Int
+-- | TODO: Documentation
data Instruction = AInstr Int
| CInstr String String String
deriving (Show, Read, Eq)
----------------------------------------------------------------------------
+-- | TODO: Documentation
aInstrAddr :: GenParser Char st Instruction
aInstrAddr = AInstr . read <$> many1 digit
+-- | TODO: Documentation
aInstrSym :: GenParser Char (Int, SymbolTable) Instruction
aInstrSym = do
var <- symbol
@@ -59,11 +72,13 @@ aInstrSym = do
return $ AInstr curMem
Just varCurMem -> return $ AInstr varCurMem
+-- | TODO: Documentation
aInstr :: GenParser Char (Int, SymbolTable) Instruction
aInstr = do
char '@'
aInstrAddr <|> aInstrSym
+-- | TODO: Documentation
cInstrDest :: GenParser Char st (Label, String)
cInstrDest = choice [ try (string "AMD") >> return ("AMD", "111")
, try (string "AD") >> return ("AD", "110")
@@ -73,6 +88,7 @@ cInstrDest = choice [ try (string "AMD") >> return ("AMD", "111")
, char 'D' >> return ("D", "010")
, char 'M' >> return ("M", "001") ]
+-- | TODO: Documentation
cInstrJump :: GenParser Char st (Label, String)
cInstrJump = char 'J' >>
choice [ string "MP" >> return ("JMP", "111")
@@ -83,6 +99,7 @@ cInstrJump = char 'J' >>
, try (string "GE") >> return ("JGE", "011")
, string "GT" >> return ("JGT", "001") ]
+-- | TODO: Documentation
cInstrAluOps :: GenParser Char st (Label, String)
cInstrAluOps = choice [ char '0' >> return ("0", "0101010")
, char '1' >> return ("1", "0111111")
@@ -118,6 +135,7 @@ cInstrAluOps = choice [ char '0' >> return ("0", "0101010")
, try (string "M-D") >> return ("M-D", "1000111")
, char 'M' >> return ("M", "1110000") ]
+-- | TODO: Documentation
cInstrNoJump :: GenParser Char st Instruction
cInstrNoJump = do
(_, dest) <- cInstrDest
@@ -126,6 +144,7 @@ cInstrNoJump = do
return $ CInstr aluOp dest "000"
+-- | TODO: Documentation
cInstrNoDest :: GenParser Char st Instruction
cInstrNoDest = do
(_, aluOp) <- cInstrAluOps
@@ -134,6 +153,7 @@ cInstrNoDest = do
return $ CInstr aluOp "000" jump
+-- | TODO: Documentation
cInstrDestJump :: GenParser Char st Instruction
cInstrDestJump = do
(_, dest) <- cInstrDest
@@ -144,20 +164,25 @@ cInstrDestJump = do
return $ CInstr aluOp dest jump
+-- | TODO: Documentation
cInstr :: GenParser Char st Instruction
cInstr = try cInstrDestJump <|> try cInstrNoDest <|> cInstrNoJump
+-- | TODO: Documentation
instr :: GenParser Char (Int, SymbolTable) Instruction
instr = aInstr <|> cInstr
+-- | TODO: Documentation
symbol :: GenParser Char st String
symbol = many1 (alphaNum <|> oneOf "_.$:")
+-- | TODO: Documentation
comment :: GenParser Char st String
comment = do
string "//" >> manyTill anyChar (lookAhead endOfLine)
return ""
+-- | TODO: Documentation
labelLine :: GenParser Char (a, Map.Map Label a) String
labelLine= do
lbl <- between (char '(') (char ')') symbol
@@ -170,6 +195,7 @@ labelLine= do
Just _ -> error $ "Aleady used label \"" ++ lbl ++ "\""
return ""
+-- | TODO: Documentation
instrLine :: GenParser Char (Int, a) String
instrLine = do
ret <- aInstr' <|> cInstr'
@@ -201,28 +227,34 @@ instrLine = do
(Nothing, Just jump') -> return $ op ++ ";" ++ jump'
(Just dest', Just jump') -> return $ dest' ++ "=" ++ op ++ ";" ++ jump'
+-- | TODO: Documentation
emptyLine :: GenParser Char st String
emptyLine = manyTill space (lookAhead endOfLine)
+-- | TODO: Documentation
lineSpaces :: GenParser Char st String
lineSpaces = many $ oneOf " \t"
+-- | TODO: Documentation
firstPass :: GenParser Char (Int, SymbolTable) (String, SymbolTable)
firstPass = do
str <- liftM (unlines . filter (not . null)) $ (flip sepEndBy) endOfLine $ do
optional lineSpaces
comment <|> emptyLine <|> labelLine <|> instrLine
+ eof
(_, symTbl) <- getState
return (str, symTbl)
+-- | TODO: Documentation
secondPass :: GenParser Char (Int, SymbolTable) [Instruction]
secondPass = sepEndBy instr endOfLine
+-- | @parseHackAsm s@ parses @s@ and returns its hack machine language equivalent
parseHackAsm :: Monad m => String -> m String
parseHackAsm str = case runParser firstPass (0, varSymbols) "" str of
- Left err -> return $ show err
+ Left err -> throw . userError $ show err
Right (str', symTbl) -> case runParser secondPass (16, symTbl) "" str' of
- Left err -> return $ show err
+ Left err -> throw . userError $ show err
Right out -> return $ genHackML out
where varSymbols = Map.fromList [ ("R0", 0), ("SP", 0)
, ("R1", 1), ("LCL", 1)
@@ -243,68 +275,15 @@ parseHackAsm str = case runParser firstPass (0, varSymbols) "" str of
, ("SCREEN", 16384)
, ("KBD", 24576) ]
+-- | The expression @parseHackAsmFile f@ will parse the file given by @f@
+-- and output the resulting hack machine language to stdout
+parseHackAsmFile :: FilePath -> IO ()
+parseHackAsmFile f = withFile f ReadMode $ \h -> do
+ hGetContents h >>= parseHackAsm >>= putStr
+
+-- | Given a list of @Instructions@ returns its hack machine language equivalent
genHackML :: [Instruction] -> String
genHackML xs = unlines $ map instrToML xs
where instrToML (AInstr n) = leftPad 16 '0' $ showIntAtBase 2 intToDigit n ""
instrToML (CInstr op dest jump) = "111" ++ op ++ dest ++ jump
leftPad n a ys = replicate (n - (length ys)) a ++ ys
-
-----------------------------------------------------------------------------
-
-data Flag = Verbose
- | Version
- | Help
- | Output (Maybe String)
- deriving (Eq, Show)
-
-options :: [OptDescr Flag]
-options = [ Option ['v'] ["verbose"] (NoArg Verbose) "chatty output on stderr"
- , Option ['V'] ["version"] (NoArg Version) "show version number"
- , Option ['h'] ["help"] (NoArg Help) "show program usage"
- , Option ['o'] ["output"] (OptArg Output "FILE") "output file or '-' for stdout" ]
-
-progVersion :: String
-progVersion = unlines [ "Assmblr 1.0"
- , "Copyright (C) 2014 RekahSoft, Ltd."
- , "License GPLv3+: GNU GPL version 3 or later ."
- , "This is free software: you are free to change and redistribute it."
- , "There is NO WARRANTY, to the extent permitted by law."
- , ""
- , "Written by Collin J. Doering." ]
-
--- TODO:
--- * handle if input file dne or is unreadable
--- * handle if output file is unwritable
--- * display parser errors on stdout and do not generate output file
-
-main :: IO ()
-main = do
- argv <- getArgs
-
- case getOpt Permute options argv of
- (o, _, []) | any isVersion o -> putStr progVersion
- (o, _, []) | any isHelp o -> putStr $ usageInfo header options
- (o, [i], []) -> do
- --curDir <- getWorkingDirectory
- inFile <- if i == "-"
- then return stdin
- else openFile i ReadMode
- outFile <- case hasOutput o of
- Nothing -> if i /= "-"
- then openFile (dropExtension i ++ ".hack") WriteMode
- else return stdout
- Just x | x == "-" -> return stdout
- Just x -> openFile x WriteMode
-
- hGetContents inFile >>= parseHackAsm >>= hPutStr outFile
- hClose inFile
- hClose outFile
- (_, _, errs) -> ioError (userError (concat errs ++ usageInfo header options))
- where header = "Usage: Asmblr [OPTION...] file"
- isVersion Version = True
- isVersion _ = False
- isHelp Help = True
- isHelp _ = False
- hasOutput [] = Nothing
- hasOutput ((Output (Just x)):_) = Just x
- hasOutput (_:xs) = hasOutput xs
diff --git a/src/Main.hs b/src/Main.hs
new file mode 100644
index 0000000..2f7b8bb
--- /dev/null
+++ b/src/Main.hs
@@ -0,0 +1,25 @@
+-- (C) Copyright Collin J. Doering 2015
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program. If not, see .
+
+-- File: Main.hs
+-- Author: Collin J. Doering
+-- Date: Jun 16, 2015
+
+module Main where
+
+import Asmblr
+
+main :: IO ()
+main = defaultMain
diff --git a/testsuite/runtests.sh b/testsuite/runtests.sh
new file mode 100644
index 0000000..686c261
--- /dev/null
+++ b/testsuite/runtests.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+# (C) Copyright Collin J. Doering 2015
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+# File: runtest.sh
+# Author: Collin J. Doering
+# Date: Jun 16, 2015
+
+# TODO: implement and run tests
+exit 0