{"id":343096,"date":"2022-12-24T21:00:25","date_gmt":"2022-12-24T21:00:25","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=343096"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2022-12-24T21:00:25","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=343096","title":{"rendered":"<span>Once upon a time in Wasmwood \u0438\u043b\u0438 \u041a\u0430\u043a \u044f \u0440\u0435\u0432\u0435\u0440\u0441\u0438\u043b \u0438\u0433\u0440\u0443 \u043d\u0430 WASM<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h3>\u041f\u0440\u0435\u0430\u043c\u0431\u0443\u043b\u0430<\/h3>\n<p>\u041f\u0440\u043e\u0448\u0435\u043b \u0443\u0436\u0435 \u043c\u0435\u0441\u044f\u0446 \u0441 \u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430, \u043a\u0430\u043a \u044f \u043f\u043e\u043f\u044b\u0442\u0430\u043b \u0441\u0447\u0430\u0441\u0442\u044c\u044f \u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0440\u0435\u0432\u0435\u0440\u0441 \u0447\u0435\u043b\u043b\u0435\u043d\u0434\u0436\u0430, \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u043f\u0430\u0441\u0445\u0430\u043b\u043e\u043a \u0432 \u0438\u0433\u0440\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0432 WASM, \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 <a href=\"https:\/\/www.root-me.org\/\" rel=\"noopener noreferrer nofollow\">root-me<\/a>. \u0421 \u0442\u0435\u0445 \u043f\u043e\u0440 \u044f \u043f\u043e\u0434\u0443\u043c\u044b\u0432\u0430\u043b \u0437\u0430\u043f\u043e\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e \u043d\u0430 \u0445\u0430\u0431\u0440, \u043d\u043e \u043d\u0438\u043a\u0430\u043a \u0440\u0443\u043a\u0438 \u043d\u0435 \u0434\u043e\u0445\u043e\u0434\u0438\u043b\u0438. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0432\u0441\u0435 \u0436\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u043e\u0442\u044c \u0441\u0435\u0431\u044f. \u0421\u0442\u0430\u0442\u044c\u044e \u044f \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0430\u043a, \u0431\u0443\u0434\u0442\u043e \u0447\u0435\u043b\u043b\u0435\u043d\u0434\u0436 \u0435\u0449\u0435 \u043d\u0435 \u0440\u0435\u0448\u0435\u043d, \u0442.\u0435 \u0441 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c \u0432\u0441\u0435\u0445 \u0443\u043c\u043e\u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0438 \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043c\u0435\u043b\u0438 \u043c\u0435\u0441\u0442\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0435\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f. <\/p>\n<h3>\u0421\u0443\u0442\u044c \u0447\u0435\u043b\u043b\u0435\u043d\u0434\u0436\u0430 <\/h3>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0ff\/192\/fd2\/0ff192fd2482f2a2e1ab4e746f2e3bf8.png\" alt=\"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0447\u0435\u043b\u043b\u0435\u043d\u0434\u0436\u0430\" title=\"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0447\u0435\u043b\u043b\u0435\u043d\u0434\u0436\u0430\" width=\"1816\" height=\"890\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0ff\/192\/fd2\/0ff192fd2482f2a2e1ab4e746f2e3bf8.png\"\/><figcaption>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0447\u0435\u043b\u043b\u0435\u043d\u0434\u0436\u0430<\/figcaption><\/figure>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0432 \u043c\u0438\u0440\u0435 \u0441 1000 npc \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u043c \u043f\u043e\u043c\u043e\u0447\u044c. \u041d\u0443-\u0441, \u043b\u0435\u0442\u0441 \u0433\u0435\u0442 \u0441\u0442\u0430\u0440\u0442\u0435\u0434, \u043a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f. <\/p>\n<h3>\u041d\u0430\u0447\u0430\u043b\u043e <\/h3>\n<p>\u0418\u0433\u0440\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u0435\u0442\u0430\u043f\u0430 <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fc7\/272\/12d\/fc727212d712ec33f85e96d6d0d69c6d.png\" width=\"1638\" height=\"1258\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fc7\/272\/12d\/fc727212d712ec33f85e96d6d0d69c6d.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u043e\u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043a\u0435\u043c-\u043d\u0438\u0431\u0443\u0434\u044c<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/320\/b23\/ac5\/320b23ac57032814e96b183441fe74ce.png\" width=\"1608\" height=\"1232\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/320\/b23\/ac5\/320b23ac57032814e96b183441fe74ce.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0417\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u043c, \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u044d\u0442\u043e\u0442 npc \u043d\u0430\u043c \u043d\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u0442. \u0427\u0442\u043e \u0436, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043a\u043e\u043f\u0430\u0442\u044c \u0433\u043b\u0443\u0431\u0436\u0435 &#8212; \u0441\u043a\u0430\u0447\u0430\u0435\u043c wasm-\u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a \u0438 \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c \u0435\u0433\u043e. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043e\u0437\u044c\u043c\u0435\u043c <a href=\"https:\/\/github.com\/WebAssembly\/wabt\" rel=\"noopener noreferrer nofollow\">wabt<\/a> \u0438\u043b\u0438 WAsm Binary Toolkit. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0442\u0430\u043c \u0438\u043c\u0435\u0435\u0442\u0441\u044f. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f62\/623\/b17\/f62623b17d5066ea3ed04a6378d06ddf.png\" width=\"2446\" height=\"370\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f62\/623\/b17\/f62623b17d5066ea3ed04a6378d06ddf.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u043d\u043e \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e wasm2js, \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 wasm \u0432 js \u043a\u043e\u0434. \u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u043f\u0435\u0441\u0442\u0440\u0438\u0442 \u043d\u0435\u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f\u043c\u0438 \u0441\u043b\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e, \u043e\u0431\u0444\u0443\u0441\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e js \u043a\u043e\u0434\u0430, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u0438\u0437 \u043a\u0443\u0447\u0438 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043d\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u0442\u043e\u0433\u0435 \u0441\u0435\u043d\u0430 \u043c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u043f\u0430\u0440\u043e\u0447\u043a\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0438\u0433\u043b. \u041c\u043e\u0439 \u0432\u0435\u0441\u044c\u043c\u0430 \u0441\u043a\u0443\u0434\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0433\u0440 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0433\u0434\u0435-\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0446\u0438\u043a\u043b, \u0433\u0434\u0435 \u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u0441\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0438\u0433\u0440\u043e\u043a\u0430, \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u043c\u0438\u0440\u0430, \u0445\u0435\u043d\u0434\u043b\u0438\u043d\u0433 \u044d\u0432\u0435\u043d\u0442\u043e\u0432 \u0438 \u0442.\u0434. \u0422\u0430\u043a\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432 \u043a\u043e\u0434\u0435 \u0435\u0441\u0442\u044c, \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u043d\u0430, \u043a \u043c\u043e\u0435\u043c\u0443 \u0432\u0435\u043b\u0438\u0447\u0430\u0439\u0448\u0435\u043c\u0443 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u044e, main_loop. <\/p>\n<pre><code class=\"javascript\"> function main_loop() {   var $2 = 0;   $2 = __stack_pointer - 16 | 0;   __stack_pointer = $2;   handle_events();   HEAP32[($2 + 12 | 0) >> 2] = clock() | 0;   HEAP32[($2 + 8 | 0) >> 2] = (HEAP32[($2 + 12 | 0) >> 2] | 0) - (HEAP32[(0 + 351648 | 0) >> 2] | 0) | 0;   HEAP32[(0 + 351648 | 0) >> 2] = HEAP32[($2 + 12 | 0) >> 2] | 0;   render_game(HEAP32[($2 + 8 | 0) >> 2] | 0 | 0);   SDL_RenderPresent(HEAP32[(0 + 315092 | 0) >> 2] | 0 | 0);   __stack_pointer = $2 + 16 | 0;   return;  } <\/code><\/pre>\n<p>\u0425\u043c\u043c, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c: \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0435\u043a\u043e\u0432\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u0434 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0414\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 handle_events. <\/p>\n<pre><code class=\"javascript\"> function handle_events() {   var $20 = 0, $2 = 0, $90 = 0;   $2 = __stack_pointer - 64 | 0;   __stack_pointer = $2;   label$1 : {    label$2 : while (1) {     if (!(SDL_PollEvent($2 + 8 | 0 | 0) | 0)) {      break label$1     }     label$3 : {      if (!((HEAP32[($2 + 8 | 0) >> 2] | 0 | 0) == (768 | 0) &amp; 1 | 0)) {       break label$3      }      label$4 : {       label$5 : {        if ((HEAPU8[(0 + 315112 | 0) >> 0] | 0) &amp; 1 | 0) {         break label$5        }        $20 = HEAP32[($2 + 28 | 0) >> 2] | 0;        label$6 : {         label$7 : {          label$8 : {           if (($20 | 0) == (32 | 0)) {            break label$8           }           label$9 : {            label$10 : {             if (($20 | 0) == (97 | 0)) {              break label$10             }             if (($20 | 0) == (100 | 0)) {              break label$9             }             if (($20 | 0) == (113 | 0)) {              break label$10             }             label$11 : {              if (($20 | 0) == (115 | 0)) {               break label$11              }              label$12 : {               if (($20 | 0) == (119 | 0)) {                break label$12               }               if (($20 | 0) == (122 | 0)) {                break label$12               }               if (($20 | 0) == (1073741886 | 0)) {                break label$7               }               if (($20 | 0) == (1073741903 | 0)) {                break label$9               }               if (($20 | 0) == (1073741904 | 0)) {                break label$10               }               if (($20 | 0) == (1073741905 | 0)) {                break label$11               }               if (($20 | 0) != (1073741906 | 0)) {                break label$6               }              }              label$13 : {               if (!(HEAP32[(0 + 315136 | 0) >> 2] | 0)) {                break label$13               }               move(0 | 0, -1 | 0);              }              HEAP32[(0 + 315136 | 0) >> 2] = 3;              break label$6;             }             label$14 : {              if (!((HEAP32[(0 + 315136 | 0) >> 2] | 0 | 0) != (3 | 0) &amp; 1 | 0)) {               break label$14              }              move(0 | 0, 1 | 0);             }             HEAP32[(0 + 315136 | 0) >> 2] = 0;             break label$6;            }            label$15 : {             if (!((HEAP32[(0 + 315136 | 0) >> 2] | 0 | 0) != (2 | 0) &amp; 1 | 0)) {              break label$15             }             move(-1 | 0, 0 | 0);            }            HEAP32[(0 + 315136 | 0) >> 2] = 1;            break label$6;           }           label$16 : {            if (!((HEAP32[(0 + 315136 | 0) >> 2] | 0 | 0) != (1 | 0) &amp; 1 | 0)) {             break label$16            }            move(1 | 0, 0 | 0);           }           HEAP32[(0 + 315136 | 0) >> 2] = 2;           break label$6;          }          interact();          break label$6;         }         emscripten_run_script(9447 | 0);        }        break label$4;       }       $90 = HEAP32[($2 + 28 | 0) >> 2] | 0;       label$17 : {        label$18 : {         label$19 : {          if (($90 | 0) == (32 | 0)) {           break label$19          }          if (($90 | 0) == (1073741886 | 0)) {           break label$18          }          break label$17;         }         HEAP8[(0 + 315112 | 0) >> 0] = 0;         break label$17;        }        emscripten_run_script(9447 | 0);       }      }     }     continue label$2;    };   }   __stack_pointer = $2 + 64 | 0;   return;  } <\/code><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u043e\u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u043d\u043e \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u043c\u044b\u0441\u043b\u044c \u0443\u043b\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e. \u041a\u0430\u0436\u0434\u0443\u044e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f, \u043a\u0430\u043a\u043e\u0439 \u044d\u0432\u0435\u043d\u0442 \u0438\u043c\u0435\u0435\u0442 \u043c\u0435\u0441\u0442\u043e \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u0436\u0435\u043b\u0430\u0435\u043c\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435. \u0418\u0437 \u0432\u0441\u0435\u0445 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043c\u0435\u043d\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0442\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f interact. <\/p>\n<pre><code class=\"javascript\"> function interact() {   var $2 = 0, $3 = 0, $4 = 0;   $2 = __stack_pointer - 16 | 0;   __stack_pointer = $2;   $3 = 0;   HEAP32[($2 + 12 | 0) >> 2] = $3;   $4 = HEAP32[($3 + 315136 | 0) >> 2] | 0;   label$1 : {    label$2 : {     switch ($4 | 0) {     case 3:      HEAP32[($2 + 12 | 0) >> 2] = get_entity_at(HEAP32[(0 + 315120 | 0) >> 2] | 0 | 0, (HEAP32[(0 + 315124 | 0) >> 2] | 0) - 1 | 0 | 0) | 0;      label$6 : {       if (!((HEAP32[($2 + 12 | 0) >> 2] | 0 | 0) != (0 | 0) &amp; 1 | 0)) {        break label$6       }       HEAP32[((HEAP32[($2 + 12 | 0) >> 2] | 0) + 20 | 0) >> 2] = 0;      }      break label$1;     case 0:      HEAP32[($2 + 12 | 0) >> 2] = get_entity_at(HEAP32[(0 + 315120 | 0) >> 2] | 0 | 0, (HEAP32[(0 + 315124 | 0) >> 2] | 0) + 1 | 0 | 0) | 0;      label$7 : {       if (!((HEAP32[($2 + 12 | 0) >> 2] | 0 | 0) != (0 | 0) &amp; 1 | 0)) {        break label$7       }       HEAP32[((HEAP32[($2 + 12 | 0) >> 2] | 0) + 20 | 0) >> 2] = 3;      }      break label$1;     case 2:      HEAP32[($2 + 12 | 0) >> 2] = get_entity_at((HEAP32[(0 + 315120 | 0) >> 2] | 0) + 1 | 0 | 0, HEAP32[(0 + 315124 | 0) >> 2] | 0 | 0) | 0;      label$8 : {       if (!((HEAP32[($2 + 12 | 0) >> 2] | 0 | 0) != (0 | 0) &amp; 1 | 0)) {        break label$8       }       HEAP32[((HEAP32[($2 + 12 | 0) >> 2] | 0) + 20 | 0) >> 2] = 1;      }      break label$1;     case 1:      break label$2;     default:      break label$1;     };    }    HEAP32[($2 + 12 | 0) >> 2] = get_entity_at((HEAP32[(0 + 315120 | 0) >> 2] | 0) - 1 | 0 | 0, HEAP32[(0 + 315124 | 0) >> 2] | 0 | 0) | 0;    label$9 : {     if (!((HEAP32[($2 + 12 | 0) >> 2] | 0 | 0) != (0 | 0) &amp; 1 | 0)) {      break label$9     }     HEAP32[((HEAP32[($2 + 12 | 0) >> 2] | 0) + 20 | 0) >> 2] = 2;    }   }   label$10 : {    if (!((HEAP32[($2 + 12 | 0) >> 2] | 0 | 0) != (0 | 0) &amp; 1 | 0)) {     break label$10    }    show_quote(HEAP32[($2 + 12 | 0) >> 2] | 0 | 0);   }   __stack_pointer = $2 + 16 | 0;   return;  } <\/code><\/pre>\n<p>\u0421\u0442\u0440\u043e\u0447\u043a\u0430 7 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u043e\u043b\u044e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u041c\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0441\u0442\u0435\u0439\u0442 \u0438\u0433\u0440\u043e\u043a\u0430, \u0430 \u043f\u043e\u043b\u0435 &#8212; \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u0433\u0440\u043e\u043a \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a npc \u043f\u0443\u0442\u0435\u043c \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 get_entity_at. \u041d\u0443 \u0438 \u0432 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f show_quote, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f npc \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430. \u041d\u043e \u0432\u0441\u0435 \u0436\u0435 \u043c\u0435\u043d\u044f \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f show_quote. \u0412\u0434\u0440\u0443\u0433 \u0442\u0430\u043c \u0438 \u0441\u043f\u0440\u044f\u0442\u0430\u043d \u0444\u043b\u0430\u0433. <\/p>\n<pre><code class=\"javascript\"> function show_quote($0) {   $0 = $0 | 0;   var $3 = 0, $17 = 0, $39 = 0;   $3 = __stack_pointer - 48 | 0;   __stack_pointer = $3;   HEAP32[($3 + 44 | 0) >> 2] = $0;   HEAP32[($3 + 12 | 0) >> 2] = 0;   label$1 : {    label$2 : while (1) {     if (!(((HEAPU8[((HEAP32[($3 + 12 | 0) >> 2] | 0) + 9424 | 0) >> 0] | 0) &amp; 255 | 0 | 0) != (0 &amp; 255 | 0 | 0) &amp; 1 | 0)) {      break label$1     }     $17 = 24;     HEAP8[(($3 + 16 | 0) + (HEAP32[($3 + 12 | 0) >> 2] | 0) | 0) >> 0] = (((HEAPU8[((HEAP32[($3 + 12 | 0) >> 2] | 0) + 9424 | 0) >> 0] | 0) &lt;&lt; $17 | 0) >> $17 | 0) ^ ((((HEAP32[(HEAP32[($3 + 44 | 0) >> 2] | 0) >> 2] | 0) - 1 | 0) + (HEAP32[($3 + 12 | 0) >> 2] | 0) | 0 | 0) % (256 | 0) | 0) | 0;     HEAP32[($3 + 12 | 0) >> 2] = (HEAP32[($3 + 12 | 0) >> 2] | 0) + 1 | 0;     continue label$2;    };   }   HEAP8[($3 + 38 | 0) >> 0] = 0;   $39 = HEAP32[((HEAP32[($3 + 44 | 0) >> 2] | 0) + 12 | 0) >> 2] | 0;   HEAP32[$3 >> 2] = $3 + 16 | 0;   snprintf(315152 | 0, 300 | 0, $39 | 0, $3 | 0) | 0;   HEAP8[(0 + 315112 | 0) >> 0] = 1;   __stack_pointer = $3 + 48 | 0;   return;  } <\/code><\/pre>\n<p>\u0425\u043c\u043c, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0446\u0438\u043a\u043b. \u0412 \u0446\u0438\u043a\u043b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f, \u043f\u043e \u0432\u0441\u0435\u0439 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0430\u0434\u0440\u0435\u0441 \u0441\u0442\u0440\u043e\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c. \u0418 \u0432\u0441\u0435 \u0436\u0435 \u043d\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430 \u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432 \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u0434, \u043d\u0443\u0436\u043d\u043e \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0432 \u0432\u0438\u0434\u0435 \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440\u0430 \u043f\u043e \u0442\u0438\u043f\u0443 cheat engine, \u043d\u043e \u0434\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. \u041f\u043e\u0438\u0441\u043a\u0438 \u043d\u0430\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438 \u043c\u0435\u043d\u044f \u043a \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u043c\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044e \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <a href=\"https:\/\/github.com\/Qwokka\/Cetus\" rel=\"noopener noreferrer nofollow\">Cetus<\/a>. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/340\/7dd\/718\/3407dd718def9aafe461fbed67519bed.png\" width=\"1502\" height=\"1214\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/340\/7dd\/718\/3407dd718def9aafe461fbed67519bed.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u044e-\u043a\u0430 \u044f \u0432 \u0440\u0430\u0437\u0434\u0435\u043b \u0441\u0442\u0440\u043e\u043a \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d55\/23a\/b09\/d5523ab096c8d92457607b7ebe9e1c86.png\" width=\"1310\" height=\"722\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d55\/23a\/b09\/d5523ab096c8d92457607b7ebe9e1c86.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0435, \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e. \u041f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u0439\u0442\u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u043c \u043f\u0443\u0442\u0435\u043c &#8212; \u043a\u043e\u043f\u0430\u0442\u044c. \u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 \u0440\u0430\u0437\u0434\u0435\u043b Memory View. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0443 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 315136 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0438\u0433\u0440\u043e\u043a\u0430. \u0421\u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u043a<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e46\/241\/f53\/e46241f535df160f8f6e34d9e822e711.gif\" width=\"678\" height=\"442\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e46\/241\/f53\/e46241f535df160f8f6e34d9e822e711.gif\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0438 \u0438\u0433\u0440\u043e\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u043c\u0435\u043d\u044f\u044e\u0449\u0435\u0435\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435. \u041d\u043e \u043c\u043d\u0435 \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0438\u0433\u0440\u044b \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 npc. \u0412 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u043d\u0435 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0432\u043e\u043f\u0440\u043e\u0441: \u0435\u0441\u0442\u044c \u043b\u0438 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0443 npc, \u043d\u0435 \u043c\u0435\u043d\u044f\u044e\u0449\u0435\u0435\u0441\u044f \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0439 \u0438\u0433\u0440\u044b? \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u043e\u0437\u0438\u0446\u0438\u044f! \u041e\u043d\u0438 \u0432\u0435\u0434\u044c \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u044b. \u0422\u043e\u0433\u0434\u0430 \u0435\u0441\u043b\u0438 \u0432\u0432\u0435\u0441\u0442\u0438 \u0445\u043e\u0442\u044f \u0431\u044b x \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0443, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 npc \u043d\u0430\u043f\u043e\u0440\u043e\u0442\u044c\u0441\u044f. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/540\/ff2\/a2b\/540ff2a2b380de203ed925a6bd3b6fb3.png\" alt=\"\" title=\"\" width=\"1364\" height=\"1078\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/540\/ff2\/a2b\/540ff2a2b380de203ed925a6bd3b6fb3.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u042f \u0443\u0448\u0435\u043b \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u043b\u0435\u043a\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0443\u0437\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u043f\u043e\u0438\u0441\u043a\u0430. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043d\u0430\u0439\u0442\u0438 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c -546 (x-\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 \u043c\u0430\u0434\u043c\u0443\u0430\u0437\u0435\u043b\u044c). \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044f \u043f\u0435\u0440\u0435\u0439\u0434\u0443 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b Search. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/876\/39a\/405\/87639a4052a2d9c1b296e7a2ee20d754.png\" width=\"1388\" height=\"390\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/876\/39a\/405\/87639a4052a2d9c1b296e7a2ee20d754.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0421\u0443\u043f\u0435\u0440, \u0442\u043e\u043b\u044c\u043a\u043e 2 \u044f\u0447\u0435\u0439\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441 \u0442\u0430\u043a\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c. \u041f\u0443\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430 \u044f \u0431\u044b\u0441\u0442\u0440\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u043b, \u0447\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0x0004f2b8. \u0427\u0442\u043e \u0436, \u0441\u0445\u043e\u0434\u0438\u043c \u0442\u0443\u0434\u0430. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/917\/00a\/249\/91700a249e9458923cbf28dfbe5e1eb3.png\" width=\"1406\" height=\"822\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/917\/00a\/249\/91700a249e9458923cbf28dfbe5e1eb3.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0x0004f2bc \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f y-\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430. \u041c\u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u043e x-\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b. \u0412\u044b\u0447\u0442\u0435\u043c 4 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/13b\/f5d\/5db\/13bf5d5dbbf20c851f787a431a9c0523.png\" width=\"1400\" height=\"832\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/13b\/f5d\/5db\/13bf5d5dbbf20c851f787a431a9c0523.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0425\u043c, \u0442\u0443\u0442 \u0447\u0438\u0441\u043b\u043e 0x000000f6. \u041c\u043d\u0435 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043e\u043d\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c entityID \u043f\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0443 \u044f\u0432\u043b\u044f\u044e\u0449\u0435\u0435\u0441\u044f \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044e show_quote \u044f \u043d\u0430\u0448\u0435\u043b \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442, \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0449\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u0441\u0442\u0440\u043e\u043a\u0438. <\/p>\n<pre><code class=\"javascript\">$39 = HEAP32[((HEAP32[($3 + 44 | 0) >> 2] | 0) + 12 | 0) >> 2] | 0;<\/code><\/pre>\n<p>\u0423\u043f\u0440\u043e\u0441\u0442\u0438\u043c \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u0434\u043e <\/p>\n<pre><code class=\"javascript\">$39 = HEAP32[(0x0004f2b4 + 12)]<\/code><\/pre>\n<p>\u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0432 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0433\u043b\u044f\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u044d\u0442\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u0435. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e40\/bf0\/5b7\/e40bf05b7fb42b074ad321119462aaec.png\" width=\"1408\" height=\"854\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e40\/bf0\/5b7\/e40bf05b7fb42b074ad321119462aaec.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0427\u0438\u0441\u043b\u043e 0x000020cc. \u041f\u0440\u043e\u0441\u0442\u043e \u0447\u0438\u0441\u043b\u043e \u0438\u043b\u0438 \u0430\u0434\u0440\u0435\u0441 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0448\u0442\u0443\u043a\u0438? \u042f \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u043a\u043b\u043e\u043d\u044f\u044e\u0441\u044c \u043a\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443. \u0427\u0442\u043e \u0436, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u043a\u043e\u043f\u0430\u0442\u044c. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fbc\/ec3\/4c1\/fbcec34c10ba11e92e827a3bdf7462bc.png\" width=\"1406\" height=\"766\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fbc\/ec3\/4c1\/fbcec34c10ba11e92e827a3bdf7462bc.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0411\u0438\u043d\u0433\u043e! \u0414\u0430 \u044d\u0442\u043e \u0436\u0435 \u043d\u0430\u0448\u0430 \u0441\u0442\u0440\u043e\u043a\u0430! \u0412 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0435\u0440\u0435\u0434\u043e \u043c\u043d\u043e\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0435\u0442 \u0432\u044b\u0431\u043e\u0440:<br \/>A) \u042f \u0431\u0435\u0433\u0443 \u043f\u043e \u0432\u0441\u0435\u0439 \u043a\u0430\u0440\u0442\u0435 \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e \u0441 \u043a\u0430\u0436\u0434\u044b\u043c npc, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u0438\u0436\u0443, \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0443 \u043d\u0443\u0436\u043d\u043e\u0433\u043e<\/p>\n<p>\u0411) \u041d\u0430\u0439\u0434\u0443 \u0441\u0442\u0440\u043e\u043a\u0443, \u0445\u043e\u0442\u044c \u0441\u043a\u043e\u043b\u044c\u043a\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u0444\u043b\u0430\u0433\u043e\u043c, \u043d\u0443 \u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0443\u0436\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u0437\u043d\u0430\u043d\u0438\u0439 \u0440\u0435\u0432\u0435\u0440\u0441\u043d\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441. <\/p>\n<p>\u041f\u043e\u043b\u0430\u0433\u0430\u044e, \u0447\u0442\u043e \u0432\u044b\u0431\u043e\u0440 \u043e\u0447\u0435\u0432\u0438\u0434\u0435\u043d, \u0433\u043e\u0441\u043f\u043e\u0434\u0430. <\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u043e\u0432 \u0444\u043b\u0430\u0433\u0430 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c wasm-objdump \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c -s, \u043d\u0443 \u0438 \u0433\u0440\u0435\u043f\u043f\u0430\u0442\u044c \u0441\u043b\u043e\u0432\u043e flag. \u041d\u0430\u0448\u043b\u0430\u0441\u044c \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 &#171;You found me! Your flag is %s&#187;. \u0414\u0430\u043b\u0435\u0435 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0432\u0435\u0441\u0442\u0438 \u044d\u0442\u043e \u0432 Cetus \u0438 \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u0441\u0442\u0440\u043e\u043a\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f 0x00002588. <\/p>\n<p>\u0418 \u0432\u043e\u0442 \u043f\u043e\u0447\u0442\u0438 \u0432\u0435\u0441\u044c \u043f\u0430\u0437\u043b \u0441\u043e\u0431\u0440\u0430\u043d, \u043d\u043e \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0430\u044f \u0434\u0435\u0442\u0430\u043b\u044c &#8212; \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u044e npc, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u0440\u0436\u0438\u0442 \u0444\u043b\u0430\u0433. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043d\u043e\u0432\u0430 \u0432\u0432\u0435\u0434\u0435\u043c \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u043e\u0438\u0441\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0x00002588. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a1b\/2f3\/c1b\/a1b2f3c1b995adad27ddb97272b308f4.png\" width=\"1376\" height=\"554\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a1b\/2f3\/c1b\/a1b2f3c1b995adad27ddb97272b308f4.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041b\u0438\u0448\u044c \u043e\u0434\u0438\u043d \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 &#8212; 0x00050b5c. \u0422\u0435\u043f\u0435\u0440\u044c \u043b\u0438\u0448\u044c \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0439\u0442\u0438 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u0432\u0432\u0435\u0441\u0442\u0438 \u0442\u0443\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0x00050b5c &#8212; 12, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043a \u043d\u0430\u0447\u0430\u043b\u0443 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u043b\u043e\u0441\u044c \u0447\u0438\u0441\u043b\u043e 12. \u0414\u043e \u0444\u043b\u0430\u0433\u0430 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0435\u0433\u043e \u043d\u0438\u0447\u0435\u0433\u043e, \u043d\u043e \u043c\u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e \u0434\u043b\u044f \u0442\u0435\u0431\u044f, \u0434\u043e\u0440\u043e\u0433\u043e\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c. <\/p>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043d\u0435 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043f\u043e\u043b\u043d\u044b\u0439 \u0445\u043e\u0434 \u043c\u044b\u0441\u043b\u0435\u0439 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0447\u0435\u043b\u043b\u0435\u043d\u0434\u0436\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u043c\u044b\u0441\u043b\u0435\u0439 \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043e\u0447\u0435\u043d\u044c \u0432\u0435\u043b\u0438\u043a\u0430 \u043f\u043e \u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435, \u0447\u0442\u043e \u043d\u0430 \u0435\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435  \u044f \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b 2 \u0434\u043d\u044f. \u0422\u043e\u0442 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0430\u043c\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 WebAssembly, \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043b \u0434\u043e\u0437\u0443 \u0434\u043e\u0444\u0430\u043c\u0438\u043d\u0430 \u0432 5x \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u043c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u0430\u043a\u0438 \u0440\u0435\u0448\u0438\u0442\u044c \u0435\u0433\u043e. \u041d\u0443 \u0438 \u044f \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0434, \u0447\u0442\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u043e\u0441\u0442\u0430 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \ud83d\ude42<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p> <!----> <!----><\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/707504\/\"> https:\/\/habr.com\/ru\/post\/707504\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h3>\u041f\u0440\u0435\u0430\u043c\u0431\u0443\u043b\u0430<\/h3>\n<p>\u041f\u0440\u043e\u0448\u0435\u043b \u0443\u0436\u0435 \u043c\u0435\u0441\u044f\u0446 \u0441 \u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430, \u043a\u0430\u043a \u044f \u043f\u043e\u043f\u044b\u0442\u0430\u043b \u0441\u0447\u0430\u0441\u0442\u044c\u044f \u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0440\u0435\u0432\u0435\u0440\u0441 \u0447\u0435\u043b\u043b\u0435\u043d\u0434\u0436\u0430, \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u043f\u0430\u0441\u0445\u0430\u043b\u043e\u043a \u0432 \u0438\u0433\u0440\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0432 WASM, \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 <a href=\"https:\/\/www.root-me.org\/\" rel=\"noopener noreferrer nofollow\">root-me<\/a>. \u0421 \u0442\u0435\u0445 \u043f\u043e\u0440 \u044f \u043f\u043e\u0434\u0443\u043c\u044b\u0432\u0430\u043b \u0437\u0430\u043f\u043e\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e \u043d\u0430 \u0445\u0430\u0431\u0440, \u043d\u043e \u043d\u0438\u043a\u0430\u043a \u0440\u0443\u043a\u0438 \u043d\u0435 \u0434\u043e\u0445\u043e\u0434\u0438\u043b\u0438. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0432\u0441\u0435 \u0436\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u043e\u0442\u044c \u0441\u0435\u0431\u044f. \u0421\u0442\u0430\u0442\u044c\u044e \u044f \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0430\u043a, \u0431\u0443\u0434\u0442\u043e \u0447\u0435\u043b\u043b\u0435\u043d\u0434\u0436 \u0435\u0449\u0435 \u043d\u0435 \u0440\u0435\u0448\u0435\u043d, \u0442.\u0435 \u0441 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c \u0432\u0441\u0435\u0445 \u0443\u043c\u043e\u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0438 \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043c\u0435\u043b\u0438 \u043c\u0435\u0441\u0442\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0435\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f. <\/p>\n<h3>\u0421\u0443\u0442\u044c \u0447\u0435\u043b\u043b\u0435\u043d\u0434\u0436\u0430 <\/h3>\n<figure class=\"full-width\"><figcaption>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0447\u0435\u043b\u043b\u0435\u043d\u0434\u0436\u0430<\/figcaption><\/figure>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0432 \u043c\u0438\u0440\u0435 \u0441 1000 npc \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u043c \u043f\u043e\u043c\u043e\u0447\u044c. \u041d\u0443-\u0441, \u043b\u0435\u0442\u0441 \u0433\u0435\u0442 \u0441\u0442\u0430\u0440\u0442\u0435\u0434, \u043a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f. <\/p>\n<h3>\u041d\u0430\u0447\u0430\u043b\u043e <\/h3>\n<p>\u0418\u0433\u0440\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u0435\u0442\u0430\u043f\u0430 <\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u043e\u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043a\u0435\u043c-\u043d\u0438\u0431\u0443\u0434\u044c<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0417\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u043c, \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u044d\u0442\u043e\u0442 npc \u043d\u0430\u043c \u043d\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u0442. \u0427\u0442\u043e \u0436, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043a\u043e\u043f\u0430\u0442\u044c \u0433\u043b\u0443\u0431\u0436\u0435 &#8212; \u0441\u043a\u0430\u0447\u0430\u0435\u043c wasm-\u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a \u0438 \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c \u0435\u0433\u043e. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043e\u0437\u044c\u043c\u0435\u043c <a href=\"https:\/\/github.com\/WebAssembly\/wabt\" rel=\"noopener noreferrer nofollow\">wabt<\/a> \u0438\u043b\u0438 WAsm Binary Toolkit. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0442\u0430\u043c \u0438\u043c\u0435\u0435\u0442\u0441\u044f. <\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u043d\u043e \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e wasm2js, \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 wasm \u0432 js \u043a\u043e\u0434. \u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u043f\u0435\u0441\u0442\u0440\u0438\u0442 \u043d\u0435\u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f\u043c\u0438 \u0441\u043b\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e, \u043e\u0431\u0444\u0443\u0441\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e js \u043a\u043e\u0434\u0430, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u0438\u0437 \u043a\u0443\u0447\u0438 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043d\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u0442\u043e\u0433\u0435 \u0441\u0435\u043d\u0430 \u043c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u043f\u0430\u0440\u043e\u0447\u043a\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0438\u0433\u043b. \u041c\u043e\u0439 \u0432\u0435\u0441\u044c\u043c\u0430 \u0441\u043a\u0443\u0434\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0433\u0440 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0433\u0434\u0435-\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0446\u0438\u043a\u043b, \u0433\u0434\u0435 \u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u0441\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0438\u0433\u0440\u043e\u043a\u0430, \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u043c\u0438\u0440\u0430, \u0445\u0435\u043d\u0434\u043b\u0438\u043d\u0433 \u044d\u0432\u0435\u043d\u0442\u043e\u0432 \u0438 \u0442.\u0434. \u0422\u0430\u043a\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432 \u043a\u043e\u0434\u0435 \u0435\u0441\u0442\u044c, \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u043d\u0430, \u043a \u043c\u043e\u0435\u043c\u0443 \u0432\u0435\u043b\u0438\u0447\u0430\u0439\u0448\u0435\u043c\u0443 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u044e, main_loop. <\/p>\n<pre><code class=\"javascript\"> function main_loop() {   var $2 = 0;   $2 = __stack_pointer - 16 | 0;   __stack_pointer = $2;   handle_events();   HEAP32[($2 + 12 | 0) >> 2] = clock() | 0;   HEAP32[($2 + 8 | 0) >> 2] = (HEAP32[($2 + 12 | 0) >> 2] | 0) - (HEAP32[(0 + 351648 | 0) >> 2] | 0) | 0;   HEAP32[(0 + 351648 | 0) >> 2] = HEAP32[($2 + 12 | 0) >> 2] | 0;   render_game(HEAP32[($2 + 8 | 0) >> 2] | 0 | 0);   SDL_RenderPresent(HEAP32[(0 + 315092 | 0) >> 2] | 0 | 0);   __stack_pointer = $2 + 16 | 0;   return;  } <\/code><\/pre>\n<p>\u0425\u043c\u043c, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c: \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0435\u043a\u043e\u0432\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u0434 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0414\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 handle_events. <\/p>\n<pre><code class=\"javascript\"> function handle_events() {   var $20 = 0, $2 = 0, $90 = 0;   $2 = __stack_pointer - 64 | 0;   __stack_pointer = $2;   label$1 : {    label$2 : while (1) {     if (!(SDL_PollEvent($2 + 8 | 0 | 0) | 0)) {      break label$1     }     label$3 : {      if (!((HEAP32[($2 + 8 | 0) >> 2] | 0 | 0) == (768 | 0) &amp; 1 | 0)) {       break label$3      }      label$4 : {       label$5 : {        if ((HEAPU8[(0 + 315112 | 0) >> 0] | 0) &amp; 1 | 0) {         break label$5        }        $20 = HEAP32[($2 + 28 | 0) >> 2] | 0;        label$6 : {         label$7 : {          label$8 : {           if (($20 | 0) == (32 | 0)) {            break label$8           }           label$9 : {            label$10 : {             if (($20 | 0) == (97 | 0)) {              break label$10             }             if (($20 | 0) == (100 | 0)) {              break label$9             }             if (($20 | 0) == (113 | 0)) {              break label$10             }             label$11 : {              if (($20 | 0) == (115 | 0)) {               break label$11              }              label$12 : {               if (($20 | 0) == (119 | 0)) {                break label$12               }               if (($20 | 0) == (122 | 0)) {                break label$12               }               if (($20 | 0) == (1073741886 | 0)) {                break label$7               }               if (($20 | 0) == (1073741903 | 0)) {                break label$9               }               if (($20 | 0) == (1073741904 | 0)) {                break label$10               }               if (($20 | 0) == (1073741905 | 0)) {                break label$11               }               if (($20 | 0) != (1073741906 | 0)) {                break label$6               }              }              label$13 : {               if (!(HEAP32[(0 + 315136 | 0) >> 2] | 0)) {                break label$13               }               move(0 | 0, -1 | 0);              }              HEAP32[(0 + 315136 | 0) >> 2] = 3;              break label$6;             }             label$14 : {              if (!((HEAP32[(0 + 315136 | 0) >> 2] | 0 | 0) != (3 | 0) &amp; 1 | 0)) {               break label$14              }              move(0 | 0, 1 | 0);             }             HEAP32[(0 + 315136 | 0) >> 2] = 0;             break label$6;            }            label$15 : {             if (!((HEAP32[(0 + 315136 | 0) >> 2] | 0 | 0) != (2 | 0) &amp; 1 | 0)) {              break label$15             }             move(-1 | 0, 0 | 0);            }            HEAP32[(0 + 315136 | 0) >> 2] = 1;            break label$6;           }           label$16 : {            if (!((HEAP32[(0 + 315136 | 0) >> 2] | 0 | 0) != (1 | 0) &amp; 1 | 0)) {             break label$16            }            move(1 | 0, 0 | 0);           }           HEAP32[(0 + 315136 | 0) >> 2] = 2;           break label$6;          }          interact();          break label$6;         }         emscripten_run_script(9447 | 0);        }        break label$4;       }       $90 = HEAP32[($2 + 28 | 0) >> 2] | 0;       label$17 : {        label$18 : {         label$19 : {          if (($90 | 0) == (32 | 0)) {           break label$19          }          if (($90 | 0) == (1073741886 | 0)) {           break label$18          }          break label$17;         }         HEAP8[(0 + 315112 | 0) >> 0] = 0;         break label$17;        }        emscripten_run_script(9447 | 0);       }      }     }     continue label$2;    };   }   __stack_pointer = $2 + 64 | 0;   return;  } <\/code><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u043e\u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u043d\u043e \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u043c\u044b\u0441\u043b\u044c \u0443\u043b\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e. \u041a\u0430\u0436\u0434\u0443\u044e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f, \u043a\u0430\u043a\u043e\u0439 \u044d\u0432\u0435\u043d\u0442 \u0438\u043c\u0435\u0435\u0442 \u043c\u0435\u0441\u0442\u043e \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u0436\u0435\u043b\u0430\u0435\u043c\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435. \u0418\u0437 \u0432\u0441\u0435\u0445 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043c\u0435\u043d\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0442\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f interact. <\/p>\n<pre><code class=\"javascript\"> function interact() {   var $2 = 0, $3 = 0, $4 = 0;   $2 = __stack_pointer - 16 | 0;   __stack_pointer = $2;   $3 = 0;   HEAP32[($2 + 12 | 0) >> 2] = $3;   $4 = HEAP32[($3 + 315136 | 0) >> 2] | 0;   label$1 : {    label$2 : {     switch ($4 | 0) {     case 3:      HEAP32[($2 + 12 | 0) >> 2] = get_entity_at(HEAP32[(0 + 315120 | 0) >> 2] | 0 | 0, (HEAP32[(0 + 315124 | 0) >> 2] | 0) - 1 | 0 | 0) | 0;      label$6 : {       if (!((HEAP32[($2 + 12 | 0) >> 2] | 0 | 0) != (0 | 0) &amp; 1 | 0)) {        break label$6       }       HEAP32[((HEAP32[($2 + 12 | 0) >> 2] | 0) + 20 | 0) >> 2] = 0;      }      break label$1;     case 0:      HEAP32[($2 + 12 | 0) >> 2] = get_entity_at(HEAP32[(0 + 315120 | 0) >> 2] | 0 | 0, (HEAP32[(0 + 315124 | 0) >> 2] | 0) + 1 | 0 | 0) | 0;      label$7 : {       if (!((HEAP32[($2 + 12 | 0) >> 2] | 0 | 0) != (0 | 0) &amp; 1 | 0)) {        break label$7       }       HEAP32[((HEAP32[($2 + 12 | 0) >> 2] | 0) + 20 | 0) >> 2] = 3;      }      break label$1;     case 2:      HEAP32[($2 + 12 | 0) >> 2] = get_entity_at((HEAP32[(0 + 315120 | 0) >> 2] | 0) + 1 | 0 | 0, HEAP32[(0 + 315124 | 0) >> 2] | 0 | 0) | 0;      label$8 : {       if (!((HEAP32[($2 + 12 | 0) >> 2] | 0 | 0) != (0 | 0) &amp; 1 | 0)) {        break label$8       }       HEAP32[((HEAP32[($2 + 12 | 0) >> 2] | 0) + 20 | 0) >> 2] = 1;      }      break label$1;     case 1:      break label$2;     default:      break label$1;     };    }    HEAP32[($2 + 12 | 0) >> 2] = get_entity_at((HEAP32[(0 + 315120 | 0) >> 2] | 0) - 1 | 0 | 0, HEAP32[(0 + 315124 | 0) >> 2] | 0 | 0) | 0;    label$9 : {     if (!((HEAP32[($2 + 12 | 0) >> 2] | 0 | 0) != (0 | 0) &amp; 1 | 0)) {      break label$9     }     HEAP32[((HEAP32[($2 + 12 | 0) >> 2] | 0) + 20 | 0) >> 2] = 2;    }   }   label$10 : {    if (!((HEAP32[($2 + 12 | 0) >> 2] | 0 | 0) != (0 | 0) &amp; 1 | 0)) {     break label$10    }    show_quote(HEAP32[($2 + 12 | 0) >> 2] | 0 | 0);   }   __stack_pointer = $2 + 16 | 0;   return;  } <\/code><\/pre>\n<p>\u0421\u0442\u0440\u043e\u0447\u043a\u0430 7 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u043e\u043b\u044e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u041c\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0441\u0442\u0435\u0439\u0442 \u0438\u0433\u0440\u043e\u043a\u0430, \u0430 \u043f\u043e\u043b\u0435 &#8212; \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u0433\u0440\u043e\u043a \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a npc \u043f\u0443\u0442\u0435\u043c \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 get_entity_at. \u041d\u0443 \u0438 \u0432 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f show_quote, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f npc \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430. \u041d\u043e \u0432\u0441\u0435 \u0436\u0435 \u043c\u0435\u043d\u044f \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f show_quote. \u0412\u0434\u0440\u0443\u0433 \u0442\u0430\u043c \u0438 \u0441\u043f\u0440\u044f\u0442\u0430\u043d \u0444\u043b\u0430\u0433. <\/p>\n<pre><code class=\"javascript\"> function show_quote($0) {   $0 = $0 | 0;   var $3 = 0, $17 = 0, $39 = 0;   $3 = __stack_pointer - 48 | 0;   __stack_pointer = $3;   HEAP32[($3 + 44 | 0) >> 2] = $0;   HEAP32[($3 + 12 | 0) >> 2] = 0;   label$1 : {    label$2 : while (1) {     if (!(((HEAPU8[((HEAP32[($3 + 12 | 0) >> 2] | 0) + 9424 | 0) >> 0] | 0) &amp; 255 | 0 | 0) != (0 &amp; 255 | 0 | 0) &amp; 1 | 0)) {      break label$1     }     $17 = 24;     HEAP8[(($3 + 16 | 0) + (HEAP32[($3 + 12 | 0) >> 2] | 0) | 0) >> 0] = (((HEAPU8[((HEAP32[($3 + 12 | 0) >> 2] | 0) + 9424 | 0) >> 0] | 0) &lt;&lt; $17 | 0) >> $17 | 0) ^ ((((HEAP32[(HEAP32[($3 + 44 | 0) >> 2] | 0) >> 2] | 0) - 1 | 0) + (HEAP32[($3 + 12 | 0) >> 2] | 0) | 0 | 0) % (256 | 0) | 0) | 0;     HEAP32[($3 + 12 | 0) >> 2] = (HEAP32[($3 + 12 | 0) >> 2] | 0) + 1 | 0;     continue label$2;    };   }   HEAP8[($3 + 38 | 0) >> 0] = 0;   $39 = HEAP32[((HEAP32[($3 + 44 | 0) >> 2] | 0) + 12 | 0) >> 2] | 0;   HEAP32[$3 >> 2] = $3 + 16 | 0;   snprintf(315152 | 0, 300 | 0, $39 | 0, $3 | 0) | 0;   HEAP8[(0 + 315112 | 0) >> 0] = 1;   __stack_pointer = $3 + 48 | 0;   return;  } <\/code><\/pre>\n<p>\u0425\u043c\u043c, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0446\u0438\u043a\u043b. \u0412 \u0446\u0438\u043a\u043b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f, \u043f\u043e \u0432\u0441\u0435\u0439 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0430\u0434\u0440\u0435\u0441 \u0441\u0442\u0440\u043e\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c. \u0418 \u0432\u0441\u0435 \u0436\u0435 \u043d\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430 \u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432 \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u0434, \u043d\u0443\u0436\u043d\u043e \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0432 \u0432\u0438\u0434\u0435 \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440\u0430 \u043f\u043e \u0442\u0438\u043f\u0443 cheat engine, \u043d\u043e \u0434\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. \u041f\u043e\u0438\u0441\u043a\u0438 \u043d\u0430\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438 \u043c\u0435\u043d\u044f \u043a \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u043c\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044e \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <a href=\"https:\/\/github.com\/Qwokka\/Cetus\" rel=\"noopener noreferrer nofollow\">Cetus<\/a>. <\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u044e-\u043a\u0430 \u044f \u0432 \u0440\u0430\u0437\u0434\u0435\u043b \u0441\u0442\u0440\u043e\u043a \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430. <\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0435, \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e. \u041f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u0439\u0442\u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u043c \u043f\u0443\u0442\u0435\u043c &#8212; \u043a\u043e\u043f\u0430\u0442\u044c. \u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 \u0440\u0430\u0437\u0434\u0435\u043b Memory View. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0443 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 315136 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0438\u0433\u0440\u043e\u043a\u0430. \u0421\u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u043a<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0414\u0435\u0439<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-343096","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/343096","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=343096"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/343096\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=343096"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=343096"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=343096"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}