<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>lolhax.org</title>
	<atom:link href="http://lolhax.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://lolhax.org</link>
	<description>Development blogging from Davee</description>
	<lastBuildDate>Sat, 11 May 2013 05:01:51 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Introduction to Return Oriented Programming</title>
		<link>http://lolhax.org/2013/05/11/introduction-to-return-orientated-programming/</link>
		<comments>http://lolhax.org/2013/05/11/introduction-to-return-orientated-programming/#comments</comments>
		<pubDate>Sat, 11 May 2013 04:33:46 +0000</pubDate>
		<dc:creator>Davee</dc:creator>
				<category><![CDATA[Davee's Stuff]]></category>

		<guid isPermaLink="false">http://lolhax.org/?p=158</guid>
		<description><![CDATA[Tweet This will be a small introduction into return oriented programming, commonly referred to as ROP. I&#8217;ve had a lot of experience with security measures (duh) but never really had any hands on experience with more modern security technologies such as non-executable stack/data (DEP, NX, XN, W^X) or Address Space Layout Randomisation (ASLR). The non-executable [...]]]></description>
				<content:encoded><![CDATA[<div class="wp_twitter_button" style="float: right; margin-left: 10px;">
					<a href="http://twitter.com/share?counturl=http%3A%2F%2Flolhax.org%2F2013%2F05%2F11%2Fintroduction-to-return-orientated-programming%2F" class="twitter-share-button" data-url="http://lolhax.org/2013/05/11/introduction-to-return-orientated-programming/" data-count="horizontal" data-via="DaveeFTW" data-lang="" data-text="">Tweet</a><br />
					<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
				</div>
<p>This will be a small introduction into return oriented programming, commonly referred to as <em>ROP</em>. I&#8217;ve had a lot of experience with security measures (duh) but never really had any hands on experience with more modern security technologies such as non-executable stack/data (DEP, NX, XN, W^X) or Address Space Layout Randomisation (ASLR).</p>
<p>The non-executable stack isn&#8217;t really limited to just the stack, anything that isn&#8217;t code memory can&#8217;t be executed. So as in PSP, you can&#8217;t just jump to the savedata and have the day&#8217;s work done. No, instead the only code executable is real code provided by the OS when binaries are loaded. This is a nice and funky way but ROP is the counter and tends to poop on this method.</p>
<p><span id="more-158"></span></p>
<p>Now, ROP is really cool. Rather than execute your code, you control the stack and execute provided code. Sounds pretty weird, right? I mean, how do you control anything if it&#8217;s their code? You&#8217;re right in a way, their code isn&#8217;t our code. However, we don&#8217;t necessarily have to execute code in the same way that they do. I mean, they could have <em>super_duper_function </em>located at address<em> </em>0&#215;80000000, but just because the function is there, doesn&#8217;t mean we have to start our execution there. For example, lets consider <em>super_duper_function</em> does the following:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="none" style="font-family:monospace;">0x80000000: PUSH {R4-R6,LR}
0x80000004: ... perform algorithm
0x80000050: POP {R4-R6, PC}</pre></td></tr></table></div>

<p>First it saves registers onto the stack, then does the algorithm, then restores the saved registers and leaves. Pretty standard stuff here, nothing odd. However, if we control the return address, we can&#8217;t execute our code BUT if jump to 0&#215;80000050 then what happens is that more data is loaded from the stack (R4-R6) and the new execution position <em>PC</em> is controlled.</p>
<p>Now, this doesn&#8217;t do anything in specific but you can see how this works out. Rather than execute functions as you expect, you essentially build a list of code snippets called <em>gadgets</em> and then you chain them up to perform a task. Lets say we want to do a printf. If we control the entire contents of the stack, we can start off by calling the POP-R4-R6-PC gadget. Suddenly, we control R4, R5, R6 and the program counter.</p>
<p>Consider the next gadget:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="none" style="font-family:monospace;">0x80000100: PUSH {R4,LR}
0x80000104: .. do stuff
0x80000170: MOV R0, R4
0x80000174: MOV R1, R5
0x80000178: BLX R6
0x8000007C: POP {R4,PC}</pre></td></tr></table></div>

<p>Now, we don&#8217;t want to execute the whole function, but if we execute to 0&#215;80000170 then what we&#8217;re essentially doing is the following:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="none" style="font-family:monospace;">POP {R4-R6}
MOV R0, R4
MOV R1, R5
BLX R6
POP {R4,PC}</pre></td></tr></table></div>

<p>See? we&#8217;re chaining gadgets and now we have a function control where we can control the first 2 arguements from the stack without even touching our code. So, first gadget; if we go ahead and set R4 to point to our message, R5 to our optional arguement, R6 to the address of printf and PC to 0&#215;80000170 then we&#8217;ve chained together a printf that we control completely without a single drop of our own executable code.</p>
<p>There are a few problems with this though&#8230; Gadgets aren&#8217;t always easy to find. Especially when it involves specific things like the stack. As ROP code is working its magic, the stack is shrinking away at a variable pace (depending on the gadgets). Now, sometimes you need the address of the stack, variables are loaded from there usually, so if you want to save a return type from something like <em>fopen</em> then you need to store it onto stack (this isn&#8217;t the only way to recovery return types though). To store something on stack, you need to construct gadgets in a way that it can safely overwrite data in the future (relative to execution of the ROP stack) so that it is loaded when a POP takes place. Yes, it is a little complicated and there are some gadgets that can ease things.</p>
<p>It&#8217;s wise to recognise that your development fun is at the hands of the their compiler and code design. The compiler can do some funny things that is useful, e.g:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="none" style="font-family:monospace;">0x80000120: MOV R5, R0
&nbsp;
loc_0x80000124:
0x80000124: MOV R0, R5
0x80000128: POP {PC}</pre></td></tr></table></div>

<p>This gives a lovely control of R0 into R5, a register that we can more easily manipulate (usually). Sometimes, there is just a pain finding the right things to help you. Times like this, it is better to try and use tools to automate the process, but the more complicated gadgets are difficult to find.</p>
<p>Enough about the gadgets, lets talk about architecture. Architecture lends a hand into ROP, mostly when it comes to CISC and RISC. x86 have an absolute baller of a time due to the fact that args are loaded from registers anyway so you just need to go apeshit and call them. RISC is typically a bit different. By using registers extensively, you add another layer where you need to get the correct stuff into the correct registers in order to do the correct thing. This isn&#8217;t exclusive, but I see it as more common. However, other than that, the principle of ROP execution is the same, and can be treated exactly the same way.</p>
<p>ROP sounds pretty cool, right? I mean, it poops on execution protection, whatever can the world do? Easy. One of the most effective ways to combat ROP is to incorporate ASLR. I mentioned this earlier but now I&#8217;ll gently explain why ASLR bends ROP over. It moves things. There, ROP is countered. ROP requires everything to be static, notice we need to use exact locations in order to even execute anything? Yeah, move it around and ROP doesn&#8217;t work. You could say, <i>&#8220;Why can&#8217;t we just search for it and then dynamically provide a ROP payload??&#8221;</i>. Well, you <em>can</em> but good luck finding something that&#8217;ll expose such information, since ROP can&#8217;t even start, you can&#8217;t use ROP to search. Hence the counter to ASLR is either prediction, controlling and/or identifying the locations of memory. If ASLR is used without execution protections, then you can attempt a <a href="http://en.wikipedia.org/wiki/Heap_spraying" target="_blank">heap spray</a> to try and get control of data at a significant array of addresses.</p>
<p>So, data execution prevention and ASLR is probably the strongest way to protect a system, but mostly the effectiveness is based upon ASLR. As soon as addresses can be predicted, then huzzah, ROP.</p>
<p>This&#8217;ll do for now, If I&#8217;ve been a little vague let me know and I can update/repost with better clarification. Since I&#8217;m naturally a tease too, I&#8217;ll be showing off a cool little project related to this kind of stuff (it isn&#8217;t anything amazing, but just a bit of fun!).</p>
]]></content:encoded>
			<wfw:commentRss>http://lolhax.org/2013/05/11/introduction-to-return-orientated-programming/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PSVita Native Hack, c&#8217;mon devs!</title>
		<link>http://lolhax.org/2012/09/02/psvita-native-hack-cmon-devs/</link>
		<comments>http://lolhax.org/2012/09/02/psvita-native-hack-cmon-devs/#comments</comments>
		<pubDate>Sun, 02 Sep 2012 14:23:32 +0000</pubDate>
		<dc:creator>Davee</dc:creator>
				<category><![CDATA[PSVita]]></category>
		<category><![CDATA[awesome]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[do]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[help]]></category>
		<category><![CDATA[him]]></category>
		<category><![CDATA[needs]]></category>
		<category><![CDATA[psvita]]></category>
		<category><![CDATA[stuff]]></category>
		<category><![CDATA[to]]></category>
		<category><![CDATA[yifanlu]]></category>

		<guid isPermaLink="false">http://lolhax.org/?p=152</guid>
		<description><![CDATA[Tweet Just to start, congratulation to yifanlu for his excellent work on gaining the first vita native hack. I&#8217;d like to note that I&#8217;m just relaying information from a forum post by yifanlu and did not have any input on yifanlu&#8217;s work, it&#8217;s all his! Also, if you&#8217;re not a developer, please note that there [...]]]></description>
				<content:encoded><![CDATA[<div class="wp_twitter_button" style="float: right; margin-left: 10px;">
					<a href="http://twitter.com/share?counturl=http%3A%2F%2Flolhax.org%2F2012%2F09%2F02%2Fpsvita-native-hack-cmon-devs%2F" class="twitter-share-button" data-url="http://lolhax.org/2012/09/02/psvita-native-hack-cmon-devs/" data-count="horizontal" data-via="DaveeFTW" data-lang="" data-text="">Tweet</a><br />
					<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
				</div>
<p>Just to start, congratulation to yifanlu for his excellent work on gaining the first vita native hack. I&#8217;d like to note that I&#8217;m just relaying information from a forum post by yifanlu and did not have any input on yifanlu&#8217;s work, it&#8217;s all his!</p>
<p>Also, if you&#8217;re not a developer, please note that there is currently no way to run homebrew, colour your screen, download binaries, hack your device, make a milkshake from 10 miles away or such. This post is purely informational.</p>
<p>Continuing on, considering my audience gathers quite a few developers I think this post should complement the cause. So, if you don&#8217;t know, vita dev yifanlu has been looking around for developers who are interested in developing native software on the vita. He is <a title="Yifanlu post" href="http://wololo.net/talk/viewtopic.php?f=53&amp;t=13841" target="_blank">calling out</a> for developers to help him develop an ELF loader.<span id="more-152"></span></p>
<p>To quote his post:</p>
<blockquote><p>As of right now, I have not tried compiling the code yet. It&#8217;s mostly just pieces of code for things like the ELF parsher, resolving NIDs using module exports and syscalls from both imports and exports and etc. I am basically looking for people with experience in HBL to help me finish this. Currently, I am missing code to clean the memory (releasing heap pointers, unloading all modules, deleting threads, etc). But mostly, I want critiques on the current code and how things could be improved or if any of my assumptions in the code could prove false. I have tried to make the loader very portable (for other future exploits) by having lots of error checks and only using functions imported from sceLibKernel (which should be loaded by every game). If you want to help, just fork the code and send me a pull request when you&#8217;re done.</p></blockquote>
<p>If you&#8217;re interested in getting involved in the first community project for the vita, check out the <a title="yifanlu coding standard" href="http://yifan.lu/coding_standard.html" target="_blank">coding standard</a> for the project grab a copy of the source at his <a title="UVLoader" href="https://github.com/yifanlu/UVLoader" target="_blank">github repo</a> and read the <a title="UVLoader documentation" href="http://yifanlu.github.com/UVLoader/modules.html" target="_blank">documentation</a>.</p>
<p>As a personal tip, you can get into contact with yifanlu either by PM on the <a title="wololo forums" href="http://wololo.net/talk" target="_blank">wololo forums</a> or on IRC (if you prefer more IM like banter) at irc.efnet.net on channel #vitadev.</p>
<p>Happy coding!</p>
<p>Source: <a title="Yifanlu's post on wololo/talk" href="http://wololo.net/talk/viewtopic.php?f=53&amp;t=13841" target="_blank">wololo forums post by yifanlu.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://lolhax.org/2012/09/02/psvita-native-hack-cmon-devs/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>I&#8217;m baaaack!</title>
		<link>http://lolhax.org/2012/08/25/im-baaaack/</link>
		<comments>http://lolhax.org/2012/08/25/im-baaaack/#comments</comments>
		<pubDate>Sat, 25 Aug 2012 00:06:42 +0000</pubDate>
		<dc:creator>Davee</dc:creator>
				<category><![CDATA[Davee's Stuff]]></category>
		<category><![CDATA[PSVita]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[QtKryptography]]></category>
		<category><![CDATA[back]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[C++11]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[psvita]]></category>
		<category><![CDATA[qt]]></category>
		<category><![CDATA[qtkryptography]]></category>
		<category><![CDATA[theme]]></category>

		<guid isPermaLink="false">http://lolhax.org/?p=141</guid>
		<description><![CDATA[Tweet Well, this place has been cleaned up a little bit and I can log back in again. You might of noticed that I&#8217;ve changed the theme, and you&#8217;ll probably find out that I do this often! Well this post is going summarise what the hell I&#8217;ve been doing since my last post in terms [...]]]></description>
				<content:encoded><![CDATA[<div class="wp_twitter_button" style="float: right; margin-left: 10px;">
					<a href="http://twitter.com/share?counturl=http%3A%2F%2Flolhax.org%2F2012%2F08%2F25%2Fim-baaaack%2F" class="twitter-share-button" data-url="http://lolhax.org/2012/08/25/im-baaaack/" data-count="horizontal" data-via="DaveeFTW" data-lang="" data-text="">Tweet</a><br />
					<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
				</div>
<p>Well, this place has been cleaned up a little bit and I can log back in again. You might of noticed that I&#8217;ve changed the theme, and you&#8217;ll probably find out that I do this often!</p>
<p>Well this post is going summarise what the hell I&#8217;ve been doing since my last post in terms of development and perhaps you&#8217;ll be disappointed. Follow the link and find out! <span id="more-141"></span>Yes, I&#8217;m back! If you speak to me on IRC then you&#8217;ll quickly find out that I&#8217;ve not been away. I have however been busy, which is an entirely different matter. I have been working at a software development company as a summer intern and it has been preventing me working on projects recently. However I&#8217;ve been drilling away on a few things.</p>
<ol>
<li>PSVita.</li>
<li>QtKryptography.</li>
</ol>
<div>For the vita work. I can&#8217;t say much, however there has been some leaps in this area. I&#8217;m not here to tease, but if you&#8217;re a developer and you&#8217;re *serious* about vita development then get in touch with me in comments or the other mirage of places that I exist.</div>
<p><a title="QtKryptography" href="https://bitbucket.org/DaveeFTW/qtkryptography" target="_blank">QtKryptography</a>. If you are <a title="Qt Project" href="http://qt-project.org/" target="_blank">unfamiliar to Qt</a>, then look it up! Qt is a C++ toolkit/framework that provides a huge selection of tools and functionality that significantly lower application building time. What makes this even cooler is that Qt code runs on a huge array of devices including: windows, mac and linux. This project is here to introduce a powerful way to use cryptography using the Qt library types. If you want to contribute or follow the project, then please <a title="Davee's Bitbucket" href="https://bitbucket.org/DaveeFTW/" target="_blank">follow my bitbucket account</a>.</p>
<p>Other than that, I&#8217;ve not really had much time for development. However, my summer placement sadly comes to an end soon and once that is gone they&#8217;ll be more time for development (and looking for another placement for next year).</p>
<p>So keep an eye on this page for any useful information. I hope to provide some more information on <a title="Kermit" href="http://lolhax.org/2012/03/29/kermit/" target="_blank">kermit</a> and provide more updates with my recent experience with<a title="C++11" href="http://en.wikipedia.org/wiki/C%2B%2B11" target="_blank"> C++11</a>.</p>
<p>As always, follow me on twitter: <a title="Twitter" href="https://twitter.com/DaveeFTW" target="_blank">DaveeFTW</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://lolhax.org/2012/08/25/im-baaaack/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Kermit</title>
		<link>http://lolhax.org/2012/03/29/kermit/</link>
		<comments>http://lolhax.org/2012/03/29/kermit/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 00:05:10 +0000</pubDate>
		<dc:creator>Davee</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://lolhax.org/?p=137</guid>
		<description><![CDATA[Tweet Turns out he&#8217;s not just a green frog! So, I&#8217;ve been throwing this word around recently and it&#8217;s probably about time I explain. Kermit, either a protocol or perhaps a funny name (see KIRK/SPOCK) is a communication interface for the PSP emu. Specifically it allows the PSP to talk to the host. Now, I [...]]]></description>
				<content:encoded><![CDATA[<div class="wp_twitter_button" style="float: right; margin-left: 10px;">
					<a href="http://twitter.com/share?counturl=http%3A%2F%2Flolhax.org%2F2012%2F03%2F29%2Fkermit%2F" class="twitter-share-button" data-url="http://lolhax.org/2012/03/29/kermit/" data-count="horizontal" data-via="DaveeFTW" data-lang="" data-text="">Tweet</a><br />
					<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
				</div>
<p>Turns out he&#8217;s not just a green frog! So, I&#8217;ve been throwing this word around recently and it&#8217;s probably about time I explain. Kermit, either a protocol or perhaps a funny name (see KIRK/SPOCK) is a communication interface for the PSP emu. Specifically it allows the PSP to talk to the host.</p>
<p>Now, I can tell there aren&#8217;t as many developers here, so I&#8217;ll try to simplify for the curious minds but this stuff is pretty complicated. I&#8217;ll only explain the API in detail as the lower level still need a little bit of clearing up, but here goes. <span id="more-137"></span></p>
<p>Ok, Kermit is here so that the emu can communicate to the host to share resources and other vitality. Perhaps the primary reason is that of hardware; the PSP emu is excluded from many hardware devices. So kermit sets in and allows the system to talk to the vita in order to use the hardware. Blabbering aside, this is the hardware that kermit seems to be responsible for:</p>
<ul>
<li>Memory stick</li>
<li>Flash filesystem</li>
<li>DMA</li>
<li>LCD</li>
<li>GE</li>
<li>IDStorage</li>
<li>Audio</li>
<li>Camera</li>
<li>Power Control</li>
<li>USB</li>
<li>OSK</li>
<li>WLAN</li>
<li>RTC</li>
<li>&#8230; more</li>
</ul>
<p>Interestingly, the kermit communication isn&#8217;t used for headphone remote or controller inputs.</p>
<p>In order to understand how kermit functions, it&#8217;s important to explore the usage of the API. Starting with the power house tool:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">int</span> sceKermit_driver_4F75AA05<span style="color: #009900;">&#40;</span>KermitPacket <span style="color: #339933;">*</span>packet<span style="color: #339933;">,</span> u32 cmd_mode<span style="color: #339933;">,</span> u32 cmd<span style="color: #339933;">,</span> u32 argc<span style="color: #339933;">,</span> u32 allow_callback<span style="color: #339933;">,</span> u64 <span style="color: #339933;">*</span>resp<span style="color: #009900;">&#41;</span></pre></td></tr></table></div>

<p>This function is the send command function. It accepts a kermit packet initialised to minimum 64 bytes (no args need to be filled) a command mode which describes the set of commands, cmd: the actual command; the number of args following the 16 byte packet header. It also allows you to pass a boolean value to allow callbacks when waiting for completion and a 64 bit response.</p>
<p>What is important to note is that the packet arguements are 64-bit wide (not 32) and little endian encoded. There is a maximum of 13 arguements that can be passed to the host.</p>
<p>Sometimes, it is needed to send more than the 13 arguements worth of data. This is where kermit provides an API for memory. Shown below:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">void</span> sceKermitMemory_driver_AAF047AC<span style="color: #009900;">&#40;</span>KermitPacket <span style="color: #339933;">*</span>packet<span style="color: #339933;">,</span> u32 argc<span style="color: #339933;">,</span> u8 <span style="color: #339933;">*</span>buffer<span style="color: #339933;">,</span> u32 buffer_size<span style="color: #339933;">,</span> u32 io_mode<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">void</span> sceKermitMemory_driver_80E1240A<span style="color: #009900;">&#40;</span>u8 <span style="color: #339933;">*</span>data<span style="color: #339933;">,</span> u32 len<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">void</span> sceKermitMemory_driver_90B662D0<span style="color: #009900;">&#40;</span>u8 <span style="color: #339933;">*</span>data<span style="color: #339933;">,</span> u32 data_size<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>These function provide the fundamentals for data transmission to the host. sceKermitMemory_driver_AAF047AC is the staple command. It accepts a packet BEFORE transmission to host with the amount of args, a pointer to the input/output buffer and an indicator for the mode. This allows kermit to recieve the buffer of data when it processes the command, or have a place to output the data.</p>
<p>sceKermitMemory_driver_80E1240A and sceKermitMemory_driver_90B662D0 are the opposites of each other, providing input and output respectfully. This API is incredibly simple and is used to send multiple buffers to kermit prior and following a command.</p>
<p>These are pretty crap descriptions, but as you can see it&#8217;s a very command and transfer sort of interface. You tell it you have data you want to give it, you signal it and then it tells you where it&#8217;s put it.</p>
<p><a href="https://github.com/DaveeFTW/vita_kermit">https://github.com/DaveeFTW/vita_kermit</a></p>
<p>There is some source code describing in more codey ways. Also there are small reverses of functions used in the kermit. As you can see it works on a sort of circular queue of semaphores in the core. Have a &#8220;peek&#8221;.</p>
<p>Thanks to Proxima + some1</p>
]]></content:encoded>
			<wfw:commentRss>http://lolhax.org/2012/03/29/kermit/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>PS Vita PSP HEN</title>
		<link>http://lolhax.org/2012/03/21/ps-vita-psp-hen/</link>
		<comments>http://lolhax.org/2012/03/21/ps-vita-psp-hen/#comments</comments>
		<pubDate>Wed, 21 Mar 2012 16:16:03 +0000</pubDate>
		<dc:creator>Davee</dc:creator>
				<category><![CDATA[PlayStation Portable Development]]></category>

		<guid isPermaLink="false">http://lolhax.org/?p=133</guid>
		<description><![CDATA[Tweet First thing first, huge thanks to Proxima and some1. They&#8217;ve provided key utilities and advice for this research. So, yeah, it was really only a matter of time till this kind of thing happened. Sony dont just emulate the userland process of a PSP game, they emulate the entire kernel albeit, a modified kernel. [...]]]></description>
				<content:encoded><![CDATA[<div class="wp_twitter_button" style="float: right; margin-left: 10px;">
					<a href="http://twitter.com/share?counturl=http%3A%2F%2Flolhax.org%2F2012%2F03%2F21%2Fps-vita-psp-hen%2F" class="twitter-share-button" data-url="http://lolhax.org/2012/03/21/ps-vita-psp-hen/" data-count="horizontal" data-via="DaveeFTW" data-lang="" data-text="">Tweet</a><br />
					<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
				</div>
<p>First thing first, huge thanks to Proxima and some1. They&#8217;ve provided key utilities and advice for this research. So, yeah, it was really only a matter of time till this kind of thing happened. Sony dont just emulate the userland process of a PSP game, they emulate the entire kernel albeit, a modified kernel. The PSP emu has limited access to hardware, with interfacing the hardware done via a Kermit module. Kermit is a old-timers transmission protocol, likely used to talk to the native Vita. <span id="more-133"></span></p>
<p>The PS Vita, is a nifty little device, and the PSP emulator is a good target to get a huge library of homebrew. Check out the video below for a demonstration of what can be achieved.</p>
<p><iframe src="http://www.youtube.com/embed/rZ6_xY5lkhk" frameborder="0" width="560" height="315"></iframe></p>
<p>You can see, that it works! The benefit is that HEN can access the core of the kernel, allowing almost seamless compatibility. However, as you may know, VHBL cannot run Lamecraft. Nor can this HEN currently. Lamecraft uses the OSK interface which has been replaced with Vita&#8217;s OSK. It&#8217;s likely a software error in the PSP kernel from the arguements passed in the homebrew.</p>
<p>There is other things, and perhaps i&#8217;ll make a post for them another time, but for now, later.</p>
<p>-Davee</p>
]]></content:encoded>
			<wfw:commentRss>http://lolhax.org/2012/03/21/ps-vita-psp-hen/feed/</wfw:commentRss>
		<slash:comments>61</slash:comments>
		</item>
		<item>
		<title>Can you crack it? + Solution</title>
		<link>http://lolhax.org/2011/12/03/can-you-crack-it/</link>
		<comments>http://lolhax.org/2011/12/03/can-you-crack-it/#comments</comments>
		<pubDate>Sat, 03 Dec 2011 05:30:42 +0000</pubDate>
		<dc:creator>Davee</dc:creator>
				<category><![CDATA[Davee's Stuff]]></category>

		<guid isPermaLink="false">http://lolhax.org/?p=114</guid>
		<description><![CDATA[Tweet Thanks to a facebook message from my dad yesterday, I was informed of this website: Can you Crack it?. So, promptly, I got onto the job and it was surprisingly easy and I imagine it will be for most people who can reverse engineer and has experience doing so. Click read more to see [...]]]></description>
				<content:encoded><![CDATA[<div class="wp_twitter_button" style="float: right; margin-left: 10px;">
					<a href="http://twitter.com/share?counturl=http%3A%2F%2Flolhax.org%2F2011%2F12%2F03%2Fcan-you-crack-it%2F" class="twitter-share-button" data-url="http://lolhax.org/2011/12/03/can-you-crack-it/" data-count="horizontal" data-via="DaveeFTW" data-lang="" data-text="">Tweet</a><br />
					<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
				</div>
<p>Thanks to a facebook message from my dad yesterday, I was informed of this website: <a title="Can you crack it?" href="http://www.canyoucrackit.co.uk" target="_blank">Can you Crack it?</a>. So, promptly, I got onto the job and it was surprisingly easy and I imagine it will be for most people who can reverse engineer and has experience doing so.</p>
<p>Click read more to see how I did it, but I suggest you have a good attempt beforehand. It&#8217;s a nice little reverse engineering exercise.<br />
<span id="more-114"></span><strong><br />
SPOILER &#8211; THIS IS THE SOLUTION. RUN AWAY AND HIDE IF YOU WANT TO HAVE A GO YOURSELF.</strong></p>
<hr />
<p><strong>Stage 1 &#8211; Reverse engineering and decryption</strong><br />
Ok, so from the main page, I wrote out all the hexadecimal into a binary file. Like this:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="c" style="font-family:monospace;">EB04AFC2BFA381EC0001000031C9880C0CFEC175F931C0BAEFBEADDE02040C00D0C1CA088A1C0C8A3C04881C04883C0CFEC175E8E95C00000089E381C3040000005C583D414141417543583D42424242753B5A89D189E689DF29CFF3A489DE89D189DF29CF31C031DB31D2FEC0021C068A14068A341E88340688141E00F230F68A1C168A1730DA8817474975DE31DB89D8FEC0CD809090E89DFFFFFF41414141</pre></td></tr></table></div>

<p>I sat around for a good few minutes just reading the hex. However, I noticed something! &#8220;EFBEADDE&#8221;. This is the little endian storage of &#8220;0xDEADBEEF&#8221;. Tada, it&#8217;s <a href="http://en.wikipedia.org/wiki/Hexspeak" target="_blank">probably code</a>. So shoving it into a disassembler, I get some nasty x86 code. After whimpering at the sight of it, I cracked on and reversed engineered the code into lovely C.</p>
<p>But there was something missing! In the x86, it does a near call which pushes the return address onto the stack. This sneaky little program then pops this off the stack and then sets it as the new top of stack. After the return address, a sneaky pop loads 0&#215;41414141, the last 32 bit value in the file, and then checks it does equal that. Then, it does another pop&#8230; wait a second. There is no more defined data, and it is looking for a 0&#215;42424242. So, realising I copied the HEX wrong, I set about correcting it. Except, I didn&#8217;t copy it wrong, the data was truely missing! I checked the site source for any html comments; nothing. After downloading the png image on the website (the image with the hex data), I open it up in a hex editor, and I recognise a base64 encoded message in the comments section which indeed turns out to be the missing data!</p>
<p>So further analysis proved that I have all the data required to decrypt and complete this puzzle. I wrote this program to do it:<br />
<a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID1633753927'), this, 'Show &#9660;', 'Hide &#9650;');">Show &#9660;</a></p>
<div id='SID1633753927' style='display:none;'>

<div class="wp_syntax"><table><tr><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/*
	http://www.canyoucrackit.co.uk decrypter (and encrypter)
	Reverse Engineered by Davee
&nbsp;
	http://lolhax.org
	02/12/2011
*/</span>
&nbsp;
<span style="color: #339933;">#include </span>
<span style="color: #339933;">#include </span>
<span style="color: #339933;">#include </span>
&nbsp;
<span style="color: #993333;">typedef</span> <span style="color: #993333;">uint32_t</span> u32<span style="color: #339933;">;</span>
<span style="color: #993333;">typedef</span> <span style="color: #993333;">uint8_t</span> u8<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #339933;">#define TABLE_SIZE (0x100)</span>
&nbsp;
u8 g_ciphertext<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> 
<span style="color: #009900;">&#123;</span> 
	<span style="color: #208080;">0x91</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xD8</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xF1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x6D</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x70</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x20</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x3A</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xAB</span><span style="color: #339933;">,</span> 
	<span style="color: #208080;">0x67</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x9A</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x0B</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xC4</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x91</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xFB</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xC7</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x66</span><span style="color: #339933;">,</span> 
	<span style="color: #208080;">0x0F</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xFC</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xCD</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xCC</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xB4</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x02</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xFA</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xD7</span><span style="color: #339933;">,</span> 
	<span style="color: #208080;">0x77</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xB4</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x54</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x38</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xAB</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x1F</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x0E</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xE3</span><span style="color: #339933;">,</span> 
	<span style="color: #208080;">0x8E</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xD3</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x0D</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xEB</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x99</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xC3</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x93</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xFE</span><span style="color: #339933;">,</span> 
	<span style="color: #208080;">0xD1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x2B</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x1B</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x11</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xC6</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x11</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xEF</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xC8</span><span style="color: #339933;">,</span> 
	<span style="color: #208080;">0xCA</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x2F</span><span style="color: #339933;">,</span> 
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">static</span> __inline__ u32 rotr<span style="color: #009900;">&#40;</span>u32 data<span style="color: #339933;">,</span> u32 bits<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #808080; font-style: italic;">/* rotate right */</span>
	<span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>data <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;&amp;</span>gt<span style="color: #339933;">;</span> bits<span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>data <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> bits<span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">32</span> <span style="color: #339933;">-</span> bits<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> decrypt_data<span style="color: #009900;">&#40;</span>u8 <span style="color: #339933;">*</span>table<span style="color: #339933;">,</span> u8 <span style="color: #339933;">*</span>data<span style="color: #339933;">,</span> u32 size<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span> i<span style="color: #339933;">;</span>
	u8 bl <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> dl <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> dh <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* do the mangle algorithm */</span>
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> size<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #808080; font-style: italic;">/* read the table and swap bytes */</span>
		dl <span style="color: #339933;">=</span> table<span style="color: #009900;">&#91;</span>i <span style="color: #339933;">+</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		dh <span style="color: #339933;">=</span> table<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#40;</span>bl <span style="color: #339933;">+</span> dl<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #208080;">0xFF</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		table<span style="color: #009900;">&#91;</span>i <span style="color: #339933;">+</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> dh<span style="color: #339933;">;</span>
		table<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#40;</span>bl <span style="color: #339933;">+</span> dl<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #208080;">0xFF</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> dl<span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">/* set bl */</span>
		bl <span style="color: #339933;">=</span> table<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#40;</span>dl <span style="color: #339933;">+</span> dh<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #208080;">0xFF</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">/* do the decrypt (or encrypt...) of the data */</span>
		data<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">^=</span> bl<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> generate_table<span style="color: #009900;">&#40;</span>u8 <span style="color: #339933;">*</span>table<span style="color: #339933;">,</span> u32 seed<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span> i<span style="color: #339933;">;</span>
	u8 seed_indx <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* stage 1: set table value as index respectfully */</span>
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> TABLE_SIZE<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> table<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> i<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* stage 2: seed the table */</span>
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> TABLE_SIZE<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #808080; font-style: italic;">/* update seed index */</span>
		seed_indx <span style="color: #339933;">+=</span> <span style="color: #009900;">&#40;</span>table<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>seed <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #208080;">0xFF</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">/* rotate the seed 8 bits right */</span>
		seed <span style="color: #339933;">=</span> rotr<span style="color: #009900;">&#40;</span>seed<span style="color: #339933;">,</span> <span style="color: #0000dd;">8</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">/* backup element */</span>
		u8 temp <span style="color: #339933;">=</span> table<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">/* byte swap */</span>
		table<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> table<span style="color: #009900;">&#91;</span>seed_indx<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		table<span style="color: #009900;">&#91;</span>seed_indx<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> temp<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span> i<span style="color: #339933;">;</span>
	u8 table<span style="color: #009900;">&#91;</span>TABLE_SIZE<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* do decrypt etc */</span>
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Decrypter, by Davee<span style="color: #000099; font-weight: bold;">\n</span>http://lolhax.org<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* generate the table */</span>
	generate_table<span style="color: #009900;">&#40;</span>table<span style="color: #339933;">,</span> <span style="color: #208080;">0xDEADBEEF</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//0xAFC2BFA3); //3A3BFC2AF);//0xDEADBEEF);</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* decrypt data */</span>
	decrypt_data<span style="color: #009900;">&#40;</span>table<span style="color: #339933;">,</span> g_ciphertext<span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>g_ciphertext<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* write decrypted data */</span>
	FILE <span style="color: #339933;">*</span>fd <span style="color: #339933;">=</span> <span style="color: #000066;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;decrypt.bin&quot;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;wb&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* check for error */</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>fd <span style="color: #339933;">==</span> NULL<span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #808080; font-style: italic;">/* rage */</span>
		<span style="color: #b1b100;">return</span> <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;fuuuuuuuuuuuuuuuuu (aka cant open decrypt.bin)<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* write */</span>
	<span style="color: #000066;">fwrite</span><span style="color: #009900;">&#40;</span>g_ciphertext<span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>g_ciphertext<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> fd<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066;">fclose</span><span style="color: #009900;">&#40;</span>fd<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;done. check out decrypt.bin<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066;">getchar</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

</div>
<p>&nbsp;</p>
<p>It successfully decrypted the message and decrypt.bin contained: &#8220;GET /15b436de1f9107f3778aad525e5d0b20.js HTTP/1.1.&#8221;. Ok, maybe I&#8217;m not done, <a href="http://www.canyoucrackit.co.uk/15b436de1f9107f3778aad525e5d0b20.js" target="_blank">following</a> this GET request I got to &#8220;stage 2&#8243;. A VM in javascript.</p>
<hr />
<p><strong>Stage 2 – Javascript VM</strong><br />
This, is kind of like an emulator, you get a description of a &#8220;processor&#8221; and you follow the specification. If you do it correctly, you get the answer, easy.</p>
<p>I started off simply decoding the instructions and writing them to a file, like a disassembly. Then once I was happy that it was decoding it correctly, I scrapped together a simple tool interpret the instructions and then dump everything. Code below:<br />
<a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID265605027'), this, 'Show &#9660;', 'Hide &#9650;');">Show &#9660;</a></p>
<div id='SID265605027' style='display:none;'>

<div class="wp_syntax"><table><tr><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/*
	http://www.canyoucrackit.co.uk VM decoder + interpreter
	Written by Davee
&nbsp;
	http://lolhax.org
	02/12/2011
*/</span>
<span style="color: #339933;">#include </span>
<span style="color: #339933;">#include </span>
&nbsp;
<span style="color: #993333;">typedef</span> <span style="color: #993333;">uint32_t</span> u32<span style="color: #339933;">;</span>
<span style="color: #993333;">typedef</span> <span style="color: #993333;">uint8_t</span> u8<span style="color: #339933;">;</span>
&nbsp;
u8 prog<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #208080;">0x31</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x04</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x33</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xaa</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x40</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x02</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x80</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x03</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x52</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x72</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x01</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x73</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x01</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xb2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x50</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x30</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x14</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xc0</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x01</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x80</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x10</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x10</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span>
&nbsp;
    <span style="color: #208080;">0x98</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xab</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd9</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xa1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x9f</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xa7</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x83</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x83</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xb1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x34</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xb6</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe4</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xb7</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xca</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xb8</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0xc9</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xb8</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x0e</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xbd</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x7d</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x0f</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xc0</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd9</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x03</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xc5</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x3a</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xc6</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xc7</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xc8</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xc9</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0xca</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xcb</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xcc</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xcd</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xce</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xcf</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd0</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd3</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd4</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd5</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd6</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd7</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd8</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd9</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0xda</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xdb</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xa9</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xcd</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xdf</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xdf</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe0</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe3</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe4</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe5</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe6</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe7</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe8</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe9</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x26</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xeb</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xec</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xed</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xee</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xef</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf0</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf3</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf4</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf5</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf6</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf7</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf8</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf9</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x7d</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x1f</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x15</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x60</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x4d</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x4d</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x52</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x7d</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x0e</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x27</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x6d</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x10</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x6d</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x5a</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x06</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x56</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x47</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x14</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x42</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x0e</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xb6</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xb2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xb2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe6</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xeb</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xb4</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x83</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x8e</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd7</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe5</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd4</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd9</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0xc3</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf0</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x80</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x95</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x82</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x82</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x9a</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xbd</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x95</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xa4</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x8d</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x9a</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x2b</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x30</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x69</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x4a</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x69</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x65</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x55</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x1c</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x7b</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x69</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x1c</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x6e</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x04</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x74</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x35</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x21</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x26</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x2f</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x60</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x03</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x4e</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x37</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x1e</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x33</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x54</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x39</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe6</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xba</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xb4</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xa2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xad</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xa4</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xc5</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x95</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xc8</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0xc1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe4</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x8a</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xec</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe7</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x92</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x8b</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe8</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x81</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf0</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xad</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x98</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xa4</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd0</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xc0</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x8d</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0xac</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x22</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x52</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x65</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x7e</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x27</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x2b</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x5a</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x12</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x61</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x0a</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x01</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x7a</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x6b</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x1d</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x67</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x75</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x70</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x6c</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x1b</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x11</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x25</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x25</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x70</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x7f</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x7e</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x67</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x63</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x30</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x3c</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x6d</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x6a</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x01</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x51</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x59</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x5f</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x56</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x13</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x10</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x43</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x19</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x18</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe5</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe0</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xbe</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xbf</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xbd</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe9</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0xf0</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf9</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xfa</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xab</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x8f</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xc1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xdf</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xcf</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x8d</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf8</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe7</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe9</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x93</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x8e</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0xec</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf5</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xc8</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span>
&nbsp;
    <span style="color: #208080;">0x37</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x7a</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x07</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x11</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x1f</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x1d</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x68</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x25</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x32</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x77</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x1e</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x62</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x23</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x5b</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x47</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x55</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x53</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x30</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x11</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x42</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf6</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xb1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe6</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xc3</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xcc</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf8</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xc5</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe4</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xcc</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xc0</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd3</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x85</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xfd</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x9a</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe3</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe6</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x81</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xb5</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xbb</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd7</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xcd</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x87</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xa3</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd3</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x6b</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x36</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x6f</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x6f</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x66</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x55</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x30</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x16</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x45</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x5e</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x09</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x74</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x5c</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x3f</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x29</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x2b</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x66</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x3d</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x0d</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x02</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x30</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x28</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x35</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x15</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x09</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x15</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xdd</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xec</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xb8</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xfb</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd8</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xcb</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd8</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd1</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x8b</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd5</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x82</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd9</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x9a</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x92</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xab</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe8</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xa6</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd6</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd0</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x8c</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xaa</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x94</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0xcf</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x45</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x46</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x67</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x20</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x7d</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x44</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x14</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x6b</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x45</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x6d</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x54</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x03</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x17</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x60</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x62</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x55</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x5a</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x4a</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x66</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x61</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x11</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x57</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x68</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x75</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x05</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x62</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x36</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x7d</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x02</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x10</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x4b</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x08</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x22</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x42</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x32</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xba</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xb9</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd6</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xb9</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xff</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xc3</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe9</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x8a</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x8f</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xc1</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x8f</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xb8</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xa4</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x96</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x8f</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x81</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xb1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x8d</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x89</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xcc</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd4</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x78</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x76</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x61</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x72</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x3e</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x37</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x23</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x56</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x73</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x71</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x79</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x63</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x7c</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x08</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x11</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x20</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x69</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x7a</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x14</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x68</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x05</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x21</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x1e</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x32</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x27</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x59</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xb7</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xcf</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xab</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xdd</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xd5</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xcc</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x97</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x93</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xf2</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0xe7</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xc0</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xeb</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xff</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xe9</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xa3</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xbf</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xa1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xab</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x8b</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xbb</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x9e</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x9e</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x8c</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xa0</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xc1</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x9b</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x5a</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x2f</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x2f</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x4e</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x4e</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span>
    <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">typedef</span> <span style="color: #993333;">struct</span>
<span style="color: #009900;">&#123;</span>
	u8 ip<span style="color: #339933;">;</span>
&nbsp;
	u8 r<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">6</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
	u8 fl<span style="color: #339933;">;</span>
&nbsp;
	u32 firmware<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> cpu_info<span style="color: #339933;">;</span>
&nbsp;
cpu_info cpu <span style="color: #339933;">=</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> 
	<span style="color: #009900;">&#123;</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span>
	<span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x10</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #666666; font-style: italic;">//cs, ds</span>
&nbsp;
	<span style="color: #208080;">0x00</span><span style="color: #339933;">,</span>
	<span style="color: #009900;">&#123;</span> <span style="color: #208080;">0xd2ab1f05</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xda13f110</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> displayDebug<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;-----------<span style="color: #000099; font-weight: bold;">\n</span>DEBUG INFO:<span style="color: #000099; font-weight: bold;">\n</span>ip = 0x%02X<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> cpu.<span style="color: #202020;">ip</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #993333;">int</span> i<span style="color: #339933;">;</span>
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #0000dd;">4</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> 	<span style="color: #009900;">&#123;</span> 		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;r%i = 0x%02X<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> i<span style="color: #339933;">,</span> cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 	<span style="color: #009900;">&#125;</span> 	 	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;cs = 0x%02X<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;ds = 0x%02X<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">5</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 	 	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;fl = 0x%02X<span style="color: #000099; font-weight: bold;">\n</span>------------<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> cpu.<span style="color: #202020;">fl</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span> <span style="color: #993333;">void</span> execute<span style="color: #009900;">&#40;</span>FILE <span style="color: #339933;">*</span>fd<span style="color: #339933;">,</span> u8 <span style="color: #339933;">*</span>prog<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> debug<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 	<span style="color: #993333;">int</span> halt <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> 	<span style="color: #993333;">int</span> loop <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> 	<span style="color: #993333;">int</span> break_on <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> 	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Starting execution...<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 	 	<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>halt<span style="color: #009900;">&#41;</span> 	<span style="color: #009900;">&#123;</span> 		u8 cs <span style="color: #339933;">=</span> cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> 		u32 address <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>cs <span style="color: #339933;">*</span> <span style="color: #208080;">0x10</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> cpu.<span style="color: #202020;">ip</span><span style="color: #339933;">;</span> 		 		u8 inst <span style="color: #339933;">=</span> prog<span style="color: #009900;">&#91;</span>address<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> 		 		u8 opcode <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>inst <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000dd;">5</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #208080;">0x7</span><span style="color: #339933;">;</span>
		u8 mod <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>inst <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000dd;">4</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #208080;">0x1</span><span style="color: #339933;">;</span>
		u8 op1 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>inst <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #208080;">0xF</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		u8 op2 <span style="color: #339933;">=</span> prog<span style="color: #009900;">&#91;</span>address<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>debug<span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
                  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>loop<span style="color: #009900;">&#41;</span>
                  <span style="color: #009900;">&#123;</span>
                           loop<span style="color: #339933;">--;</span>
                           <span style="color: #009900;">&#125;</span>
                           <span style="color: #b1b100;">else</span>
                           <span style="color: #009900;">&#123;</span>
			u8 chr <span style="color: #339933;">=</span> <span style="color: #000066;">getchar</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>chr <span style="color: #339933;">==</span> <span style="color: #ff0000;">'r'</span><span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
				displayDebug<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
&nbsp;
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>chr <span style="color: #339933;">==</span> <span style="color: #ff0000;">'l'</span><span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
                    loop <span style="color: #339933;">=</span> <span style="color: #208080;">0x10</span><span style="color: #339933;">;</span>
                    <span style="color: #009900;">&#125;</span>
&nbsp;
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>chr <span style="color: #339933;">==</span> <span style="color: #ff0000;">'t'</span><span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
				loop <span style="color: #339933;">=</span> <span style="color: #208080;">0x50</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
&nbsp;
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>chr <span style="color: #339933;">==</span> <span style="color: #ff0000;">'b'</span><span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
				break_on <span style="color: #339933;">=</span> <span style="color: #208080;">0x100</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
                    <span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>break_on<span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>cs<span style="color: #339933;">*</span><span style="color: #208080;">0x10</span> <span style="color: #339933;">+</span> cpu.<span style="color: #202020;">ip</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> break_on<span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
				loop <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
				break_on <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
				<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Break at 0x100<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;0x%08X: &quot;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span>cs<span style="color: #339933;">*</span><span style="color: #208080;">0x10</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> cpu.<span style="color: #202020;">ip</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		u8 prev_ip <span style="color: #339933;">=</span> cpu.<span style="color: #202020;">ip</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span>opcode<span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">:</span> <span style="color: #666666; font-style: italic;">//jmp</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>mod<span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;jmp 0x%X:r%i&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op2<span style="color: #339933;">,</span> op1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> op2<span style="color: #339933;">;</span>
					cpu.<span style="color: #202020;">ip</span> <span style="color: #339933;">=</span> cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op1<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">else</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;jmp r%i&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					cpu.<span style="color: #202020;">ip</span> <span style="color: #339933;">=</span> cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op1<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
&nbsp;
				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
&nbsp;
			<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">:</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>mod<span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;movr r%i, 0x%X&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #339933;">,</span> op2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op1<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> op2<span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">else</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;movr r%i, r%i&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #339933;">,</span> op2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op1<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op2<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				cpu.<span style="color: #202020;">ip</span> <span style="color: #339933;">+=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
								<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>cpu.<span style="color: #202020;">ip</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #0000dd;">2</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> prev_ip <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;=</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+=</span> <span style="color: #208080;">0x10</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
&nbsp;
			<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">:</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>mod<span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;movm [ds:r%i], r%i&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #339933;">,</span> op2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					prog<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#40;</span>cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">5</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">*</span><span style="color: #208080;">0x10</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op1<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op2<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">else</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;movm r%i, [ds:r%i]&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #339933;">,</span> op2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op1<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> prog<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#40;</span>cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">5</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">*</span><span style="color: #208080;">0x10</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op2<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				cpu.<span style="color: #202020;">ip</span> <span style="color: #339933;">+=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
								<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>cpu.<span style="color: #202020;">ip</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #0000dd;">2</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> prev_ip <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;=</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+=</span> <span style="color: #208080;">0x10</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">:</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>mod<span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;add r%i 0x%X&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #339933;">,</span> op2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op1<span style="color: #009900;">&#93;</span> <span style="color: #339933;">+=</span> op2<span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">else</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;add r%i, r%i&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #339933;">,</span> op2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op1<span style="color: #009900;">&#93;</span> <span style="color: #339933;">+=</span> cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op2<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
&nbsp;
				cpu.<span style="color: #202020;">ip</span> <span style="color: #339933;">+=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>cpu.<span style="color: #202020;">ip</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #0000dd;">2</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> prev_ip <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;=</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+=</span> <span style="color: #208080;">0x10</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">4</span><span style="color: #339933;">:</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>mod<span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;xor r%i, 0x%X&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #339933;">,</span> op2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op1<span style="color: #009900;">&#93;</span> <span style="color: #339933;">^=</span> op2<span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">else</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;xor r%i, r%i&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #339933;">,</span> op2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op1<span style="color: #009900;">&#93;</span> <span style="color: #339933;">^=</span> cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op2<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
&nbsp;
				cpu.<span style="color: #202020;">ip</span> <span style="color: #339933;">+=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
								<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>cpu.<span style="color: #202020;">ip</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #0000dd;">2</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> prev_ip <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;=</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+=</span> <span style="color: #208080;">0x10</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
&nbsp;
			<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">5</span><span style="color: #339933;">:</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>mod<span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;cmp r%i, 0x%X&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #339933;">,</span> op2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op1<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> op2<span style="color: #009900;">&#41;</span> 					<span style="color: #009900;">&#123;</span> 						cpu.<span style="color: #202020;">fl</span> <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span> 					<span style="color: #009900;">&#125;</span> 					 					<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op1<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> op2<span style="color: #009900;">&#41;</span>
					<span style="color: #009900;">&#123;</span>
						cpu.<span style="color: #202020;">fl</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
					<span style="color: #009900;">&#125;</span>
&nbsp;
					<span style="color: #b1b100;">else</span>
					<span style="color: #009900;">&#123;</span>
						cpu.<span style="color: #202020;">fl</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
					<span style="color: #009900;">&#125;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">else</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;cmp r%i, r%i&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #339933;">,</span> op2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
					<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op1<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op2<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> 					<span style="color: #009900;">&#123;</span> 						cpu.<span style="color: #202020;">fl</span> <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span> 					<span style="color: #009900;">&#125;</span> 					 					<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op1<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op2<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
					<span style="color: #009900;">&#123;</span>
						cpu.<span style="color: #202020;">fl</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
					<span style="color: #009900;">&#125;</span>
&nbsp;
					<span style="color: #b1b100;">else</span>
					<span style="color: #009900;">&#123;</span>
						cpu.<span style="color: #202020;">fl</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
					<span style="color: #009900;">&#125;</span>
				<span style="color: #009900;">&#125;</span>
&nbsp;
				cpu.<span style="color: #202020;">ip</span> <span style="color: #339933;">+=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>cpu.<span style="color: #202020;">ip</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #0000dd;">2</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> prev_ip <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;=</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+=</span> <span style="color: #208080;">0x10</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
&nbsp;
			<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">6</span><span style="color: #339933;">:</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>mod<span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;jmpe 0x%X:r%i&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op2<span style="color: #339933;">,</span> op1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
					<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>cpu.<span style="color: #202020;">fl</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>
					<span style="color: #009900;">&#123;</span>
						cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> op2<span style="color: #339933;">;</span>
						cpu.<span style="color: #202020;">ip</span> <span style="color: #339933;">=</span> cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op1<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
					<span style="color: #009900;">&#125;</span>
					<span style="color: #b1b100;">else</span>
					<span style="color: #009900;">&#123;</span>
						cpu.<span style="color: #202020;">ip</span><span style="color: #339933;">++;</span>
										<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>cpu.<span style="color: #202020;">ip</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+=</span> <span style="color: #208080;">0x10</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
					<span style="color: #009900;">&#125;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">else</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;jmpe r%i&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
					<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>cpu.<span style="color: #202020;">fl</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>
					<span style="color: #009900;">&#123;</span>
						cpu.<span style="color: #202020;">ip</span> <span style="color: #339933;">=</span> cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span>op1<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
					<span style="color: #009900;">&#125;</span>
					<span style="color: #b1b100;">else</span>
					<span style="color: #009900;">&#123;</span>
						cpu.<span style="color: #202020;">ip</span><span style="color: #339933;">++;</span>
										<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>cpu.<span style="color: #202020;">ip</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+=</span> <span style="color: #208080;">0x10</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
					<span style="color: #009900;">&#125;</span>
				<span style="color: #009900;">&#125;</span>
&nbsp;
				<span style="color: #666666; font-style: italic;">//i++;</span>
				<span style="color: #666666; font-style: italic;">//cpu.</span>
				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">7</span><span style="color: #339933;">:</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>mod<span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;hlt&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">else</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;hlt&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
&nbsp;
				halt <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
				cpu.<span style="color: #202020;">ip</span><span style="color: #339933;">++;</span>
&nbsp;
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>cpu.<span style="color: #202020;">ip</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					cpu.<span style="color: #202020;">r</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+=</span> <span style="color: #208080;">0x10</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
&nbsp;
				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Execution terminated<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> disassemble<span style="color: #009900;">&#40;</span>FILE <span style="color: #339933;">*</span>fd<span style="color: #339933;">,</span> u8 <span style="color: #339933;">*</span>prog<span style="color: #339933;">,</span> u32 prog_size<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span> i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		u8 opcode <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>prog<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000dd;">5</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #208080;">0x7</span><span style="color: #339933;">;</span>
		u8 mod <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>prog<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000dd;">4</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #208080;">0x1</span><span style="color: #339933;">;</span>
		u8 op1 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>prog<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #208080;">0xF</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;0x%08X: &quot;</span><span style="color: #339933;">,</span> i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #993333;">int</span> i_prev <span style="color: #339933;">=</span> i<span style="color: #339933;">;</span>
		<span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span>opcode<span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">:</span> <span style="color: #666666; font-style: italic;">//jmp</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>mod<span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;jmp 0x%X:r%i&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> prog<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> op1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					i <span style="color: #339933;">+=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">else</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;jmp r%i&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					i<span style="color: #339933;">++;</span>
				<span style="color: #009900;">&#125;</span>
&nbsp;
				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
&nbsp;
			<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">:</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>mod<span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;movr r%i, 0x%X&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #339933;">,</span> prog<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">else</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;movr r%i, r%i&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #339933;">,</span> prog<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
&nbsp;
				i <span style="color: #339933;">+=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
&nbsp;
			<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">:</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>mod<span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;movm [ds:r%i], r%i&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #339933;">,</span> prog<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">else</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;movm r%i, [ds:r%i]&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #339933;">,</span> prog<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
&nbsp;
				i <span style="color: #339933;">+=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">:</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>mod<span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;add r%i 0x%X&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #339933;">,</span> prog<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">else</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;add r%i, r%i&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #339933;">,</span> prog<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
&nbsp;
				i <span style="color: #339933;">+=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">4</span><span style="color: #339933;">:</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>mod<span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;xor r%i, 0x%X&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #339933;">,</span> prog<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">else</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;xor r%i, r%i&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #339933;">,</span> prog<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
&nbsp;
				i <span style="color: #339933;">+=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">5</span><span style="color: #339933;">:</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>mod<span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;cmp r%i, 0x%X&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #339933;">,</span> prog<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">else</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;cmp r%i, r%i&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #339933;">,</span> prog<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
&nbsp;
				i <span style="color: #339933;">+=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">6</span><span style="color: #339933;">:</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>mod<span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;jmpe r%i:r%i&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> prog<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> op1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					i <span style="color: #339933;">+=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">else</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;jmpe r%i&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> op1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					i<span style="color: #339933;">++;</span>
				<span style="color: #009900;">&#125;</span>
&nbsp;
				<span style="color: #666666; font-style: italic;">//i++;</span>
				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">7</span><span style="color: #339933;">:</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>mod<span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;hlt&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">else</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;hlt&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
&nbsp;
				i<span style="color: #339933;">++;</span>
				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	FILE <span style="color: #339933;">*</span>fd <span style="color: #339933;">=</span><span style="color: #000066;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;output_hex.bin&quot;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;wb&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">//disassemble(fd, prog, sizeof(prog));</span>
	execute<span style="color: #009900;">&#40;</span>fd<span style="color: #339933;">,</span> prog<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066;">fwrite</span><span style="color: #009900;">&#40;</span>prog<span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>prog<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> fd<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066;">fclose</span><span style="color: #009900;">&#40;</span>fd<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

</div>
<p>&nbsp;</p>
<p>Then, the output_hex.bin contained another GET method: &#8220;GET /da75370fe15c4148bd4ceec861fbdaa5.exe HTTP/1.0&#8243;. Ok, cool. </p>
<hr />
<p><strong>Stage 3 &#8211; License check</strong><br />
After downloading and having a quick peek at the assembly, I saw it didn&#8217;t do that much. After running, it moaned about no hostname, so naturally, I set it to &#8220;canyoucrackit.co.uk&#8221; BAM, it screamed at me again, complaining about a license.txt.</p>
<p>I fully disassembled the executable and I quickly found the check, it was doing a scanf of a string from the license onto the stack and performing a check of the first 4 hex bytes.</p>
<p>This check looked for the values 67 63 68 71 in LE. This, translates to gchq, a UK government organisation. Regardless, I stormed through the rest of the code and saw that it does a &#8220;crypt&#8221; call on the license + 4, with a salt (or key or w/e).</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">char</span> <span style="color: #339933;">*</span>c <span style="color: #339933;">=</span> crypt<span style="color: #009900;">&#40;</span>license<span style="color: #339933;">+</span><span style="color: #0000dd;">4</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;hqDTK7b8K2rvw&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">strcmp</span><span style="color: #009900;">&#40;</span>c<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;hqDTK7b8K2rvw&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	valid_license <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Now, I know for a fact that crypt is a one-way function, so I didn&#8217;t bother with figuring out the original license text needed. If you guys know me, I like exploits. I saw one earlier on aswell. I jumped right back to the &#8220;scanf&#8221; call onto the stack and checked if I can cause a <a href="http://en.wikipedia.org/wiki/Buffer_overflow" target="_blank">buffer overflow</a>. It turned out I could! valid_license was stored further on the stack, so overflowing with a big string can set valid_license to non-zero passing that check! huzzah!</p>
<p>I used this license:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="c" style="font-family:monospace;">gchq<span style="color: #339933;">------------</span>lolhax.<span style="color: #202020;">org</span><span style="color: #339933;">------</span>Davee<span style="color: #339933;">-----------</span></pre></td></tr></table></div>

<p>So now, running the application I got this result:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="r" style="font-family:monospace;">keygen.exe
&nbsp;
loading stage1 license key(s)...
loading stage2 license key(s)...
&nbsp;
request:
&nbsp;
GET /hqDTK7b8K2rvw/2d2d2d2d/686c6f6c/6f2e7861/key.txt HTTP/1.0
&nbsp;
response:
&nbsp;
HTTP/1.1 404 Not Found
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
Date: Sat, 02 Dec 2011 23:44:59 GMT
Connection: close
Content-Length: 315
&nbsp;
Not Found
HTTP Error 404. The requested resource is not found.</pre></td></tr></table></div>

<p>Error, 404, odd. It tried to request &#8220;GET /hqDTK7b8K2rvw/2d2d2d2d/686c6f6c/6f2e7861/key.txt HTTP/1.0&#8243;. I recognise those HEX values. The first one looked the the hash check, the 2d2d2d2d, 686c6f6c and 6f2e7861 looked like data out of my license file. After confirming with the assembly, this information was true. the format of the license was:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="f" style="font-family:monospace;">[4 bytes header]
[8 bytes password]
[4 bytes first hex]
[4 bytes second hex]
[4 bytes third hex]
[0x18 bytes to bypass check]</pre></td></tr></table></div>

<p>Now, what the hell were these 4 bytes? They weren&#8217;t inside the application. I sat around, stressing over what these numbers are. I guessed a few of course, no luck. After a nice chill and a cup of tea, it struck me. There was a spare value in the first executable, which the program just jumped over. There was also the VM&#8217;s firmware version which was not used. These 3 unreferenced values may be the answer!</p>
<p>So I plugged them in, and what do you know! I don&#8217;t get the answer. Such a perfect scenario, but I still fall victim to this challenge.</p>
<p>Later on though, I thought I should try plug it into the browser&#8230; well, what do you know. It worked.<br />
<a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID498952030'), this, 'Show &#9660;', 'Hide &#9650;');">Show &#9660;</a></p>
<div id='SID498952030' style='display:none;'>

<div class="wp_syntax"><table><tr><td class="code"><pre class="f" style="font-family:monospace;">Pr0t3ct!on#cyber_security@12*12.2011+</pre></td></tr></table></div>

<p><a href="http://www.canyoucrackit.co.uk/hqDTK7b8K2rvw/a3bfc2af/d2ab1f05/da13f110/key.txt" target="_blank">Link</a>
</div>
<hr />
<p><strong>Completed</strong><br />
The winners’ page takes you to an application form to apply for a position within GCHQ. Shame I don&#8217;t have a degree yet  <img src='http://lolhax.org/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>How about that eh? It&#8217;s a nice little challenge and I hoped you all attempted it your best before reading this!</p>
<p>- Davee</p>
<p>PS, due a grammar/spell check tomorrow.</p>
]]></content:encoded>
			<wfw:commentRss>http://lolhax.org/2011/12/03/can-you-crack-it/feed/</wfw:commentRss>
		<slash:comments>44</slash:comments>
		</item>
		<item>
		<title>&#8220;Chronoswitch&#8221; Downgrader 5.0. Advanced 09g Support!</title>
		<link>http://lolhax.org/2011/09/01/chronoswitch-downgrader-5-0-advanced-09g-support/</link>
		<comments>http://lolhax.org/2011/09/01/chronoswitch-downgrader-5-0-advanced-09g-support/#comments</comments>
		<pubDate>Thu, 01 Sep 2011 04:39:35 +0000</pubDate>
		<dc:creator>Davee</dc:creator>
				<category><![CDATA[PlayStation Portable Development]]></category>

		<guid isPermaLink="false">http://lolhax.org/?p=99</guid>
		<description><![CDATA[Tweet As an ongoing project, me and some1 have been enhancing this downgrader from birth on the 6.31/6.35 firmwares. This multi-firmware downgrader allows you to install a lower (or higher) firmware without any fuss. No complex flash0 sharing, just running the firmware update. However, there comes restriction with PSP models and compatible firmware. For example, [...]]]></description>
				<content:encoded><![CDATA[<div class="wp_twitter_button" style="float: right; margin-left: 10px;">
					<a href="http://twitter.com/share?counturl=http%3A%2F%2Flolhax.org%2F2011%2F09%2F01%2Fchronoswitch-downgrader-5-0-advanced-09g-support%2F" class="twitter-share-button" data-url="http://lolhax.org/2011/09/01/chronoswitch-downgrader-5-0-advanced-09g-support/" data-count="horizontal" data-via="DaveeFTW" data-lang="" data-text="">Tweet</a><br />
					<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
				</div>
<p>As an ongoing project, me and some1 have been enhancing this downgrader from birth on the 6.31/6.35 firmwares. This multi-firmware downgrader allows you to install a lower (or higher) firmware without any fuss. No complex flash0 sharing, just running the firmware update.<br />
However, there comes restriction with PSP models and compatible firmware. For example, a PSPgo cannot run 1.50 as there are no drivers for the system and the IPL format is incompatible. Much like this, the PSP 3000 09g is unable to install firmwares &lt; 6.30 which removes it&#8217;s ability to appreciate the flexibility of permanent custom firmware.</p>
<p>This is no longer the case.<br />
<span id="more-99"></span><br />
It started off with rumours of 09g systems being &#8220;converted&#8221; to 04g systems with some sort of Sony equipment. I explored the firmware comparing 04g and 09g and there is little difference between the modules, so I looked into what makes a 04g and 09g different. I got various testers (named below) to give me information on their IDStorage and internal system data (baryon/tachyon). From this I can conclude that the only (effective) difference between a 04g and 09g is:</p>
<ul>
<li>Idstorage Certificates</li>
<li>Baryon Version</li>
</ul>
<p>Nothing more.</p>
<p>Now, it was time to see what it did with these values. I looked up the Idstorage certificates, it&#8217;s used in Chkreg and used internally to generate a model number. I found out that 6.20 and 6.39 sets the model of 09g to 04g, lovely.</p>
<p>The big game was the value that is returned from sceKernelGetModel(). Where is this taken from? Well, rooting back from the IPL, there is some code used to determine the model. This code used some strange code which turned out to be syscon code to obtain the Baryon version! The model number is determined from the Baryon.</p>
<p>Here is a little explanation of the Baryon version. When shifted 16 bits to the left, the least significant byte is the data used to determine a model number. the most significant nybble contains the SKU (PHAT, SLIM/3000, GO) and the lower specifies the model of that SKU. However, it got me thinking&#8230; Sony don&#8217;t know how many revision they will produce in the future. Checking 6.39 firmware, Sony does this: [0x2C -&gt; 0x2E] = 04g, [0x2E -&gt; 0x30] = 09g. Rightfully so, the Baryon version from the 04g&#8217;s I had was 0x2C and the 09g had 0x2E. Then i though, if they didn&#8217;t know the future, then what does 6.20 IPL do? After analysing I found this: [0x2C -&gt; 0x30] = 04g.</p>
<p>So, if for some reason you find your 09g on 6.20, the IPL is gonna think it is a 04g. Ok, we can work with that, Chkreg sets the certificate based model to 04g and the IPL sets Baryon based model to 04g. Now, lets get some 04g firmware in there!</p>
<p>After a bit of thought, I was sitting at the Downgrader source thinking &#8220;how can I install 6.20 on a 09g&#8221;. Obviously, run the update and spoof the model. However, changing sceKernelGetModel() did nothing. The model must be determined by some other way. So, 123 and I find Baryon code, yay. Once again, the 6.20 updater has the 09g Baryon as a 04g so if it could run on it&#8217;s own, it will flash 04g modules. But why did it error?</p>
<p>IDXFFFFFFFF. That&#8217;s the error, it&#8217;s to do with error opening INDEX.dat. Wait, a second, why is this happening? Oh wait, it thinks it&#8217;s a 04g, so it&#8217;s looking for index_04g.dat, doh!</p>
<p>Now, we got a new error. This is weird, it originates from a module called &#8220;sceChkuppkg&#8221;. Heh, cool. After a brief look at the internals a wild idstorage certificate check appeared. It checked a PSAR block against a list of data composing a PSCode. Easy fix, now the 6.20 could run. Once it had run, it rebooted.</p>
<p>Then it bricked.<br />
Yes i fucked up. By only hooking the usermode version of &#8220;sceChkuppkg&#8221; caused the updater to validate the blocks until it started to do something important&#8230; like read the rest of the firmware after wiping flash clean. Everybody, thank &#8220;Gamefreeak100&#8243; for the first brave and bold steps into a 09g permanent patch world, he sacrificed his PSP for it.</p>
<p>A lot of reading later, I identified the problem, fixed it and handed it to another brave tester. This time, it worked! 09g was running firmware 6.20 and for the last 12-ish hours it has been running fine. It retains the ability to update to &gt;= 6.30 and seems very stable!</p>
<p>A word of advice though, this is still experimental. The idstorage certificates do NOT belong to a 04g PSP and upgrading and downgrading from</p>
<p>This would not be possible without the combined efforts of:</p>
<ul>
<li>some1</li>
<li>Gamefreeak100</li>
<li>Chris10Lyn</li>
<li>snailface</li>
<li>XxGodOfWar2xX</li>
<li>mint</li>
<li>ponso21</li>
<li>Ryone</li>
<li>ROE-UR-BOAT</li>
<li>diggory</li>
<li>Yoti</li>
</ul>
<p>Give them all thanks! Leave a comment if you think you should be here!</p>
<p><a title="Chronoswitch Version 5" href="http://lolhax.org/davee/psp/chronoswitch/version_5.rar" target="_blank">Download</a></p>
]]></content:encoded>
			<wfw:commentRss>http://lolhax.org/2011/09/01/chronoswitch-downgrader-5-0-advanced-09g-support/feed/</wfw:commentRss>
		<slash:comments>499</slash:comments>
		</item>
		<item>
		<title>Emma is not well :(</title>
		<link>http://lolhax.org/2011/07/15/emma-is-not-well/</link>
		<comments>http://lolhax.org/2011/07/15/emma-is-not-well/#comments</comments>
		<pubDate>Fri, 15 Jul 2011 21:28:15 +0000</pubDate>
		<dc:creator>Davee</dc:creator>
				<category><![CDATA[Davee's Stuff]]></category>

		<guid isPermaLink="false">http://lolhax.org/?p=97</guid>
		<description><![CDATA[Tweet It sucks, my beautiful girlfriend&#8217;s fallen pretty ill and I want her to get real better soon. If you could spare some time I&#8217;d appreciate if you&#8217;d drop a comment. Hopefully she&#8217;ll be up and running soon again! She&#8217;s suffering from some migraines and it&#8217;s causing her a lot of pain. Leave something to [...]]]></description>
				<content:encoded><![CDATA[<div class="wp_twitter_button" style="float: right; margin-left: 10px;">
					<a href="http://twitter.com/share?counturl=http%3A%2F%2Flolhax.org%2F2011%2F07%2F15%2Femma-is-not-well%2F" class="twitter-share-button" data-url="http://lolhax.org/2011/07/15/emma-is-not-well/" data-count="horizontal" data-via="DaveeFTW" data-lang="" data-text="">Tweet</a><br />
					<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
				</div>
<p>It sucks, my beautiful girlfriend&#8217;s fallen pretty ill and I want her to get real better soon. If you could spare some time I&#8217;d appreciate if you&#8217;d drop a comment. Hopefully she&#8217;ll be up and running soon again!</p>
<p>She&#8217;s suffering from some migraines and it&#8217;s causing her a lot of pain. Leave something to help cheer her up, it&#8217;ll mean a lot to me!</p>
<p>Love you Emma <img src='http://lolhax.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  <3<br />
Cheers guys.</p>
]]></content:encoded>
			<wfw:commentRss>http://lolhax.org/2011/07/15/emma-is-not-well/feed/</wfw:commentRss>
		<slash:comments>56</slash:comments>
		</item>
		<item>
		<title>Arduino projects.</title>
		<link>http://lolhax.org/2011/07/15/arduino-projects/</link>
		<comments>http://lolhax.org/2011/07/15/arduino-projects/#comments</comments>
		<pubDate>Fri, 15 Jul 2011 21:20:56 +0000</pubDate>
		<dc:creator>Davee</dc:creator>
				<category><![CDATA[Electronics]]></category>

		<guid isPermaLink="false">http://lolhax.org/?p=93</guid>
		<description><![CDATA[Tweet Well, I&#8217;m no beginner to electronics, but this is my first microcontroller that can directly interface them! So yeah, pretty cool, never messed with AVR in my life, always used PIC for my USB controller. So I&#8217;ve been messing around a bit and I&#8217;ve done some very basic stuff working with components here and [...]]]></description>
				<content:encoded><![CDATA[<div class="wp_twitter_button" style="float: right; margin-left: 10px;">
					<a href="http://twitter.com/share?counturl=http%3A%2F%2Flolhax.org%2F2011%2F07%2F15%2Farduino-projects%2F" class="twitter-share-button" data-url="http://lolhax.org/2011/07/15/arduino-projects/" data-count="horizontal" data-via="DaveeFTW" data-lang="" data-text="">Tweet</a><br />
					<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
				</div>
<p>Well, I&#8217;m no beginner to electronics, but this is my first microcontroller that can directly interface them! So yeah, pretty cool, never messed with AVR in my life, always used PIC for my USB controller. So I&#8217;ve been messing around a bit and I&#8217;ve done some very basic stuff working with components here and there.</p>
<p>Read on to see the stuff I&#8217;ve done.<br />
<span id="more-93"></span><br />
First thing first was a test to get me warmed up to the equipment. I had a 7-segment display lying around and a 7-seg decoder to accompany it costing me only 4 digital pins. It also made the code a helluva lot easier, basically just reflecting the integer&#8217;s lower 4 bits to the decoder. So this was my first project.</p>
<p><iframe width="425" height="349" src="http://www.youtube.com/embed/uQOuugEEnbU" frameborder="0" allowfullscreen></iframe></p>
<p>Second was the addition of a PS1 controller to control the pulses. Like I said, i&#8217;ve had experience in electronics before so really it didn&#8217;t take look after reading a brutally-sound documentation on the controller&#8217;s protocol. I wrote a small library to interface the controller and then used that to control the 7 segment display. Pretty simple controller interface after that, X increments, O decrements and start resets the counting.</p>
<p><iframe width="425" height="349" src="http://www.youtube.com/embed/oNmhZUKVlIY" frameborder="0" allowfullscreen></iframe></p>
<p>Third was a simple task using the Arduino tone library. I salvaged a speaker out of some old spy toy. Then I looked up the sheet music for the tetris theme and huzza, mix that both together and you get a lovely tune, albeit with minor mistakes within. </p>
<p><iframe width="425" height="349" src="http://www.youtube.com/embed/8vyai3IQUP8" frameborder="0" allowfullscreen></iframe></p>
<p>Forth and the latest on youtube at least is the PS1 controller synth. Not so much a synth really, but you can see the name potential, yeah? Still using the monotone Arduino tone library (not any PWM based oscillator or external oscillators yet) I added the ability to use the PS1 controller to choose the note to play. IIRC X = C, O = D, [] = E, /\ = F, UP = G, RIGHT = A and DOWN = B.</p>
<p>Then there was the ability to change the semi-tone. L1 changes the pitch down a semitone and R1 up a semitone. This allows the full chromatic scale to be used <img src='http://lolhax.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Then you see the 7-segement display, right? That&#8217;s the current octave it is on. It should start on like 5 whichever has middle C and then you can change it to have lower octaves or higher (the lower octaves are sweet).</p>
<p>Press L3 and then use the right analogue stick to control the pitch according to the Y-axis. Pretty cool eh?</p>
<p><object width="425" height="349"><param name="movie" value="http://www.youtube.com/v/j5YJg-cFuIs?version=3&amp;hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/j5YJg-cFuIs?version=3&amp;hl=en_US" type="application/x-shockwave-flash" width="425" height="349" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Follow me on twitter: <a href="http://twitter.com/DaveeFTW" target="_blank">@DaveeFTW</a><br />
If you like what I do and you wanna buy me a beer (I am old enough now <img src='http://lolhax.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ), Donate! -><br />
-Davee</p>
]]></content:encoded>
			<wfw:commentRss>http://lolhax.org/2011/07/15/arduino-projects/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>KIRK 0&#215;10 Private Key</title>
		<link>http://lolhax.org/2011/07/06/kirk-0x10-private-key/</link>
		<comments>http://lolhax.org/2011/07/06/kirk-0x10-private-key/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 15:26:42 +0000</pubDate>
		<dc:creator>Davee</dc:creator>
				<category><![CDATA[PlayStation Portable Development]]></category>

		<guid isPermaLink="false">http://lolhax.org/?p=81</guid>
		<description><![CDATA[Tweet The private key for the KIRK 0&#215;10 functionality is known to be stored in a encrypted buffer of 0&#215;20 bytes. Proxima discovered that the KIRK 0&#215;10 operates as this: Kirk 0x10 - ECDSA Sign hash Invocation: u8 buffer&#91;0x34&#93; u8 encryptedprivatekey&#91;0x20&#93; - the private key returned by KIRK 0xC must be AES encrypted somehow u8 [...]]]></description>
				<content:encoded><![CDATA[<div class="wp_twitter_button" style="float: right; margin-left: 10px;">
					<a href="http://twitter.com/share?counturl=http%3A%2F%2Flolhax.org%2F2011%2F07%2F06%2Fkirk-0x10-private-key%2F" class="twitter-share-button" data-url="http://lolhax.org/2011/07/06/kirk-0x10-private-key/" data-count="horizontal" data-via="DaveeFTW" data-lang="" data-text="">Tweet</a><br />
					<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
				</div>
<p>The private key for the KIRK 0&#215;10 functionality is known to be stored in a encrypted buffer of 0&#215;20 bytes. Proxima discovered that the KIRK 0&#215;10 operates as this:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="c" style="font-family:monospace;">Kirk <span style="color: #208080;">0x10</span> <span style="color: #339933;">-</span> ECDSA Sign hash
Invocation<span style="color: #339933;">:</span>
u8 buffer<span style="color: #009900;">&#91;</span><span style="color: #208080;">0x34</span><span style="color: #009900;">&#93;</span>
u8 encryptedprivatekey<span style="color: #009900;">&#91;</span><span style="color: #208080;">0x20</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">-</span> the private key returned by KIRK <span style="color: #208080;">0xC</span> must be AES encrypted somehow
u8 SHA1hashofmessagetosign<span style="color: #009900;">&#91;</span><span style="color: #208080;">0x14</span><span style="color: #009900;">&#93;</span>
<span style="color: #000066;">memcpy</span><span style="color: #009900;">&#40;</span>buffer<span style="color: #339933;">,</span>encryptedprivatekey<span style="color: #339933;">,</span><span style="color: #208080;">0x20</span><span style="color: #009900;">&#41;</span>
<span style="color: #000066;">memcpy</span><span style="color: #009900;">&#40;</span>buffer<span style="color: #339933;">+</span><span style="color: #208080;">0x20</span><span style="color: #339933;">,</span>SHA1hashofmessagetosign<span style="color: #339933;">,</span><span style="color: #208080;">0x14</span><span style="color: #009900;">&#41;</span>
sceUtilsBufferCopyWithRange<span style="color: #009900;">&#40;</span>newsig<span style="color: #339933;">,</span><span style="color: #208080;">0x28</span><span style="color: #339933;">,</span>buffer<span style="color: #339933;">,</span><span style="color: #208080;">0x34</span><span style="color: #339933;">,</span><span style="color: #208080;">0x10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
newsig will have the r and s values <span style="color: #b1b100;">for</span> an ECDSA signature
&nbsp;
This isn<span style="color: #ff0000;">'t that useful since it is not clear how to encrypt the private key to sign the message. There are some examples in IDStorage where a pre-encrypted private key and public key pair can be used, but no general cases yet.</span></pre></td></tr></table></div>

<p><span id="more-81"></span><br />
With a bit more reading and working with Proxima, we have discovered how to encrypt and decrypt these keys! Below is code:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">typedef</span> <span style="color: #993333;">struct</span>
<span style="color: #009900;">&#123;</span>
	u8 fuseid<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">8</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>	<span style="color: #666666; font-style: italic;">//0</span>
	u8 mesh<span style="color: #009900;">&#91;</span><span style="color: #208080;">0x40</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>	<span style="color: #666666; font-style: italic;">//0x8</span>
<span style="color: #009900;">&#125;</span> keygen_data<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//0x48</span>
&nbsp;
u8 g_idstorage_dA_key<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #208080;">0x47</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x5E</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x09</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xF4</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xA2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x37</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xDA</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x9B</span><span style="color: #339933;">,</span> 
	<span style="color: #208080;">0xEF</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xFF</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x3B</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xC0</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x77</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x14</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x3D</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x8A</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> decrypt_kirk10_private<span style="color: #009900;">&#40;</span>u8 <span style="color: #339933;">*</span>dA_out<span style="color: #339933;">,</span> u8 <span style="color: #339933;">*</span>dA_enc<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span> i<span style="color: #339933;">,</span> k<span style="color: #339933;">;</span>
	keygen_data keydata<span style="color: #339933;">;</span>
	u8 subkey_1<span style="color: #009900;">&#91;</span><span style="color: #208080;">0x10</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> subkey_2<span style="color: #009900;">&#91;</span><span style="color: #208080;">0x10</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	rijndael_ctx aes_ctx<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* get the fuse id */</span>
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">4</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		keydata.<span style="color: #202020;">fuseid</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">3</span> <span style="color: #339933;">-</span> i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>u8 <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span><span style="color: #208080;">0xBC100090</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		keydata.<span style="color: #202020;">fuseid</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">7</span> <span style="color: #339933;">-</span> i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>u8 <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span><span style="color: #208080;">0xBC100090</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* set encryption key */</span>
	rijndael_set_key<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>aes_ctx<span style="color: #339933;">,</span> g_idstorage_dA_key<span style="color: #339933;">,</span> <span style="color: #0000dd;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* set the subkeys */</span>
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> <span style="color: #208080;">0x10</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #808080; font-style: italic;">/* set to the fuseid */</span>
		subkey_2<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> subkey_1<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> keydata.<span style="color: #202020;">fuseid</span><span style="color: #009900;">&#91;</span>i <span style="color: #339933;">%</span> <span style="color: #0000dd;">8</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* do aes crypto */</span>
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #808080; font-style: italic;">/* encrypt + decrypt */</span>
		rijndael_encrypt<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>aes_ctx<span style="color: #339933;">,</span> subkey_1<span style="color: #339933;">,</span> subkey_1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		rijndael_decrypt<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>aes_ctx<span style="color: #339933;">,</span> subkey_2<span style="color: #339933;">,</span> subkey_2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* set new key */</span>
	rijndael_set_key<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>aes_ctx<span style="color: #339933;">,</span> subkey_1<span style="color: #339933;">,</span> <span style="color: #0000dd;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* now lets make the key mesh */</span>
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #808080; font-style: italic;">/* do encryption in group of 3 */</span>
		<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>k <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> k <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">;</span> k<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			<span style="color: #808080; font-style: italic;">/* crypto */</span>
			rijndael_encrypt<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>aes_ctx<span style="color: #339933;">,</span> subkey_2<span style="color: #339933;">,</span> subkey_2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">/* copy to out block */</span>
		<span style="color: #000066;">memcpy</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>keydata.<span style="color: #202020;">mesh</span><span style="color: #009900;">&#91;</span>i <span style="color: #339933;">*</span> <span style="color: #208080;">0x10</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> subkey_2<span style="color: #339933;">,</span> <span style="color: #208080;">0x10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* set the key to the mesh */</span>
	rijndael_set_key<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>aes_ctx<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>keydata.<span style="color: #202020;">mesh</span><span style="color: #009900;">&#91;</span><span style="color: #208080;">0x20</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* do the encryption routines for the aes key */</span>
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #808080; font-style: italic;">/* encrypt the data */</span>
		rijndael_encrypt<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>aes_ctx<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>keydata.<span style="color: #202020;">mesh</span><span style="color: #009900;">&#91;</span><span style="color: #208080;">0x10</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>keydata.<span style="color: #202020;">mesh</span><span style="color: #009900;">&#91;</span><span style="color: #208080;">0x10</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* set the key to that mesh shit */</span>
	rijndael_set_key<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>aes_ctx<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>keydata.<span style="color: #202020;">mesh</span><span style="color: #009900;">&#91;</span><span style="color: #208080;">0x10</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* cbc decrypt the dA */</span>
	aes_cbc_decrypt<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>aes_ctx<span style="color: #339933;">,</span> dA_enc<span style="color: #339933;">,</span> dA_out<span style="color: #339933;">,</span> <span style="color: #208080;">0x20</span><span style="color: #339933;">,</span> NULL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> encrypt_kirk10_private<span style="color: #009900;">&#40;</span>u8 <span style="color: #339933;">*</span>dA_out<span style="color: #339933;">,</span> u8 <span style="color: #339933;">*</span>dA_dec<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span> i<span style="color: #339933;">,</span> k<span style="color: #339933;">;</span>
	keygen_data keydata<span style="color: #339933;">;</span>
	u8 subkey_1<span style="color: #009900;">&#91;</span><span style="color: #208080;">0x10</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> subkey_2<span style="color: #009900;">&#91;</span><span style="color: #208080;">0x10</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	rijndael_ctx aes_ctx<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* get the fuse id */</span>
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">4</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		keydata.<span style="color: #202020;">fuseid</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">3</span> <span style="color: #339933;">-</span> i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>u8 <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span><span style="color: #208080;">0xBC100090</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		keydata.<span style="color: #202020;">fuseid</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">7</span> <span style="color: #339933;">-</span> i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>u8 <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span><span style="color: #208080;">0xBC100090</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* set encryption key */</span>
	rijndael_set_key<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>aes_ctx<span style="color: #339933;">,</span> g_idstorage_dA_key<span style="color: #339933;">,</span> <span style="color: #0000dd;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* set the subkeys */</span>
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> <span style="color: #208080;">0x10</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #808080; font-style: italic;">/* set to the fuseid */</span>
		subkey_2<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> subkey_1<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> keydata.<span style="color: #202020;">fuseid</span><span style="color: #009900;">&#91;</span>i <span style="color: #339933;">%</span> <span style="color: #0000dd;">8</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* do aes crypto */</span>
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #808080; font-style: italic;">/* encrypt + decrypt */</span>
		rijndael_encrypt<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>aes_ctx<span style="color: #339933;">,</span> subkey_1<span style="color: #339933;">,</span> subkey_1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		rijndael_decrypt<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>aes_ctx<span style="color: #339933;">,</span> subkey_2<span style="color: #339933;">,</span> subkey_2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* set new key */</span>
	rijndael_set_key<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>aes_ctx<span style="color: #339933;">,</span> subkey_1<span style="color: #339933;">,</span> <span style="color: #0000dd;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* now lets make the key mesh */</span>
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #808080; font-style: italic;">/* do encryption in group of 3 */</span>
		<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>k <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> k <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">;</span> k<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			<span style="color: #808080; font-style: italic;">/* crypto */</span>
			rijndael_encrypt<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>aes_ctx<span style="color: #339933;">,</span> subkey_2<span style="color: #339933;">,</span> subkey_2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">/* copy to out block */</span>
		<span style="color: #000066;">memcpy</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>keydata.<span style="color: #202020;">mesh</span><span style="color: #009900;">&#91;</span>i <span style="color: #339933;">*</span> <span style="color: #208080;">0x10</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> subkey_2<span style="color: #339933;">,</span> <span style="color: #208080;">0x10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* set the key to the mesh */</span>
	rijndael_set_key<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>aes_ctx<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>keydata.<span style="color: #202020;">mesh</span><span style="color: #009900;">&#91;</span><span style="color: #208080;">0x20</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* do the encryption routines for the aes key */</span>
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #808080; font-style: italic;">/* encrypt the data */</span>
		rijndael_encrypt<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>aes_ctx<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>keydata.<span style="color: #202020;">mesh</span><span style="color: #009900;">&#91;</span><span style="color: #208080;">0x10</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>keydata.<span style="color: #202020;">mesh</span><span style="color: #009900;">&#91;</span><span style="color: #208080;">0x10</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* set the key to that mesh shit */</span>
	rijndael_set_key<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>aes_ctx<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>keydata.<span style="color: #202020;">mesh</span><span style="color: #009900;">&#91;</span><span style="color: #208080;">0x10</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* cbc encrypt the dA */</span>
	aes_cbc_encrypt<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>aes_ctx<span style="color: #339933;">,</span> dA_dec<span style="color: #339933;">,</span> dA_out<span style="color: #339933;">,</span> <span style="color: #208080;">0x20</span><span style="color: #339933;">,</span> NULL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>As you can see, there is common key generation code, you could make it into it&#8217;s own subroutine but I&#8217;ve laid out the code for clarity.<br />
-Davee</p>
]]></content:encoded>
			<wfw:commentRss>http://lolhax.org/2011/07/06/kirk-0x10-private-key/feed/</wfw:commentRss>
		<slash:comments>52</slash:comments>
		</item>
	</channel>
</rss>
