
const int c_overlap_offset_step1add[8] = { 0, 1, 2, 1, 4, 4, 4, 4 };

const int c_overlap_offset_step2sub[8] = { 8, 8, 8, 7, 8, 9, 10, 11 };

__int64 __fastcall Decode_LZB_OneChunk(const char *comp, const char *comp_end, char *raw, __int64 rawLen, const char *dictionaryBase)
{
  const char *v6; // rcx
  const char *v7; // rcx
  const char *v8; // rcx
  const char *v9; // rcx
  const char *v10; // rcx
  const char *v11; // rcx
  const char *v12; // rcx
  const char *v13; // rcx
  const char *v14; // rcx
  const char *v15; // rcx
  __int64 v16; // [rsp+0h] [rbp-618h]
  void *Src; // [rsp+20h] [rbp-5F8h]
  char *to; // [rsp+28h] [rbp-5F0h]
  __int64 length; // [rsp+30h] [rbp-5E8h]
  char *v20; // [rsp+38h] [rbp-5E0h]
  unsigned __int64 v21; // [rsp+40h] [rbp-5D8h]
  unsigned __int64 v22; // [rsp+48h] [rbp-5D0h]
  unsigned __int64 v23; // [rsp+50h] [rbp-5C8h]
  const char *v24; // [rsp+58h] [rbp-5C0h]
  __int64 v25; // [rsp+60h] [rbp-5B8h]
  __int64 v26; // [rsp+68h] [rbp-5B0h]
  __int64 v27; // [rsp+70h] [rbp-5A8h]
  __int64 v28; // [rsp+78h] [rbp-5A0h]
  __int64 v29; // [rsp+80h] [rbp-598h]
  __int64 v30; // [rsp+88h] [rbp-590h]
  __int64 v31; // [rsp+90h] [rbp-588h]
  __int64 v32; // [rsp+98h] [rbp-580h]
  __int64 v33; // [rsp+A0h] [rbp-578h]
  __int64 v34; // [rsp+A8h] [rbp-570h]
  unsigned __int64 v35; // [rsp+B0h] [rbp-568h]
  unsigned __int64 v36; // [rsp+B8h] [rbp-560h]
  unsigned __int64 v37; // [rsp+C0h] [rbp-558h]
  unsigned __int64 v38; // [rsp+C8h] [rbp-550h]
  unsigned __int64 v39; // [rsp+D0h] [rbp-548h]
  unsigned __int64 v40; // [rsp+D8h] [rbp-540h]
  unsigned __int64 v41; // [rsp+E0h] [rbp-538h]
  unsigned __int64 v42; // [rsp+E8h] [rbp-530h]
  unsigned __int64 v43; // [rsp+F0h] [rbp-528h]
  unsigned __int64 v44; // [rsp+F8h] [rbp-520h]
  char *v45; // [rsp+100h] [rbp-518h]
  char *v46; // [rsp+108h] [rbp-510h]
  char *v47; // [rsp+110h] [rbp-508h]
  char *v48; // [rsp+118h] [rbp-500h]
  char *v49; // [rsp+120h] [rbp-4F8h]
  char *v50; // [rsp+128h] [rbp-4F0h]
  char *v51; // [rsp+130h] [rbp-4E8h]
  char *v52; // [rsp+138h] [rbp-4E0h]
  char *v53; // [rsp+140h] [rbp-4D8h]
  char *v54; // [rsp+148h] [rbp-4D0h]
  unsigned int v55; // [rsp+150h] [rbp-4C8h]
  unsigned int v56; // [rsp+154h] [rbp-4C4h]
  unsigned int v57; // [rsp+158h] [rbp-4C0h]
  unsigned int v58; // [rsp+15Ch] [rbp-4BCh]
  unsigned int v59; // [rsp+160h] [rbp-4B8h]
  unsigned int v60; // [rsp+164h] [rbp-4B4h]
  unsigned int v61; // [rsp+168h] [rbp-4B0h]
  unsigned int v62; // [rsp+16Ch] [rbp-4ACh]
  unsigned int v63; // [rsp+170h] [rbp-4A8h]
  unsigned int v64; // [rsp+174h] [rbp-4A4h]
  unsigned int v65; // [rsp+178h] [rbp-4A0h]
  unsigned int v66; // [rsp+17Ch] [rbp-49Ch]
  unsigned int v67; // [rsp+180h] [rbp-498h]
  unsigned int v68; // [rsp+184h] [rbp-494h]
  unsigned int v69; // [rsp+188h] [rbp-490h]
  unsigned int v70; // [rsp+18Ch] [rbp-48Ch]
  unsigned int v71; // [rsp+190h] [rbp-488h]
  unsigned int v72; // [rsp+194h] [rbp-484h]
  unsigned int v73; // [rsp+198h] [rbp-480h]
  unsigned int v74; // [rsp+19Ch] [rbp-47Ch]
  unsigned int v75; // [rsp+1A0h] [rbp-478h]
  unsigned int v76; // [rsp+1A4h] [rbp-474h]
  unsigned int v77; // [rsp+1A8h] [rbp-470h]
  unsigned int v78; // [rsp+1ACh] [rbp-46Ch]
  unsigned int v79; // [rsp+1B0h] [rbp-468h]
  unsigned __int64 v80; // [rsp+1B8h] [rbp-460h]
  unsigned __int64 v81; // [rsp+1C0h] [rbp-458h]
  char *v82; // [rsp+1C8h] [rbp-450h]
  char *v83; // [rsp+1D0h] [rbp-448h]
  char *v84; // [rsp+1D8h] [rbp-440h]
  unsigned __int64 v85; // [rsp+1E0h] [rbp-438h]
  char *v86; // [rsp+1E8h] [rbp-430h]
  char *v87; // [rsp+1F0h] [rbp-428h]
  char *v88; // [rsp+1F8h] [rbp-420h]
  unsigned __int64 v89; // [rsp+200h] [rbp-418h]
  char *v90; // [rsp+208h] [rbp-410h]
  char *v91; // [rsp+210h] [rbp-408h]
  unsigned __int64 v92; // [rsp+218h] [rbp-400h]
  unsigned __int64 v93; // [rsp+220h] [rbp-3F8h]
  unsigned __int64 v94; // [rsp+228h] [rbp-3F0h]
  char *v95; // [rsp+230h] [rbp-3E8h]
  unsigned __int64 v96; // [rsp+238h] [rbp-3E0h]
  unsigned __int64 v97; // [rsp+240h] [rbp-3D8h]
  unsigned __int64 v98; // [rsp+248h] [rbp-3D0h]
  char *v99; // [rsp+250h] [rbp-3C8h]
  unsigned __int64 v100; // [rsp+258h] [rbp-3C0h]
  unsigned __int64 v101; // [rsp+260h] [rbp-3B8h]
  unsigned __int64 v102; // [rsp+268h] [rbp-3B0h]
  unsigned __int64 v103; // [rsp+270h] [rbp-3A8h]
  unsigned __int64 v104; // [rsp+278h] [rbp-3A0h]
  unsigned __int64 v105; // [rsp+280h] [rbp-398h]
  unsigned __int64 v106; // [rsp+288h] [rbp-390h]
  unsigned __int64 v107; // [rsp+290h] [rbp-388h]
  unsigned __int64 v108; // [rsp+298h] [rbp-380h]
  char *v109; // [rsp+2A0h] [rbp-378h]
  char *v110; // [rsp+2A8h] [rbp-370h]
  unsigned __int64 v111; // [rsp+2B0h] [rbp-368h]
  char *v112; // [rsp+2B8h] [rbp-360h]
  unsigned __int64 v113; // [rsp+2C0h] [rbp-358h]
  char *v114; // [rsp+2C8h] [rbp-350h]
  char *v115; // [rsp+2D0h] [rbp-348h]
  unsigned __int64 v116; // [rsp+2D8h] [rbp-340h]
  unsigned __int64 v117; // [rsp+2E0h] [rbp-338h]
  char *v118; // [rsp+2E8h] [rbp-330h]
  unsigned __int64 v119; // [rsp+2F0h] [rbp-328h]
  unsigned __int64 v120; // [rsp+2F8h] [rbp-320h]
  unsigned __int64 v121; // [rsp+300h] [rbp-318h]
  unsigned __int64 v122; // [rsp+308h] [rbp-310h]
  char *v123; // [rsp+310h] [rbp-308h]
  unsigned __int64 v124; // [rsp+318h] [rbp-300h]
  unsigned __int64 v125; // [rsp+320h] [rbp-2F8h]
  unsigned __int64 v126; // [rsp+328h] [rbp-2F0h]
  unsigned __int64 v127; // [rsp+330h] [rbp-2E8h]
  unsigned __int64 v128; // [rsp+338h] [rbp-2E0h]
  char *v129; // [rsp+340h] [rbp-2D8h]
  char *v130; // [rsp+348h] [rbp-2D0h]
  unsigned __int64 v131; // [rsp+350h] [rbp-2C8h]
  unsigned __int64 v132; // [rsp+358h] [rbp-2C0h]
  unsigned __int64 v133; // [rsp+360h] [rbp-2B8h]
  unsigned __int64 v134; // [rsp+368h] [rbp-2B0h]
  char *v135; // [rsp+370h] [rbp-2A8h]
  unsigned __int64 v136; // [rsp+378h] [rbp-2A0h]
  unsigned __int64 v137; // [rsp+380h] [rbp-298h]
  unsigned __int64 v138; // [rsp+388h] [rbp-290h]
  unsigned __int64 v139; // [rsp+390h] [rbp-288h]
  size_t v140; // [rsp+398h] [rbp-280h]
  char *v141; // [rsp+3A0h] [rbp-278h]
  size_t v142; // [rsp+3A8h] [rbp-270h]
  char *v143; // [rsp+3B0h] [rbp-268h]
  char *v144; // [rsp+3B8h] [rbp-260h]
  char *v145; // [rsp+3C0h] [rbp-258h]
  char *v146; // [rsp+3C8h] [rbp-250h]
  size_t v147; // [rsp+3D0h] [rbp-248h]
  size_t v148; // [rsp+3D8h] [rbp-240h]
  char *v149; // [rsp+3E0h] [rbp-238h]
  char *v150; // [rsp+3E8h] [rbp-230h]
  unsigned __int64 v151; // [rsp+3F0h] [rbp-228h]
  char *v152; // [rsp+3F8h] [rbp-220h]
  size_t Size; // [rsp+400h] [rbp-218h]
  size_t v154; // [rsp+408h] [rbp-210h]
  unsigned __int64 v155; // [rsp+410h] [rbp-208h]
  char *v156; // [rsp+418h] [rbp-200h]
  size_t v157; // [rsp+420h] [rbp-1F8h]
  char *v158; // [rsp+428h] [rbp-1F0h]
  __int64 v159; // [rsp+430h] [rbp-1E8h]
  __int64 v160; // [rsp+438h] [rbp-1E0h]
  char *v161; // [rsp+440h] [rbp-1D8h]
  char *v162; // [rsp+448h] [rbp-1D0h]
  char *v163; // [rsp+450h] [rbp-1C8h]
  char *v164; // [rsp+458h] [rbp-1C0h]
  __int64 v165; // [rsp+460h] [rbp-1B8h]
  char *v166; // [rsp+468h] [rbp-1B0h]
  char *v167; // [rsp+470h] [rbp-1A8h]
  char *v168; // [rsp+478h] [rbp-1A0h]
  char *v169; // [rsp+480h] [rbp-198h]
  char *v170; // [rsp+488h] [rbp-190h]
  __int64 v171; // [rsp+490h] [rbp-188h]
  char *v172; // [rsp+498h] [rbp-180h]
  char *v173; // [rsp+4A0h] [rbp-178h]
  __int64 v174; // [rsp+4A8h] [rbp-170h]
  char *v175; // [rsp+4B0h] [rbp-168h]
  char *v176; // [rsp+4B8h] [rbp-160h]
  __int64 v177; // [rsp+4C0h] [rbp-158h]
  char *v178; // [rsp+4C8h] [rbp-150h]
  char *v179; // [rsp+4D0h] [rbp-148h]
  char *v180; // [rsp+4D8h] [rbp-140h]
  __int64 v181; // [rsp+4E8h] [rbp-130h]
  __int64 v182; // [rsp+4F0h] [rbp-128h]
  char *v183; // [rsp+4F8h] [rbp-120h]
  char *v184; // [rsp+500h] [rbp-118h]
  char *from; // [rsp+508h] [rbp-110h]
  char *v186; // [rsp+510h] [rbp-108h]
  __int128 v187; // [rsp+520h] [rbp-F8h]
  __int128 v188; // [rsp+530h] [rbp-E8h]
  __int128 v189; // [rsp+540h] [rbp-D8h]
  __int128 v190; // [rsp+550h] [rbp-C8h]
  __int128 v191; // [rsp+560h] [rbp-B8h]
  char Dst[128]; // [rsp+570h] [rbp-A8h]
  char v193; // [rsp+5F0h] [rbp-28h]
  const char *v194; // [rsp+620h] [rbp+8h]
  char *v195; // [rsp+628h] [rbp+10h]

  v195 = (char *)comp_end;
  v194 = comp;
  to = raw;
  v20 = &raw[rawLen];
  Src = (void *)comp;
  v24 = comp_end - 62;
  if ( raw - dictionaryBase < 0x10000 )
  {
    while ( 1 )
    {
      while ( 1 )
      {
        if ( to >= v20
          && rrDisplayAssertion("v:\\devel\\projects\\oodle2\\core\\lzb.cpp", 1583, "Decode_LZB_OneChunk", "rp < rpEnd") )
        {
          __debugbreak();
        }
        if ( Src >= v24 )
        {
          if ( Src >= v195 )
          {
            ooLogErrorPre();
            if ( g_fp_OodlePlugin_Printf )
              g_fp_OodlePlugin_Printf(
                1,
                "v:\\devel\\projects\\oodle2\\core\\lzb.cpp",
                1585,
                "OODLE ERROR : LZ corruption : LZB comp over-read\n",
                Src);
            ooLogErrorPost();
            return -1i64;
          }
          if ( v195 == &v193 )
          {
            ooLogErrorPre();
            if ( g_fp_OodlePlugin_Printf )
              g_fp_OodlePlugin_Printf(
                1,
                "v:\\devel\\projects\\oodle2\\core\\lzb.cpp",
                1585,
                "OODLE ERROR : LZ corruption : LZB comp safe twice\n",
                Src);
            ooLogErrorPost();
            return -1i64;
          }
          Size = v195 - (_BYTE *)Src;
          if ( (unsigned __int64)(v195 - (_BYTE *)Src) >= 0x80
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb.cpp",
                 1585,
                 "Decode_LZB_OneChunk",
                 "copy_len < sizeof(cp_safe)") )
          {
            __debugbreak();
          }
          memmove(Dst, Src, Size);
          v194 = &Dst[-((_BYTE *)Src - v194)];
          v195 = &v193;
          v24 = (char *)&v16 + 1458;
          Src = Dst;
        }
        if ( Src >= v195
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
               4,
               "Decode_LZB_OneChunk",
               "cp < comp_end") )
        {
          __debugbreak();
        }
        v23 = *(unsigned __int8 *)Src;
        Src = (char *)Src + 1;
        length = v23 & 0xF;
        if ( (unsigned __int64)length > 8 )
          break;
        if ( to + 8 > v20 + 8
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
               123,
               "Decode_LZB_OneChunk",
               "rp+8 <= rpEnd+8") )
        {
          __debugbreak();
        }
        if ( (char *)Src + 8 > v195
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
               124,
               "Decode_LZB_OneChunk",
               "cp+8 <= comp_end") )
        {
          __debugbreak();
        }
        *(_QWORD *)to = *(_QWORD *)Src;
        to += length;
        Src = (char *)Src + length;
        v21 = v23 >> 4;
        if ( (char *)Src + 2 > v195
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
               6,
               "Decode_LZB_OneChunk",
               "cp+2 <= comp_end") )
        {
          __debugbreak();
        }
        v22 = *(unsigned __int16 *)Src;
        if ( v21 > 8 )
        {
          if ( v21 >= 0xF )
          {
            if ( Src >= v195
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                   95,
                   "Decode_LZB_OneChunk",
                   "cp < comp_end") )
            {
              __debugbreak();
            }
            v126 = v22 & 0x7F;
            Src = (char *)Src + 1;
            if ( v22 & 0x80 )
            {
              v21 = v126 >> 3;
              v41 = (v126 >> 3) + 4;
              if ( v126 >> 3 == 15 )
              {
                if ( (char *)Src + 3 > v195
                  && rrDisplayAssertion(
                       "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                       117,
                       "Decode_LZB_OneChunk",
                       "cp+3 <= comp_end") )
                {
                  __debugbreak();
                }
                v76 = *(unsigned __int8 *)Src;
                Src = (char *)Src + 1;
                if ( v76 >= 0xC0 )
                {
                  v41 += (v76 - 192) << 8;
                  v41 += *(unsigned __int8 *)Src;
                  Src = (char *)Src + 1;
                }
                else
                {
                  v41 += v76;
                }
              }
              if ( &to[v41] > v20 )
              {
                ooLogErrorPre();
                if ( g_fp_OodlePlugin_Printf )
                  g_fp_OodlePlugin_Printf(
                    1,
                    "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                    125,
                    "OODLE ERROR : LZ corruption : LZB match past end\n",
                    Src);
                ooLogErrorPost();
                return -1i64;
              }
              v107 = v22 & 7;
              if ( v107 > to - dictionaryBase )
              {
                ooLogErrorPre();
                if ( g_fp_OodlePlugin_Printf )
                  g_fp_OodlePlugin_Printf(
                    1,
                    "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                    135,
                    "OODLE ERROR : LZ corruption : LZB offset out of bounds\n",
                    Src);
                ooLogErrorPost();
                return -1i64;
              }
              v51 = &to[-v107];
              v84 = to;
              *to = to[-v107];
              v84[1] = v51[1];
              v84[2] = v51[2];
              v84[3] = v51[3];
              v51 += c_overlap_offset_step1add[v107];
              *((_DWORD *)v84 + 1) = *(_DWORD *)v51;
              if ( v41 > 8 )
              {
                v7 = &v51[-c_overlap_offset_step2sub[v107] + 8];
                v162 = v84 + 8;
                copy_no_overlap_long(v84 + 8, v7, v41 - 8);
              }
              to += v41;
            }
            else
            {
              v155 = *(unsigned __int16 *)Src;
              Src = (char *)Src + 2;
              if ( v155 > to - dictionaryBase )
              {
                ooLogErrorPre();
                if ( g_fp_OodlePlugin_Printf )
                  g_fp_OodlePlugin_Printf(
                    1,
                    "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                    164,
                    "OODLE ERROR : LZ corruption : LZB offset out of bounds\n",
                    Src);
                ooLogErrorPost();
                return -1i64;
              }
              v178 = &to[-v155];
              v29 = v126 + v21 + 4;
              if ( v126 == 127 )
              {
                if ( (char *)Src + 3 > v195
                  && rrDisplayAssertion(
                       "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                       177,
                       "Decode_LZB_OneChunk",
                       "cp+3 <= comp_end") )
                {
                  __debugbreak();
                }
                v70 = *(unsigned __int8 *)Src;
                Src = (char *)Src + 1;
                if ( v70 >= 0xC0 )
                {
                  v29 += (v70 - 192) << 8;
                  v29 += *(unsigned __int8 *)Src;
                  Src = (char *)Src + 1;
                }
                else
                {
                  v29 += v70;
                }
              }
              if ( &to[v29] > v20 )
              {
                ooLogErrorPre();
                if ( g_fp_OodlePlugin_Printf )
                  g_fp_OodlePlugin_Printf(
                    1,
                    "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                    185,
                    "OODLE ERROR : LZ corruption : LZB match past end\n",
                    Src);
                ooLogErrorPost();
                return -1i64;
              }
              copy_no_overlap_long(to, v178, v29);
              to += v29;
            }
          }
          else
          {
            if ( v22 > to - dictionaryBase )
            {
              ooLogErrorPre();
              if ( g_fp_OodlePlugin_Printf )
                g_fp_OodlePlugin_Printf(
                  1,
                  "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                  57,
                  "OODLE ERROR : LZ corruption : LZB offset out of bounds\n",
                  Src);
              ooLogErrorPost();
              return -1i64;
            }
            Src = (char *)Src + 2;
            v112 = &to[-v22];
            v98 = v21 + 4;
            if ( v22 < 8
              && v98 > v22
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                   69,
                   "Decode_LZB_OneChunk",
                   "off >= 8 || ml <= off") )
            {
              __debugbreak();
            }
            if ( v98 > 0x12
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                   70,
                   "Decode_LZB_OneChunk",
                   "ml <= 18") )
            {
              __debugbreak();
            }
            if ( &to[v98] > v20 )
            {
              ooLogErrorPre();
              if ( g_fp_OodlePlugin_Printf )
                g_fp_OodlePlugin_Printf(
                  1,
                  "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                  74,
                  "OODLE ERROR : LZ corruption : LZB match past end\n",
                  Src);
              ooLogErrorPost();
              return -1i64;
            }
            if ( to + 16 > v20 + 8
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                   80,
                   "Decode_LZB_OneChunk",
                   "rp+16 <= rpEnd+8") )
            {
              __debugbreak();
            }
            *(_QWORD *)to = *(_QWORD *)v112;
            *((_QWORD *)to + 1) = *((_QWORD *)v112 + 1);
            if ( v98 > 0x10 )
              *((_WORD *)to + 8) = *((_WORD *)v112 + 8);
            to += v98;
          }
        }
        else
        {
          if ( v22 > to - dictionaryBase )
          {
            ooLogErrorPre();
            if ( g_fp_OodlePlugin_Printf )
              g_fp_OodlePlugin_Printf(
                1,
                "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                20,
                "OODLE ERROR : LZ corruption : LZB offset out of bounds\n",
                Src);
            ooLogErrorPost();
            return -1i64;
          }
          Src = (char *)Src + 2;
          v145 = &to[-v22];
          v103 = v21 + 4;
          if ( v21 + 4 > 0xC
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                 29,
                 "Decode_LZB_OneChunk",
                 "ml <= 12") )
          {
            __debugbreak();
          }
          if ( &to[v103] > v20 )
          {
            ooLogErrorPre();
            if ( g_fp_OodlePlugin_Printf )
              g_fp_OodlePlugin_Printf(
                1,
                "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                38,
                "OODLE ERROR : LZ corruption : LZB match past end\n",
                Src);
            ooLogErrorPost();
            return -1i64;
          }
          if ( to + 12 > v20 + 8
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                 43,
                 "Decode_LZB_OneChunk",
                 "rp+12 <= rpEnd+8") )
          {
            __debugbreak();
          }
          *(_QWORD *)to = *(_QWORD *)v145;
          *((_DWORD *)to + 2) = *((_DWORD *)v145 + 2);
          to += v103;
        }
      }
      if ( (unsigned __int64)length < 0xF )
      {
        if ( &to[length] >= v20 )
        {
          length = rrPtrDiff32_6(v20 - to);
          if ( (char *)Src + length > v195 )
          {
            ooLogErrorPre();
            if ( g_fp_OodlePlugin_Printf )
              g_fp_OodlePlugin_Printf(
                1,
                "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                67,
                "OODLE ERROR : LZ corruption : LZB decomp past end\n",
                Src);
            ooLogErrorPost();
            return -1i64;
          }
          if ( &to[length] > v20
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                 70,
                 "Decode_LZB_OneChunk",
                 "rp+lrl <= rpEnd") )
          {
            __debugbreak();
          }
          if ( (char *)Src + length > v195
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                 71,
                 "Decode_LZB_OneChunk",
                 "cp+lrl <= comp_end") )
          {
            __debugbreak();
          }
          copy_no_overlap_nooverrun(to, (const char *)Src, length);
          to += length;
          Src = (char *)Src + length;
LABEL_1055:
          if ( to == v20 )
            return rrPtrDiff_10((_BYTE *)Src - v194);
          ooLogErrorPre();
          if ( g_fp_OodlePlugin_Printf )
            g_fp_OodlePlugin_Printf(
              1,
              "v:\\devel\\projects\\oodle2\\core\\lzb.cpp",
              1650,
              "OODLE ERROR : LZ corruption : LZB didn't stop at end\n",
              Src);
          ooLogErrorPost();
          return -1i64;
        }
        if ( to + 16 > v20 + 8
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
               90,
               "Decode_LZB_OneChunk",
               "rp+16 <= rpEnd+8") )
        {
          __debugbreak();
        }
        if ( (char *)Src + 16 > v195
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
               91,
               "Decode_LZB_OneChunk",
               "cp+16 <= comp_end") )
        {
          __debugbreak();
        }
        _mm_store_si128((__m128i *)&v187, _mm_loadu_si128((const __m128i *)Src));
        _mm_storeu_si128((__m128i *)to, _mm_load_si128((const __m128i *)&v187));
        to += length;
        Src = (char *)Src + length;
      }
      else
      {
        if ( (char *)Src + 3 > v195
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
               16,
               "Decode_LZB_OneChunk",
               "cp+3 <= comp_end") )
        {
          __debugbreak();
        }
        v77 = *(unsigned __int8 *)Src;
        Src = (char *)Src + 1;
        if ( v77 >= 0xC0 )
        {
          length += (v77 - 192) << 8;
          length += *(unsigned __int8 *)Src;
          Src = (char *)Src + 1;
        }
        else
        {
          length += v77;
        }
        if ( (char *)Src + length > v195 )
        {
          ooLogErrorPre();
          if ( g_fp_OodlePlugin_Printf )
            g_fp_OodlePlugin_Printf(
              1,
              "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
              23,
              "OODLE ERROR : LZ corruption : LZB decomp past end\n",
              Src);
          ooLogErrorPost();
          return -1i64;
        }
        if ( &to[length] >= v20 )
        {
          if ( &to[length] > v20 )
          {
            ooLogErrorPre();
            if ( g_fp_OodlePlugin_Printf )
              g_fp_OodlePlugin_Printf(
                1,
                "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                32,
                "OODLE ERROR : LZ corruption : LZB decomp past end\n",
                Src);
            ooLogErrorPost();
            return -1i64;
          }
          if ( (char *)Src + length > v195
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                 36,
                 "Decode_LZB_OneChunk",
                 "cp+lrl <= comp_end") )
          {
            __debugbreak();
          }
          copy_no_overlap_nooverrun(to, (const char *)Src, length);
          to += length;
          Src = (char *)Src + length;
          goto LABEL_1055;
        }
        if ( &to[length] > v20
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
               46,
               "Decode_LZB_OneChunk",
               "rp+lrl <= rpEnd") )
        {
          __debugbreak();
        }
        if ( (char *)Src + length > v195
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
               47,
               "Decode_LZB_OneChunk",
               "cp+lrl <= comp_end") )
        {
          __debugbreak();
        }
        copy_no_overlap_long(to, (const char *)Src, length);
        to += length;
        Src = (char *)Src + length;
        if ( Src >= v24 )
        {
          if ( Src >= v195 )
          {
            ooLogErrorPre();
            if ( g_fp_OodlePlugin_Printf )
              g_fp_OodlePlugin_Printf(
                1,
                "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                54,
                "OODLE ERROR : LZ corruption : LZB comp over-read\n",
                Src);
            ooLogErrorPost();
            return -1i64;
          }
          if ( v195 == &v193 )
          {
            ooLogErrorPre();
            if ( g_fp_OodlePlugin_Printf )
              g_fp_OodlePlugin_Printf(
                1,
                "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                54,
                "OODLE ERROR : LZ corruption : LZB comp safe twice\n",
                Src);
            ooLogErrorPost();
            return -1i64;
          }
          v157 = v195 - (_BYTE *)Src;
          if ( (unsigned __int64)(v195 - (_BYTE *)Src) >= 0x80
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                 54,
                 "Decode_LZB_OneChunk",
                 "copy_len < sizeof(cp_safe)") )
          {
            __debugbreak();
          }
          memmove(Dst, Src, v157);
          v194 = &Dst[-((_BYTE *)Src - v194)];
          v195 = &v193;
          v24 = (char *)&v16 + 1458;
          Src = Dst;
        }
      }
      v21 = v23 >> 4;
      if ( (char *)Src + 2 > v195
        && rrDisplayAssertion(
             "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
             6,
             "Decode_LZB_OneChunk",
             "cp+2 <= comp_end") )
      {
        __debugbreak();
      }
      v22 = *(unsigned __int16 *)Src;
      if ( v21 > 8 )
      {
        if ( v21 >= 0xF )
        {
          if ( Src >= v195
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                 95,
                 "Decode_LZB_OneChunk",
                 "cp < comp_end") )
          {
            __debugbreak();
          }
          v132 = v22 & 0x7F;
          Src = (char *)Src + 1;
          if ( v22 & 0x80 )
          {
            v21 = v132 >> 3;
            v43 = (v132 >> 3) + 4;
            if ( v132 >> 3 == 15 )
            {
              if ( (char *)Src + 3 > v195
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     117,
                     "Decode_LZB_OneChunk",
                     "cp+3 <= comp_end") )
              {
                __debugbreak();
              }
              v72 = *(unsigned __int8 *)Src;
              Src = (char *)Src + 1;
              if ( v72 >= 0xC0 )
              {
                v43 += (v72 - 192) << 8;
                v43 += *(unsigned __int8 *)Src;
                Src = (char *)Src + 1;
              }
              else
              {
                v43 += v72;
              }
            }
            if ( &to[v43] > v20 )
            {
              ooLogErrorPre();
              if ( g_fp_OodlePlugin_Printf )
                g_fp_OodlePlugin_Printf(
                  1,
                  "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                  125,
                  "OODLE ERROR : LZ corruption : LZB match past end\n",
                  Src);
              ooLogErrorPost();
              return -1i64;
            }
            v105 = v22 & 7;
            if ( v105 > to - dictionaryBase )
            {
              ooLogErrorPre();
              if ( g_fp_OodlePlugin_Printf )
                g_fp_OodlePlugin_Printf(
                  1,
                  "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                  135,
                  "OODLE ERROR : LZ corruption : LZB offset out of bounds\n",
                  Src);
              ooLogErrorPost();
              return -1i64;
            }
            v45 = &to[-v105];
            v82 = to;
            *to = to[-v105];
            v82[1] = v45[1];
            v82[2] = v45[2];
            v82[3] = v45[3];
            v45 += c_overlap_offset_step1add[v105];
            *((_DWORD *)v82 + 1) = *(_DWORD *)v45;
            if ( v43 > 8 )
            {
              v6 = &v45[-c_overlap_offset_step2sub[v105] + 8];
              v168 = v82 + 8;
              copy_no_overlap_long(v82 + 8, v6, v43 - 8);
            }
            to += v43;
          }
          else
          {
            v151 = *(unsigned __int16 *)Src;
            Src = (char *)Src + 2;
            if ( v151 > to - dictionaryBase )
            {
              ooLogErrorPre();
              if ( g_fp_OodlePlugin_Printf )
                g_fp_OodlePlugin_Printf(
                  1,
                  "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                  164,
                  "OODLE ERROR : LZ corruption : LZB offset out of bounds\n",
                  Src);
              ooLogErrorPost();
              return -1i64;
            }
            from = &to[-v151];
            v31 = v132 + v21 + 4;
            if ( v132 == 127 )
            {
              if ( (char *)Src + 3 > v195
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     177,
                     "Decode_LZB_OneChunk",
                     "cp+3 <= comp_end") )
              {
                __debugbreak();
              }
              v66 = *(unsigned __int8 *)Src;
              Src = (char *)Src + 1;
              if ( v66 >= 0xC0 )
              {
                v31 += (v66 - 192) << 8;
                v31 += *(unsigned __int8 *)Src;
                Src = (char *)Src + 1;
              }
              else
              {
                v31 += v66;
              }
            }
            if ( &to[v31] > v20 )
            {
              ooLogErrorPre();
              if ( g_fp_OodlePlugin_Printf )
                g_fp_OodlePlugin_Printf(
                  1,
                  "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                  185,
                  "OODLE ERROR : LZ corruption : LZB match past end\n",
                  Src);
              ooLogErrorPost();
              return -1i64;
            }
            copy_no_overlap_long(to, from, v31);
            to += v31;
          }
        }
        else
        {
          if ( v22 > to - dictionaryBase )
          {
            ooLogErrorPre();
            if ( g_fp_OodlePlugin_Printf )
              g_fp_OodlePlugin_Printf(
                1,
                "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                57,
                "OODLE ERROR : LZ corruption : LZB offset out of bounds\n",
                Src);
            ooLogErrorPost();
            return -1i64;
          }
          Src = (char *)Src + 2;
          v130 = &to[-v22];
          v80 = v21 + 4;
          if ( v22 < 8
            && v80 > v22
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                 69,
                 "Decode_LZB_OneChunk",
                 "off >= 8 || ml <= off") )
          {
            __debugbreak();
          }
          if ( v80 > 0x12
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                 70,
                 "Decode_LZB_OneChunk",
                 "ml <= 18") )
          {
            __debugbreak();
          }
          if ( &to[v80] > v20 )
          {
            ooLogErrorPre();
            if ( g_fp_OodlePlugin_Printf )
              g_fp_OodlePlugin_Printf(
                1,
                "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                74,
                "OODLE ERROR : LZ corruption : LZB match past end\n",
                Src);
            ooLogErrorPost();
            return -1i64;
          }
          if ( to + 16 > v20 + 8
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                 80,
                 "Decode_LZB_OneChunk",
                 "rp+16 <= rpEnd+8") )
          {
            __debugbreak();
          }
          *(_QWORD *)to = *(_QWORD *)v130;
          *((_QWORD *)to + 1) = *((_QWORD *)v130 + 1);
          if ( v80 > 0x10 )
            *((_WORD *)to + 8) = *((_WORD *)v130 + 8);
          to += v80;
        }
      }
      else
      {
        if ( v22 > to - dictionaryBase )
        {
          ooLogErrorPre();
          if ( g_fp_OodlePlugin_Printf )
            g_fp_OodlePlugin_Printf(
              1,
              "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
              20,
              "OODLE ERROR : LZ corruption : LZB offset out of bounds\n",
              Src);
          ooLogErrorPost();
          return -1i64;
        }
        Src = (char *)Src + 2;
        v143 = &to[-v22];
        v102 = v21 + 4;
        if ( v21 + 4 > 0xC
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
               29,
               "Decode_LZB_OneChunk",
               "ml <= 12") )
        {
          __debugbreak();
        }
        if ( &to[v102] > v20 )
        {
          ooLogErrorPre();
          if ( g_fp_OodlePlugin_Printf )
            g_fp_OodlePlugin_Printf(
              1,
              "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
              38,
              "OODLE ERROR : LZ corruption : LZB match past end\n",
              Src);
          ooLogErrorPost();
          return -1i64;
        }
        if ( to + 12 > v20 + 8
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
               43,
               "Decode_LZB_OneChunk",
               "rp+12 <= rpEnd+8") )
        {
          __debugbreak();
        }
        *(_QWORD *)to = *(_QWORD *)v143;
        *((_DWORD *)to + 2) = *((_DWORD *)v143 + 2);
        to += v102;
      }
    }
  }
  while ( 1 )
  {
    while ( 1 )
    {
      while ( 1 )
      {
        while ( 1 )
        {
          while ( 1 )
          {
            while ( 1 )
            {
              if ( to >= v20
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb.cpp",
                     1601,
                     "Decode_LZB_OneChunk",
                     "rp < rpEnd") )
              {
                __debugbreak();
              }
              if ( Src >= v24 )
              {
                if ( Src >= v195 )
                {
                  ooLogErrorPre();
                  if ( g_fp_OodlePlugin_Printf )
                    g_fp_OodlePlugin_Printf(
                      1,
                      "v:\\devel\\projects\\oodle2\\core\\lzb.cpp",
                      1603,
                      "OODLE ERROR : LZ corruption : LZB comp over-read\n",
                      Src);
                  ooLogErrorPost();
                  return -1i64;
                }
                if ( v195 == &v193 )
                {
                  ooLogErrorPre();
                  if ( g_fp_OodlePlugin_Printf )
                    g_fp_OodlePlugin_Printf(
                      1,
                      "v:\\devel\\projects\\oodle2\\core\\lzb.cpp",
                      1603,
                      "OODLE ERROR : LZ corruption : LZB comp safe twice\n",
                      Src);
                  ooLogErrorPost();
                  return -1i64;
                }
                v147 = v195 - (_BYTE *)Src;
                if ( (unsigned __int64)(v195 - (_BYTE *)Src) >= 0x80
                  && rrDisplayAssertion(
                       "v:\\devel\\projects\\oodle2\\core\\lzb.cpp",
                       1603,
                       "Decode_LZB_OneChunk",
                       "copy_len < sizeof(cp_safe)") )
                {
                  __debugbreak();
                }
                memmove(Dst, Src, v147);
                v194 = &Dst[-((_BYTE *)Src - v194)];
                v195 = &v193;
                v24 = (char *)&v16 + 1458;
                Src = Dst;
              }
              if ( v20 - to < 80 )
              {
                if ( to >= v20 )
                {
                  ooLogErrorPre();
                  if ( g_fp_OodlePlugin_Printf )
                    g_fp_OodlePlugin_Printf(
                      1,
                      "v:\\devel\\projects\\oodle2\\core\\lzb.cpp",
                      1616,
                      "OODLE ERROR : LZ corruption : LZB raw went too far\n",
                      Src);
                  ooLogErrorPost();
                  return -1i64;
                }
                goto $last2;
              }
              if ( Src >= v195
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                     4,
                     "Decode_LZB_OneChunk",
                     "cp < comp_end") )
              {
                __debugbreak();
              }
              v23 = *(unsigned __int8 *)Src;
              Src = (char *)Src + 1;
              length = v23 & 0xF;
              if ( (unsigned __int64)length <= 8 )
                break;
              if ( (unsigned __int64)length < 0xF )
              {
                if ( &to[length] >= v20 )
                {
                  length = rrPtrDiff32_6(v20 - to);
                  if ( (char *)Src + length <= v195 )
                  {
                    if ( &to[length] > v20
                      && rrDisplayAssertion(
                           "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                           70,
                           "Decode_LZB_OneChunk",
                           "rp+lrl <= rpEnd") )
                    {
                      __debugbreak();
                    }
                    if ( (char *)Src + length > v195
                      && rrDisplayAssertion(
                           "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                           71,
                           "Decode_LZB_OneChunk",
                           "cp+lrl <= comp_end") )
                    {
                      __debugbreak();
                    }
                    copy_no_overlap_nooverrun(to, (const char *)Src, length);
                    to += length;
                    Src = (char *)Src + length;
                    goto LABEL_1055;
                  }
                  ooLogErrorPre();
                  if ( g_fp_OodlePlugin_Printf )
                    g_fp_OodlePlugin_Printf(
                      1,
                      "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                      67,
                      "OODLE ERROR : LZ corruption : LZB decomp past end\n",
                      Src);
                  ooLogErrorPost();
                  return -1i64;
                }
                if ( to + 16 > v20 + 8
                  && rrDisplayAssertion(
                       "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                       90,
                       "Decode_LZB_OneChunk",
                       "rp+16 <= rpEnd+8") )
                {
                  __debugbreak();
                }
                if ( (char *)Src + 16 > v195
                  && rrDisplayAssertion(
                       "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                       91,
                       "Decode_LZB_OneChunk",
                       "cp+16 <= comp_end") )
                {
                  __debugbreak();
                }
                _mm_store_si128((__m128i *)&v189, _mm_loadu_si128((const __m128i *)Src));
                _mm_storeu_si128((__m128i *)to, _mm_load_si128((const __m128i *)&v189));
                to += length;
                Src = (char *)Src + length;
              }
              else
              {
                if ( (char *)Src + 3 > v195
                  && rrDisplayAssertion(
                       "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                       16,
                       "Decode_LZB_OneChunk",
                       "cp+3 <= comp_end") )
                {
                  __debugbreak();
                }
                v61 = *(unsigned __int8 *)Src;
                Src = (char *)Src + 1;
                if ( v61 >= 0xC0 )
                {
                  length += (v61 - 192) << 8;
                  length += *(unsigned __int8 *)Src;
                  Src = (char *)Src + 1;
                }
                else
                {
                  length += v61;
                }
                if ( (char *)Src + length > v195 )
                {
                  ooLogErrorPre();
                  if ( g_fp_OodlePlugin_Printf )
                    g_fp_OodlePlugin_Printf(
                      1,
                      "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                      23,
                      "OODLE ERROR : LZ corruption : LZB decomp past end\n",
                      Src);
                  ooLogErrorPost();
                  return -1i64;
                }
                if ( &to[length] >= v20 )
                {
                  if ( &to[length] <= v20 )
                  {
                    if ( (char *)Src + length > v195
                      && rrDisplayAssertion(
                           "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                           36,
                           "Decode_LZB_OneChunk",
                           "cp+lrl <= comp_end") )
                    {
                      __debugbreak();
                    }
                    copy_no_overlap_nooverrun(to, (const char *)Src, length);
                    to += length;
                    Src = (char *)Src + length;
                    goto LABEL_1055;
                  }
                  ooLogErrorPre();
                  if ( g_fp_OodlePlugin_Printf )
                    g_fp_OodlePlugin_Printf(
                      1,
                      "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                      32,
                      "OODLE ERROR : LZ corruption : LZB decomp past end\n",
                      Src);
                  ooLogErrorPost();
                  return -1i64;
                }
                if ( &to[length] > v20
                  && rrDisplayAssertion(
                       "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                       46,
                       "Decode_LZB_OneChunk",
                       "rp+lrl <= rpEnd") )
                {
                  __debugbreak();
                }
                if ( (char *)Src + length > v195
                  && rrDisplayAssertion(
                       "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                       47,
                       "Decode_LZB_OneChunk",
                       "cp+lrl <= comp_end") )
                {
                  __debugbreak();
                }
                copy_no_overlap_long(to, (const char *)Src, length);
                to += length;
                Src = (char *)Src + length;
                if ( Src >= v24 )
                {
                  if ( Src >= v195 )
                  {
                    ooLogErrorPre();
                    if ( g_fp_OodlePlugin_Printf )
                      g_fp_OodlePlugin_Printf(
                        1,
                        "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                        54,
                        "OODLE ERROR : LZ corruption : LZB comp over-read\n",
                        Src);
                    ooLogErrorPost();
                    return -1i64;
                  }
                  if ( v195 == &v193 )
                  {
                    ooLogErrorPre();
                    if ( g_fp_OodlePlugin_Printf )
                      g_fp_OodlePlugin_Printf(
                        1,
                        "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                        54,
                        "OODLE ERROR : LZ corruption : LZB comp safe twice\n",
                        Src);
                    ooLogErrorPost();
                    return -1i64;
                  }
                  v140 = v195 - (_BYTE *)Src;
                  if ( (unsigned __int64)(v195 - (_BYTE *)Src) >= 0x80
                    && rrDisplayAssertion(
                         "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                         54,
                         "Decode_LZB_OneChunk",
                         "copy_len < sizeof(cp_safe)") )
                  {
                    __debugbreak();
                  }
                  memmove(Dst, Src, v140);
                  v194 = &Dst[-((_BYTE *)Src - v194)];
                  v195 = &v193;
                  v24 = (char *)&v16 + 1458;
                  Src = Dst;
                }
              }
              v21 = v23 >> 4;
              if ( (char *)Src + 2 > v195
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     6,
                     "Decode_LZB_OneChunk",
                     "cp+2 <= comp_end") )
              {
                __debugbreak();
              }
              v22 = *(unsigned __int16 *)Src;
              if ( v21 > 8 )
              {
                if ( v21 >= 0xF )
                {
                  if ( Src >= v195
                    && rrDisplayAssertion(
                         "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                         95,
                         "Decode_LZB_OneChunk",
                         "cp < comp_end") )
                  {
                    __debugbreak();
                  }
                  v116 = v22 & 0x7F;
                  Src = (char *)Src + 1;
                  if ( v22 & 0x80 )
                  {
                    v21 = v116 >> 3;
                    v35 = (v116 >> 3) + 4;
                    if ( v116 >> 3 == 15 )
                    {
                      if ( (char *)Src + 3 > v195
                        && rrDisplayAssertion(
                             "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                             117,
                             "Decode_LZB_OneChunk",
                             "cp+3 <= comp_end") )
                      {
                        __debugbreak();
                      }
                      v63 = *(unsigned __int8 *)Src;
                      Src = (char *)Src + 1;
                      if ( v63 >= 0xC0 )
                      {
                        v35 += (v63 - 192) << 8;
                        v35 += *(unsigned __int8 *)Src;
                        Src = (char *)Src + 1;
                      }
                      else
                      {
                        v35 += v63;
                      }
                    }
                    if ( &to[v35] > v20 )
                    {
                      ooLogErrorPre();
                      if ( g_fp_OodlePlugin_Printf )
                        g_fp_OodlePlugin_Printf(
                          1,
                          "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                          125,
                          "OODLE ERROR : LZ corruption : LZB match past end\n",
                          Src);
                      ooLogErrorPost();
                      return -1i64;
                    }
                    v136 = v22 & 7;
                    v49 = &to[-v136];
                    v86 = to;
                    *to = to[-v136];
                    v86[1] = v49[1];
                    v86[2] = v49[2];
                    v86[3] = v49[3];
                    v49 += c_overlap_offset_step1add[v136];
                    *((_DWORD *)v86 + 1) = *(_DWORD *)v49;
                    if ( v35 > 8 )
                    {
                      v8 = &v49[-c_overlap_offset_step2sub[v136] + 8];
                      v164 = v86 + 8;
                      copy_no_overlap_long(v86 + 8, v8, v35 - 8);
                    }
                    to += v35;
                  }
                  else
                  {
                    v182 = *(unsigned __int16 *)Src;
                    Src = (char *)Src + 2;
                    v166 = &to[-v182];
                    v33 = v116 + v21 + 4;
                    if ( v116 == 127 )
                    {
                      if ( (char *)Src + 3 > v195
                        && rrDisplayAssertion(
                             "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                             177,
                             "Decode_LZB_OneChunk",
                             "cp+3 <= comp_end") )
                      {
                        __debugbreak();
                      }
                      v65 = *(unsigned __int8 *)Src;
                      Src = (char *)Src + 1;
                      if ( v65 >= 0xC0 )
                      {
                        v33 += (v65 - 192) << 8;
                        v33 += *(unsigned __int8 *)Src;
                        Src = (char *)Src + 1;
                      }
                      else
                      {
                        v33 += v65;
                      }
                    }
                    if ( &to[v33] > v20 )
                    {
                      ooLogErrorPre();
                      if ( g_fp_OodlePlugin_Printf )
                        g_fp_OodlePlugin_Printf(
                          1,
                          "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                          185,
                          "OODLE ERROR : LZ corruption : LZB match past end\n",
                          Src);
                      ooLogErrorPost();
                      return -1i64;
                    }
                    copy_no_overlap_long(to, v166, v33);
                    to += v33;
                  }
                }
                else
                {
                  Src = (char *)Src + 2;
                  v114 = &to[-v22];
                  v92 = v21 + 4;
                  if ( v22 < 8
                    && v92 > v22
                    && rrDisplayAssertion(
                         "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                         69,
                         "Decode_LZB_OneChunk",
                         "off >= 8 || ml <= off") )
                  {
                    __debugbreak();
                  }
                  if ( v92 > 0x12
                    && rrDisplayAssertion(
                         "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                         70,
                         "Decode_LZB_OneChunk",
                         "ml <= 18") )
                  {
                    __debugbreak();
                  }
                  if ( &to[v92] > v20 )
                  {
                    ooLogErrorPre();
                    if ( g_fp_OodlePlugin_Printf )
                      g_fp_OodlePlugin_Printf(
                        1,
                        "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                        74,
                        "OODLE ERROR : LZ corruption : LZB match past end\n",
                        Src);
                    ooLogErrorPost();
                    return -1i64;
                  }
                  if ( to + 16 > v20 + 8
                    && rrDisplayAssertion(
                         "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                         80,
                         "Decode_LZB_OneChunk",
                         "rp+16 <= rpEnd+8") )
                  {
                    __debugbreak();
                  }
                  *(_QWORD *)to = *(_QWORD *)v114;
                  *((_QWORD *)to + 1) = *((_QWORD *)v114 + 1);
                  if ( v92 > 0x10 )
                    *((_WORD *)to + 8) = *((_WORD *)v114 + 8);
                  to += v92;
                }
              }
              else
              {
                Src = (char *)Src + 2;
                v149 = &to[-v22];
                v101 = v21 + 4;
                if ( v21 + 4 > 0xC
                  && rrDisplayAssertion(
                       "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                       29,
                       "Decode_LZB_OneChunk",
                       "ml <= 12") )
                {
                  __debugbreak();
                }
                if ( &to[v101] > v20 )
                {
                  ooLogErrorPre();
                  if ( g_fp_OodlePlugin_Printf )
                    g_fp_OodlePlugin_Printf(
                      1,
                      "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                      38,
                      "OODLE ERROR : LZ corruption : LZB match past end\n",
                      Src);
                  ooLogErrorPost();
                  return -1i64;
                }
                if ( to + 12 > v20 + 8
                  && rrDisplayAssertion(
                       "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                       43,
                       "Decode_LZB_OneChunk",
                       "rp+12 <= rpEnd+8") )
                {
                  __debugbreak();
                }
                *(_QWORD *)to = *(_QWORD *)v149;
                *((_DWORD *)to + 2) = *((_DWORD *)v149 + 2);
                to += v101;
              }
            }
            if ( to + 8 > v20 + 8
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                   123,
                   "Decode_LZB_OneChunk",
                   "rp+8 <= rpEnd+8") )
            {
              __debugbreak();
            }
            if ( (char *)Src + 8 > v195
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                   124,
                   "Decode_LZB_OneChunk",
                   "cp+8 <= comp_end") )
            {
              __debugbreak();
            }
            *(_QWORD *)to = *(_QWORD *)Src;
            to += length;
            Src = (char *)Src + length;
            v21 = v23 >> 4;
            if ( (char *)Src + 2 > v195
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                   6,
                   "Decode_LZB_OneChunk",
                   "cp+2 <= comp_end") )
            {
              __debugbreak();
            }
            v22 = *(unsigned __int16 *)Src;
            if ( v21 <= 8 )
              break;
            if ( v21 >= 0xF )
            {
              if ( Src >= v195
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     95,
                     "Decode_LZB_OneChunk",
                     "cp < comp_end") )
              {
                __debugbreak();
              }
              v120 = v22 & 0x7F;
              Src = (char *)Src + 1;
              if ( v22 & 0x80 )
              {
                v21 = v120 >> 3;
                v38 = (v120 >> 3) + 4;
                if ( v120 >> 3 == 15 )
                {
                  if ( (char *)Src + 3 > v195
                    && rrDisplayAssertion(
                         "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                         117,
                         "Decode_LZB_OneChunk",
                         "cp+3 <= comp_end") )
                  {
                    __debugbreak();
                  }
                  v67 = *(unsigned __int8 *)Src;
                  Src = (char *)Src + 1;
                  if ( v67 >= 0xC0 )
                  {
                    v38 += (v67 - 192) << 8;
                    v38 += *(unsigned __int8 *)Src;
                    Src = (char *)Src + 1;
                  }
                  else
                  {
                    v38 += v67;
                  }
                }
                if ( &to[v38] > v20 )
                {
                  ooLogErrorPre();
                  if ( g_fp_OodlePlugin_Printf )
                    g_fp_OodlePlugin_Printf(
                      1,
                      "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                      125,
                      "OODLE ERROR : LZ corruption : LZB match past end\n",
                      Src);
                  ooLogErrorPost();
                  return -1i64;
                }
                v134 = v22 & 7;
                v53 = &to[-v134];
                v88 = to;
                *to = to[-v134];
                v88[1] = v53[1];
                v88[2] = v53[2];
                v88[3] = v53[3];
                v53 += c_overlap_offset_step1add[v134];
                *((_DWORD *)v88 + 1) = *(_DWORD *)v53;
                if ( v38 > 8 )
                {
                  v9 = &v53[-c_overlap_offset_step2sub[v134] + 8];
                  v180 = v88 + 8;
                  copy_no_overlap_long(v88 + 8, v9, v38 - 8);
                }
                to += v38;
              }
              else
              {
                v159 = *(unsigned __int16 *)Src;
                Src = (char *)Src + 2;
                v184 = &to[-v159];
                v26 = v120 + v21 + 4;
                if ( v120 == 127 )
                {
                  if ( (char *)Src + 3 > v195
                    && rrDisplayAssertion(
                         "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                         177,
                         "Decode_LZB_OneChunk",
                         "cp+3 <= comp_end") )
                  {
                    __debugbreak();
                  }
                  v78 = *(unsigned __int8 *)Src;
                  Src = (char *)Src + 1;
                  if ( v78 >= 0xC0 )
                  {
                    v26 += (v78 - 192) << 8;
                    v26 += *(unsigned __int8 *)Src;
                    Src = (char *)Src + 1;
                  }
                  else
                  {
                    v26 += v78;
                  }
                }
                if ( &to[v26] > v20 )
                {
                  ooLogErrorPre();
                  if ( g_fp_OodlePlugin_Printf )
                    g_fp_OodlePlugin_Printf(
                      1,
                      "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                      185,
                      "OODLE ERROR : LZ corruption : LZB match past end\n",
                      Src);
                  ooLogErrorPost();
                  return -1i64;
                }
                copy_no_overlap_long(to, v184, v26);
                to += v26;
              }
            }
            else
            {
              Src = (char *)Src + 2;
              v118 = &to[-v22];
              v96 = v21 + 4;
              if ( v22 < 8
                && v96 > v22
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     69,
                     "Decode_LZB_OneChunk",
                     "off >= 8 || ml <= off") )
              {
                __debugbreak();
              }
              if ( v96 > 0x12
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     70,
                     "Decode_LZB_OneChunk",
                     "ml <= 18") )
              {
                __debugbreak();
              }
              if ( &to[v96] > v20 )
              {
                ooLogErrorPre();
                if ( g_fp_OodlePlugin_Printf )
                  g_fp_OodlePlugin_Printf(
                    1,
                    "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                    74,
                    "OODLE ERROR : LZ corruption : LZB match past end\n",
                    Src);
                ooLogErrorPost();
                return -1i64;
              }
              if ( to + 16 > v20 + 8
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     80,
                     "Decode_LZB_OneChunk",
                     "rp+16 <= rpEnd+8") )
              {
                __debugbreak();
              }
              *(_QWORD *)to = *(_QWORD *)v118;
              *((_QWORD *)to + 1) = *((_QWORD *)v118 + 1);
              if ( v96 > 0x10 )
                *((_WORD *)to + 8) = *((_WORD *)v118 + 8);
              to += v96;
            }
          }
          Src = (char *)Src + 2;
          v141 = &to[-v22];
          v128 = v21 + 4;
          if ( v21 + 4 > 0xC
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                 29,
                 "Decode_LZB_OneChunk",
                 "ml <= 12") )
          {
            __debugbreak();
          }
          if ( &to[v128] > v20
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                 42,
                 "Decode_LZB_OneChunk",
                 "rp+ml <= rpEnd") )
          {
            __debugbreak();
          }
          if ( to + 12 > v20 + 8
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                 43,
                 "Decode_LZB_OneChunk",
                 "rp+12 <= rpEnd+8") )
          {
            __debugbreak();
          }
          *(_QWORD *)to = *(_QWORD *)v141;
          *((_DWORD *)to + 2) = *((_DWORD *)v141 + 2);
          to += v128;
          if ( Src >= v195
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                 4,
                 "Decode_LZB_OneChunk",
                 "cp < comp_end") )
          {
            __debugbreak();
          }
          v23 = *(unsigned __int8 *)Src;
          Src = (char *)Src + 1;
          length = v23 & 0xF;
          if ( (unsigned __int64)length <= 8 )
            break;
          if ( (unsigned __int64)length < 0xF )
          {
            if ( &to[length] >= v20 )
            {
              length = rrPtrDiff32_6(v20 - to);
              if ( (char *)Src + length <= v195 )
              {
                if ( &to[length] > v20
                  && rrDisplayAssertion(
                       "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                       70,
                       "Decode_LZB_OneChunk",
                       "rp+lrl <= rpEnd") )
                {
                  __debugbreak();
                }
                if ( (char *)Src + length > v195
                  && rrDisplayAssertion(
                       "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                       71,
                       "Decode_LZB_OneChunk",
                       "cp+lrl <= comp_end") )
                {
                  __debugbreak();
                }
                copy_no_overlap_nooverrun(to, (const char *)Src, length);
                to += length;
                Src = (char *)Src + length;
                goto LABEL_1055;
              }
              ooLogErrorPre();
              if ( g_fp_OodlePlugin_Printf )
                g_fp_OodlePlugin_Printf(
                  1,
                  "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                  67,
                  "OODLE ERROR : LZ corruption : LZB decomp past end\n",
                  Src);
              ooLogErrorPost();
              return -1i64;
            }
            if ( to + 16 > v20 + 8
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                   90,
                   "Decode_LZB_OneChunk",
                   "rp+16 <= rpEnd+8") )
            {
              __debugbreak();
            }
            if ( (char *)Src + 16 > v195
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                   91,
                   "Decode_LZB_OneChunk",
                   "cp+16 <= comp_end") )
            {
              __debugbreak();
            }
            _mm_store_si128((__m128i *)&v191, _mm_loadu_si128((const __m128i *)Src));
            _mm_storeu_si128((__m128i *)to, _mm_load_si128((const __m128i *)&v191));
            to += length;
            Src = (char *)Src + length;
          }
          else
          {
            if ( (char *)Src + 3 > v195
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                   16,
                   "Decode_LZB_OneChunk",
                   "cp+3 <= comp_end") )
            {
              __debugbreak();
            }
            v69 = *(unsigned __int8 *)Src;
            Src = (char *)Src + 1;
            if ( v69 >= 0xC0 )
            {
              length += (v69 - 192) << 8;
              length += *(unsigned __int8 *)Src;
              Src = (char *)Src + 1;
            }
            else
            {
              length += v69;
            }
            if ( (char *)Src + length > v195 )
            {
              ooLogErrorPre();
              if ( g_fp_OodlePlugin_Printf )
                g_fp_OodlePlugin_Printf(
                  1,
                  "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                  23,
                  "OODLE ERROR : LZ corruption : LZB decomp past end\n",
                  Src);
              ooLogErrorPost();
              return -1i64;
            }
            if ( &to[length] >= v20 )
            {
              if ( &to[length] <= v20 )
              {
                if ( (char *)Src + length > v195
                  && rrDisplayAssertion(
                       "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                       36,
                       "Decode_LZB_OneChunk",
                       "cp+lrl <= comp_end") )
                {
                  __debugbreak();
                }
                copy_no_overlap_nooverrun(to, (const char *)Src, length);
                to += length;
                Src = (char *)Src + length;
                goto LABEL_1055;
              }
              ooLogErrorPre();
              if ( g_fp_OodlePlugin_Printf )
                g_fp_OodlePlugin_Printf(
                  1,
                  "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                  32,
                  "OODLE ERROR : LZ corruption : LZB decomp past end\n",
                  Src);
              ooLogErrorPost();
              return -1i64;
            }
            if ( &to[length] > v20
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                   46,
                   "Decode_LZB_OneChunk",
                   "rp+lrl <= rpEnd") )
            {
              __debugbreak();
            }
            if ( (char *)Src + length > v195
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                   47,
                   "Decode_LZB_OneChunk",
                   "cp+lrl <= comp_end") )
            {
              __debugbreak();
            }
            copy_no_overlap_long(to, (const char *)Src, length);
            to += length;
            Src = (char *)Src + length;
            if ( Src >= v24 )
            {
              if ( Src >= v195 )
              {
                ooLogErrorPre();
                if ( g_fp_OodlePlugin_Printf )
                  g_fp_OodlePlugin_Printf(
                    1,
                    "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                    54,
                    "OODLE ERROR : LZ corruption : LZB comp over-read\n",
                    Src);
                ooLogErrorPost();
                return -1i64;
              }
              if ( v195 == &v193 )
              {
                ooLogErrorPre();
                if ( g_fp_OodlePlugin_Printf )
                  g_fp_OodlePlugin_Printf(
                    1,
                    "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                    54,
                    "OODLE ERROR : LZ corruption : LZB comp safe twice\n",
                    Src);
                ooLogErrorPost();
                return -1i64;
              }
              v142 = v195 - (_BYTE *)Src;
              if ( (unsigned __int64)(v195 - (_BYTE *)Src) >= 0x80
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                     54,
                     "Decode_LZB_OneChunk",
                     "copy_len < sizeof(cp_safe)") )
              {
                __debugbreak();
              }
              memmove(Dst, Src, v142);
              v194 = &Dst[-((_BYTE *)Src - v194)];
              v195 = &v193;
              v24 = (char *)&v16 + 1458;
              Src = Dst;
            }
          }
          v21 = v23 >> 4;
          if ( (char *)Src + 2 > v195
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                 6,
                 "Decode_LZB_OneChunk",
                 "cp+2 <= comp_end") )
          {
            __debugbreak();
          }
          v22 = *(unsigned __int16 *)Src;
          if ( v21 > 8 )
          {
            if ( v21 >= 0xF )
            {
              if ( Src >= v195
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     95,
                     "Decode_LZB_OneChunk",
                     "cp < comp_end") )
              {
                __debugbreak();
              }
              v138 = v22 & 0x7F;
              Src = (char *)Src + 1;
              if ( v22 & 0x80 )
              {
                v21 = v138 >> 3;
                v40 = (v138 >> 3) + 4;
                if ( v138 >> 3 == 15 )
                {
                  if ( (char *)Src + 3 > v195
                    && rrDisplayAssertion(
                         "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                         117,
                         "Decode_LZB_OneChunk",
                         "cp+3 <= comp_end") )
                  {
                    __debugbreak();
                  }
                  v71 = *(unsigned __int8 *)Src;
                  Src = (char *)Src + 1;
                  if ( v71 >= 0xC0 )
                  {
                    v40 += (v71 - 192) << 8;
                    v40 += *(unsigned __int8 *)Src;
                    Src = (char *)Src + 1;
                  }
                  else
                  {
                    v40 += v71;
                  }
                }
                if ( &to[v40] > v20 )
                {
                  ooLogErrorPre();
                  if ( g_fp_OodlePlugin_Printf )
                    g_fp_OodlePlugin_Printf(
                      1,
                      "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                      125,
                      "OODLE ERROR : LZ corruption : LZB match past end\n",
                      Src);
                  ooLogErrorPost();
                  return -1i64;
                }
                v122 = v22 & 7;
                v46 = &to[-v122];
                v90 = to;
                *to = to[-v122];
                v90[1] = v46[1];
                v90[2] = v46[2];
                v90[3] = v46[3];
                v46 += c_overlap_offset_step1add[v122];
                *((_DWORD *)v90 + 1) = *(_DWORD *)v46;
                if ( v40 > 8 )
                {
                  v10 = &v46[-c_overlap_offset_step2sub[v122] + 8];
                  v170 = v90 + 8;
                  copy_no_overlap_long(v90 + 8, v10, v40 - 8);
                }
                to += v40;
              }
              else
              {
                v181 = *(unsigned __int16 *)Src;
                Src = (char *)Src + 2;
                v172 = &to[-v181];
                v28 = v138 + v21 + 4;
                if ( v138 == 127 )
                {
                  if ( (char *)Src + 3 > v195
                    && rrDisplayAssertion(
                         "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                         177,
                         "Decode_LZB_OneChunk",
                         "cp+3 <= comp_end") )
                  {
                    __debugbreak();
                  }
                  v73 = *(unsigned __int8 *)Src;
                  Src = (char *)Src + 1;
                  if ( v73 >= 0xC0 )
                  {
                    v28 += (v73 - 192) << 8;
                    v28 += *(unsigned __int8 *)Src;
                    Src = (char *)Src + 1;
                  }
                  else
                  {
                    v28 += v73;
                  }
                }
                if ( &to[v28] > v20 )
                {
                  ooLogErrorPre();
                  if ( g_fp_OodlePlugin_Printf )
                    g_fp_OodlePlugin_Printf(
                      1,
                      "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                      185,
                      "OODLE ERROR : LZ corruption : LZB match past end\n",
                      Src);
                  ooLogErrorPost();
                  return -1i64;
                }
                copy_no_overlap_long(to, v172, v28);
                to += v28;
              }
            }
            else
            {
              Src = (char *)Src + 2;
              v109 = &to[-v22];
              v94 = v21 + 4;
              if ( v22 < 8
                && v94 > v22
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     69,
                     "Decode_LZB_OneChunk",
                     "off >= 8 || ml <= off") )
              {
                __debugbreak();
              }
              if ( v94 > 0x12
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     70,
                     "Decode_LZB_OneChunk",
                     "ml <= 18") )
              {
                __debugbreak();
              }
              if ( &to[v94] > v20 )
              {
                ooLogErrorPre();
                if ( g_fp_OodlePlugin_Printf )
                  g_fp_OodlePlugin_Printf(
                    1,
                    "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                    74,
                    "OODLE ERROR : LZ corruption : LZB match past end\n",
                    Src);
                ooLogErrorPost();
                return -1i64;
              }
              if ( to + 16 > v20 + 8
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     80,
                     "Decode_LZB_OneChunk",
                     "rp+16 <= rpEnd+8") )
              {
                __debugbreak();
              }
              *(_QWORD *)to = *(_QWORD *)v109;
              *((_QWORD *)to + 1) = *((_QWORD *)v109 + 1);
              if ( v94 > 0x10 )
                *((_WORD *)to + 8) = *((_WORD *)v109 + 8);
              to += v94;
            }
          }
          else
          {
            Src = (char *)Src + 2;
            v144 = &to[-v22];
            v100 = v21 + 4;
            if ( v21 + 4 > 0xC
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                   29,
                   "Decode_LZB_OneChunk",
                   "ml <= 12") )
            {
              __debugbreak();
            }
            if ( &to[v100] > v20 )
            {
              ooLogErrorPre();
              if ( g_fp_OodlePlugin_Printf )
                g_fp_OodlePlugin_Printf(
                  1,
                  "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                  38,
                  "OODLE ERROR : LZ corruption : LZB match past end\n",
                  Src);
              ooLogErrorPost();
              return -1i64;
            }
            if ( to + 12 > v20 + 8
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                   43,
                   "Decode_LZB_OneChunk",
                   "rp+12 <= rpEnd+8") )
            {
              __debugbreak();
            }
            *(_QWORD *)to = *(_QWORD *)v144;
            *((_DWORD *)to + 2) = *((_DWORD *)v144 + 2);
            to += v100;
          }
        }
        if ( to + 8 > v20 + 8
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
               123,
               "Decode_LZB_OneChunk",
               "rp+8 <= rpEnd+8") )
        {
          __debugbreak();
        }
        if ( (char *)Src + 8 > v195
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
               124,
               "Decode_LZB_OneChunk",
               "cp+8 <= comp_end") )
        {
          __debugbreak();
        }
        *(_QWORD *)to = *(_QWORD *)Src;
        to += length;
        Src = (char *)Src + length;
        v21 = v23 >> 4;
        if ( (char *)Src + 2 > v195
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
               6,
               "Decode_LZB_OneChunk",
               "cp+2 <= comp_end") )
        {
          __debugbreak();
        }
        v22 = *(unsigned __int16 *)Src;
        if ( v21 <= 8 )
          break;
        if ( v21 >= 0xF )
        {
          if ( Src >= v195
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                 95,
                 "Decode_LZB_OneChunk",
                 "cp < comp_end") )
          {
            __debugbreak();
          }
          v113 = v22 & 0x7F;
          Src = (char *)Src + 1;
          if ( v22 & 0x80 )
          {
            v21 = v113 >> 3;
            v42 = (v113 >> 3) + 4;
            if ( v113 >> 3 == 15 )
            {
              if ( (char *)Src + 3 > v195
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     117,
                     "Decode_LZB_OneChunk",
                     "cp+3 <= comp_end") )
              {
                __debugbreak();
              }
              v56 = *(unsigned __int8 *)Src;
              Src = (char *)Src + 1;
              if ( v56 >= 0xC0 )
              {
                v42 += (v56 - 192) << 8;
                v42 += *(unsigned __int8 *)Src;
                Src = (char *)Src + 1;
              }
              else
              {
                v42 += v56;
              }
            }
            if ( &to[v42] > v20 )
            {
              ooLogErrorPre();
              if ( g_fp_OodlePlugin_Printf )
                g_fp_OodlePlugin_Printf(
                  1,
                  "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                  125,
                  "OODLE ERROR : LZ corruption : LZB match past end\n",
                  Src);
              ooLogErrorPost();
              return -1i64;
            }
            v111 = v22 & 7;
            v48 = &to[-v111];
            v83 = to;
            *to = to[-v111];
            v83[1] = v48[1];
            v83[2] = v48[2];
            v83[3] = v48[3];
            v48 += c_overlap_offset_step1add[v111];
            *((_DWORD *)v83 + 1) = *(_DWORD *)v48;
            if ( v42 > 8 )
            {
              v11 = &v48[-c_overlap_offset_step2sub[v111] + 8];
              v186 = v83 + 8;
              copy_no_overlap_long(v83 + 8, v11, v42 - 8);
            }
            to += v42;
          }
          else
          {
            v174 = *(unsigned __int16 *)Src;
            Src = (char *)Src + 2;
            v183 = &to[-v174];
            v30 = v113 + v21 + 4;
            if ( v113 == 127 )
            {
              if ( (char *)Src + 3 > v195
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     177,
                     "Decode_LZB_OneChunk",
                     "cp+3 <= comp_end") )
              {
                __debugbreak();
              }
              v57 = *(unsigned __int8 *)Src;
              Src = (char *)Src + 1;
              if ( v57 >= 0xC0 )
              {
                v30 += (v57 - 192) << 8;
                v30 += *(unsigned __int8 *)Src;
                Src = (char *)Src + 1;
              }
              else
              {
                v30 += v57;
              }
            }
            if ( &to[v30] > v20 )
            {
              ooLogErrorPre();
              if ( g_fp_OodlePlugin_Printf )
                g_fp_OodlePlugin_Printf(
                  1,
                  "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                  185,
                  "OODLE ERROR : LZ corruption : LZB match past end\n",
                  Src);
              ooLogErrorPost();
              return -1i64;
            }
            copy_no_overlap_long(to, v183, v30);
            to += v30;
          }
        }
        else
        {
          Src = (char *)Src + 2;
          v110 = &to[-v22];
          v81 = v21 + 4;
          if ( v22 < 8
            && v81 > v22
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                 69,
                 "Decode_LZB_OneChunk",
                 "off >= 8 || ml <= off") )
          {
            __debugbreak();
          }
          if ( v81 > 0x12
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                 70,
                 "Decode_LZB_OneChunk",
                 "ml <= 18") )
          {
            __debugbreak();
          }
          if ( &to[v81] > v20 )
          {
            ooLogErrorPre();
            if ( g_fp_OodlePlugin_Printf )
              g_fp_OodlePlugin_Printf(
                1,
                "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                74,
                "OODLE ERROR : LZ corruption : LZB match past end\n",
                Src);
            ooLogErrorPost();
            return -1i64;
          }
          if ( to + 16 > v20 + 8
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                 80,
                 "Decode_LZB_OneChunk",
                 "rp+16 <= rpEnd+8") )
          {
            __debugbreak();
          }
          *(_QWORD *)to = *(_QWORD *)v110;
          *((_QWORD *)to + 1) = *((_QWORD *)v110 + 1);
          if ( v81 > 0x10 )
            *((_WORD *)to + 8) = *((_WORD *)v110 + 8);
          to += v81;
        }
      }
      Src = (char *)Src + 2;
      v146 = &to[-v22];
      v124 = v21 + 4;
      if ( v21 + 4 > 0xC
        && rrDisplayAssertion(
             "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
             29,
             "Decode_LZB_OneChunk",
             "ml <= 12") )
      {
        __debugbreak();
      }
      if ( &to[v124] > v20
        && rrDisplayAssertion(
             "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
             42,
             "Decode_LZB_OneChunk",
             "rp+ml <= rpEnd") )
      {
        __debugbreak();
      }
      if ( to + 12 > v20 + 8
        && rrDisplayAssertion(
             "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
             43,
             "Decode_LZB_OneChunk",
             "rp+12 <= rpEnd+8") )
      {
        __debugbreak();
      }
      *(_QWORD *)to = *(_QWORD *)v146;
      *((_DWORD *)to + 2) = *((_DWORD *)v146 + 2);
      to += v124;
      if ( Src >= v195
        && rrDisplayAssertion(
             "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
             4,
             "Decode_LZB_OneChunk",
             "cp < comp_end") )
      {
        __debugbreak();
      }
      v23 = *(unsigned __int8 *)Src;
      Src = (char *)Src + 1;
      length = v23 & 0xF;
      if ( (unsigned __int64)length > 8 )
        break;
      if ( to + 8 > v20 + 8
        && rrDisplayAssertion(
             "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
             123,
             "Decode_LZB_OneChunk",
             "rp+8 <= rpEnd+8") )
      {
        __debugbreak();
      }
      if ( (char *)Src + 8 > v195
        && rrDisplayAssertion(
             "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
             124,
             "Decode_LZB_OneChunk",
             "cp+8 <= comp_end") )
      {
        __debugbreak();
      }
      *(_QWORD *)to = *(_QWORD *)Src;
      to += length;
      Src = (char *)Src + length;
      v21 = v23 >> 4;
      if ( (char *)Src + 2 > v195
        && rrDisplayAssertion(
             "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
             6,
             "Decode_LZB_OneChunk",
             "cp+2 <= comp_end") )
      {
        __debugbreak();
      }
      v22 = *(unsigned __int16 *)Src;
      if ( v21 > 8 )
      {
        if ( v21 >= 0xF )
        {
          if ( Src >= v195
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                 95,
                 "Decode_LZB_OneChunk",
                 "cp < comp_end") )
          {
            __debugbreak();
          }
          v127 = v22 & 0x7F;
          Src = (char *)Src + 1;
          if ( v22 & 0x80 )
          {
            v21 = v127 >> 3;
            v36 = (v127 >> 3) + 4;
            if ( v127 >> 3 == 15 )
            {
              if ( (char *)Src + 3 > v195
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     117,
                     "Decode_LZB_OneChunk",
                     "cp+3 <= comp_end") )
              {
                __debugbreak();
              }
              v60 = *(unsigned __int8 *)Src;
              Src = (char *)Src + 1;
              if ( v60 >= 0xC0 )
              {
                v36 += (v60 - 192) << 8;
                v36 += *(unsigned __int8 *)Src;
                Src = (char *)Src + 1;
              }
              else
              {
                v36 += v60;
              }
            }
            if ( &to[v36] > v20 )
            {
              ooLogErrorPre();
              if ( g_fp_OodlePlugin_Printf )
                g_fp_OodlePlugin_Printf(
                  1,
                  "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                  125,
                  "OODLE ERROR : LZ corruption : LZB match past end\n",
                  Src);
              ooLogErrorPost();
              return -1i64;
            }
            v125 = v22 & 7;
            v52 = &to[-v125];
            v91 = to;
            *to = to[-v125];
            v91[1] = v52[1];
            v91[2] = v52[2];
            v91[3] = v52[3];
            v52 += c_overlap_offset_step1add[v125];
            *((_DWORD *)v91 + 1) = *(_DWORD *)v52;
            if ( v36 > 8 )
            {
              v13 = &v52[-c_overlap_offset_step2sub[v125] + 8];
              v163 = v91 + 8;
              copy_no_overlap_long(v91 + 8, v13, v36 - 8);
            }
            to += v36;
          }
          else
          {
            v165 = *(unsigned __int16 *)Src;
            Src = (char *)Src + 2;
            v167 = &to[-v165];
            v34 = v127 + v21 + 4;
            if ( v127 == 127 )
            {
              if ( (char *)Src + 3 > v195
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     177,
                     "Decode_LZB_OneChunk",
                     "cp+3 <= comp_end") )
              {
                __debugbreak();
              }
              v68 = *(unsigned __int8 *)Src;
              Src = (char *)Src + 1;
              if ( v68 >= 0xC0 )
              {
                v34 += (v68 - 192) << 8;
                v34 += *(unsigned __int8 *)Src;
                Src = (char *)Src + 1;
              }
              else
              {
                v34 += v68;
              }
            }
            if ( &to[v34] > v20 )
            {
              ooLogErrorPre();
              if ( g_fp_OodlePlugin_Printf )
                g_fp_OodlePlugin_Printf(
                  1,
                  "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                  185,
                  "OODLE ERROR : LZ corruption : LZB match past end\n",
                  Src);
              ooLogErrorPost();
              return -1i64;
            }
            copy_no_overlap_long(to, v167, v34);
            to += v34;
          }
        }
        else
        {
          Src = (char *)Src + 2;
          v123 = &to[-v22];
          v89 = v21 + 4;
          if ( v22 < 8
            && v89 > v22
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                 69,
                 "Decode_LZB_OneChunk",
                 "off >= 8 || ml <= off") )
          {
            __debugbreak();
          }
          if ( v89 > 0x12
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                 70,
                 "Decode_LZB_OneChunk",
                 "ml <= 18") )
          {
            __debugbreak();
          }
          if ( &to[v89] > v20 )
          {
            ooLogErrorPre();
            if ( g_fp_OodlePlugin_Printf )
              g_fp_OodlePlugin_Printf(
                1,
                "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                74,
                "OODLE ERROR : LZ corruption : LZB match past end\n",
                Src);
            ooLogErrorPost();
            return -1i64;
          }
          if ( to + 16 > v20 + 8
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                 80,
                 "Decode_LZB_OneChunk",
                 "rp+16 <= rpEnd+8") )
          {
            __debugbreak();
          }
          *(_QWORD *)to = *(_QWORD *)v123;
          *((_QWORD *)to + 1) = *((_QWORD *)v123 + 1);
          if ( v89 > 0x10 )
            *((_WORD *)to + 8) = *((_WORD *)v123 + 8);
          to += v89;
        }
      }
      else
      {
        Src = (char *)Src + 2;
        v152 = &to[-v22];
        v121 = v21 + 4;
        if ( v21 + 4 > 0xC
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
               29,
               "Decode_LZB_OneChunk",
               "ml <= 12") )
        {
          __debugbreak();
        }
        if ( &to[v121] > v20
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
               42,
               "Decode_LZB_OneChunk",
               "rp+ml <= rpEnd") )
        {
          __debugbreak();
        }
        if ( to + 12 > v20 + 8
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
               43,
               "Decode_LZB_OneChunk",
               "rp+12 <= rpEnd+8") )
        {
          __debugbreak();
        }
        *(_QWORD *)to = *(_QWORD *)v152;
        *((_DWORD *)to + 2) = *((_DWORD *)v152 + 2);
        to += v121;
$last2:
        if ( Src >= v195
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
               4,
               "Decode_LZB_OneChunk",
               "cp < comp_end") )
        {
          __debugbreak();
        }
        v23 = *(unsigned __int8 *)Src;
        Src = (char *)Src + 1;
        length = v23 & 0xF;
        if ( (unsigned __int64)length <= 8 )
        {
          if ( to + 8 > v20 + 8
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                 123,
                 "Decode_LZB_OneChunk",
                 "rp+8 <= rpEnd+8") )
          {
            __debugbreak();
          }
          if ( (char *)Src + 8 > v195
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                 124,
                 "Decode_LZB_OneChunk",
                 "cp+8 <= comp_end") )
          {
            __debugbreak();
          }
          *(_QWORD *)to = *(_QWORD *)Src;
          to += length;
          Src = (char *)Src + length;
          v21 = v23 >> 4;
          if ( (char *)Src + 2 > v195
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                 6,
                 "Decode_LZB_OneChunk",
                 "cp+2 <= comp_end") )
          {
            __debugbreak();
          }
          v22 = *(unsigned __int16 *)Src;
          if ( v21 > 8 )
          {
            if ( v21 >= 0xF )
            {
              if ( Src >= v195
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     95,
                     "Decode_LZB_OneChunk",
                     "cp < comp_end") )
              {
                __debugbreak();
              }
              v139 = v22 & 0x7F;
              Src = (char *)Src + 1;
              if ( v22 & 0x80 )
              {
                v21 = v139 >> 3;
                v39 = (v139 >> 3) + 4;
                if ( v139 >> 3 == 15 )
                {
                  if ( (char *)Src + 3 > v195
                    && rrDisplayAssertion(
                         "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                         117,
                         "Decode_LZB_OneChunk",
                         "cp+3 <= comp_end") )
                  {
                    __debugbreak();
                  }
                  v62 = *(unsigned __int8 *)Src;
                  Src = (char *)Src + 1;
                  if ( v62 >= 0xC0 )
                  {
                    v39 += (v62 - 192) << 8;
                    v39 += *(unsigned __int8 *)Src;
                    Src = (char *)Src + 1;
                  }
                  else
                  {
                    v39 += v62;
                  }
                }
                if ( &to[v39] > v20 )
                {
                  ooLogErrorPre();
                  if ( g_fp_OodlePlugin_Printf )
                    g_fp_OodlePlugin_Printf(
                      1,
                      "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                      125,
                      "OODLE ERROR : LZ corruption : LZB match past end\n",
                      Src);
                  ooLogErrorPost();
                  return -1i64;
                }
                v137 = v22 & 7;
                v47 = &to[-v137];
                v99 = to;
                *to = to[-v137];
                v99[1] = v47[1];
                v99[2] = v47[2];
                v99[3] = v47[3];
                v47 += c_overlap_offset_step1add[v137];
                *((_DWORD *)v99 + 1) = *(_DWORD *)v47;
                if ( v39 > 8 )
                {
                  v15 = &v47[-c_overlap_offset_step2sub[v137] + 8];
                  v175 = v99 + 8;
                  copy_no_overlap_long(v99 + 8, v15, v39 - 8);
                }
                to += v39;
              }
              else
              {
                v177 = *(unsigned __int16 *)Src;
                Src = (char *)Src + 2;
                v179 = &to[-v177];
                v27 = v139 + v21 + 4;
                if ( v139 == 127 )
                {
                  if ( (char *)Src + 3 > v195
                    && rrDisplayAssertion(
                         "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                         177,
                         "Decode_LZB_OneChunk",
                         "cp+3 <= comp_end") )
                  {
                    __debugbreak();
                  }
                  v64 = *(unsigned __int8 *)Src;
                  Src = (char *)Src + 1;
                  if ( v64 >= 0xC0 )
                  {
                    v27 += (v64 - 192) << 8;
                    v27 += *(unsigned __int8 *)Src;
                    Src = (char *)Src + 1;
                  }
                  else
                  {
                    v27 += v64;
                  }
                }
                if ( &to[v27] > v20 )
                {
                  ooLogErrorPre();
                  if ( g_fp_OodlePlugin_Printf )
                    g_fp_OodlePlugin_Printf(
                      1,
                      "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                      185,
                      "OODLE ERROR : LZ corruption : LZB match past end\n",
                      Src);
                  ooLogErrorPost();
                  return -1i64;
                }
                copy_no_overlap_long(to, v179, v27);
                to += v27;
              }
            }
            else
            {
              Src = (char *)Src + 2;
              v135 = &to[-v22];
              v97 = v21 + 4;
              if ( v22 < 8
                && v97 > v22
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     69,
                     "Decode_LZB_OneChunk",
                     "off >= 8 || ml <= off") )
              {
                __debugbreak();
              }
              if ( v97 > 0x12
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     70,
                     "Decode_LZB_OneChunk",
                     "ml <= 18") )
              {
                __debugbreak();
              }
              if ( &to[v97] > v20 )
              {
                ooLogErrorPre();
                if ( g_fp_OodlePlugin_Printf )
                  g_fp_OodlePlugin_Printf(
                    1,
                    "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                    74,
                    "OODLE ERROR : LZ corruption : LZB match past end\n",
                    Src);
                ooLogErrorPost();
                return -1i64;
              }
              if ( to + 16 > v20 + 8
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     80,
                     "Decode_LZB_OneChunk",
                     "rp+16 <= rpEnd+8") )
              {
                __debugbreak();
              }
              *(_QWORD *)to = *(_QWORD *)v135;
              *((_QWORD *)to + 1) = *((_QWORD *)v135 + 1);
              if ( v97 > 0x10 )
                *((_WORD *)to + 8) = *((_WORD *)v135 + 8);
              to += v97;
            }
          }
          else
          {
            Src = (char *)Src + 2;
            v158 = &to[-v22];
            v108 = v21 + 4;
            if ( v21 + 4 > 0xC
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                   29,
                   "Decode_LZB_OneChunk",
                   "ml <= 12") )
            {
              __debugbreak();
            }
            if ( &to[v108] > v20 )
            {
              ooLogErrorPre();
              if ( g_fp_OodlePlugin_Printf )
                g_fp_OodlePlugin_Printf(
                  1,
                  "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                  38,
                  "OODLE ERROR : LZ corruption : LZB match past end\n",
                  Src);
              ooLogErrorPost();
              return -1i64;
            }
            if ( to + 12 > v20 + 8
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                   43,
                   "Decode_LZB_OneChunk",
                   "rp+12 <= rpEnd+8") )
            {
              __debugbreak();
            }
            *(_QWORD *)to = *(_QWORD *)v158;
            *((_DWORD *)to + 2) = *((_DWORD *)v158 + 2);
            to += v108;
          }
        }
        else
        {
          if ( (unsigned __int64)length < 0xF )
          {
            if ( &to[length] >= v20 )
            {
              length = rrPtrDiff32_6(v20 - to);
              if ( (char *)Src + length <= v195 )
              {
                if ( &to[length] > v20
                  && rrDisplayAssertion(
                       "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                       70,
                       "Decode_LZB_OneChunk",
                       "rp+lrl <= rpEnd") )
                {
                  __debugbreak();
                }
                if ( (char *)Src + length > v195
                  && rrDisplayAssertion(
                       "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                       71,
                       "Decode_LZB_OneChunk",
                       "cp+lrl <= comp_end") )
                {
                  __debugbreak();
                }
                copy_no_overlap_nooverrun(to, (const char *)Src, length);
                to += length;
                Src = (char *)Src + length;
                goto LABEL_1055;
              }
              ooLogErrorPre();
              if ( g_fp_OodlePlugin_Printf )
                g_fp_OodlePlugin_Printf(
                  1,
                  "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                  67,
                  "OODLE ERROR : LZ corruption : LZB decomp past end\n",
                  Src);
              ooLogErrorPost();
              return -1i64;
            }
            if ( to + 16 > v20 + 8
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                   90,
                   "Decode_LZB_OneChunk",
                   "rp+16 <= rpEnd+8") )
            {
              __debugbreak();
            }
            if ( (char *)Src + 16 > v195
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                   91,
                   "Decode_LZB_OneChunk",
                   "cp+16 <= comp_end") )
            {
              __debugbreak();
            }
            _mm_store_si128((__m128i *)&v190, _mm_loadu_si128((const __m128i *)Src));
            _mm_storeu_si128((__m128i *)to, _mm_load_si128((const __m128i *)&v190));
            to += length;
            Src = (char *)Src + length;
          }
          else
          {
            if ( (char *)Src + 3 > v195
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                   16,
                   "Decode_LZB_OneChunk",
                   "cp+3 <= comp_end") )
            {
              __debugbreak();
            }
            v55 = *(unsigned __int8 *)Src;
            Src = (char *)Src + 1;
            if ( v55 >= 0xC0 )
            {
              length += (v55 - 192) << 8;
              length += *(unsigned __int8 *)Src;
              Src = (char *)Src + 1;
            }
            else
            {
              length += v55;
            }
            if ( (char *)Src + length > v195 )
            {
              ooLogErrorPre();
              if ( g_fp_OodlePlugin_Printf )
                g_fp_OodlePlugin_Printf(
                  1,
                  "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                  23,
                  "OODLE ERROR : LZ corruption : LZB decomp past end\n",
                  Src);
              ooLogErrorPost();
              return -1i64;
            }
            if ( &to[length] >= v20 )
            {
              if ( &to[length] <= v20 )
              {
                if ( (char *)Src + length > v195
                  && rrDisplayAssertion(
                       "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                       36,
                       "Decode_LZB_OneChunk",
                       "cp+lrl <= comp_end") )
                {
                  __debugbreak();
                }
                copy_no_overlap_nooverrun(to, (const char *)Src, length);
                to += length;
                Src = (char *)Src + length;
                goto LABEL_1055;
              }
              ooLogErrorPre();
              if ( g_fp_OodlePlugin_Printf )
                g_fp_OodlePlugin_Printf(
                  1,
                  "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                  32,
                  "OODLE ERROR : LZ corruption : LZB decomp past end\n",
                  Src);
              ooLogErrorPost();
              return -1i64;
            }
            if ( &to[length] > v20
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                   46,
                   "Decode_LZB_OneChunk",
                   "rp+lrl <= rpEnd") )
            {
              __debugbreak();
            }
            if ( (char *)Src + length > v195
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                   47,
                   "Decode_LZB_OneChunk",
                   "cp+lrl <= comp_end") )
            {
              __debugbreak();
            }
            copy_no_overlap_long(to, (const char *)Src, length);
            to += length;
            Src = (char *)Src + length;
            if ( Src >= v24 )
            {
              if ( Src >= v195 )
              {
                ooLogErrorPre();
                if ( g_fp_OodlePlugin_Printf )
                  g_fp_OodlePlugin_Printf(
                    1,
                    "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                    54,
                    "OODLE ERROR : LZ corruption : LZB comp over-read\n",
                    Src);
                ooLogErrorPost();
                return -1i64;
              }
              if ( v195 == &v193 )
              {
                ooLogErrorPre();
                if ( g_fp_OodlePlugin_Printf )
                  g_fp_OodlePlugin_Printf(
                    1,
                    "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                    54,
                    "OODLE ERROR : LZ corruption : LZB comp safe twice\n",
                    Src);
                ooLogErrorPost();
                return -1i64;
              }
              v154 = v195 - (_BYTE *)Src;
              if ( (unsigned __int64)(v195 - (_BYTE *)Src) >= 0x80
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
                     54,
                     "Decode_LZB_OneChunk",
                     "copy_len < sizeof(cp_safe)") )
              {
                __debugbreak();
              }
              memmove(Dst, Src, v154);
              v194 = &Dst[-((_BYTE *)Src - v194)];
              v195 = &v193;
              v24 = (char *)&v16 + 1458;
              Src = Dst;
            }
          }
          v21 = v23 >> 4;
          if ( (char *)Src + 2 > v195
            && rrDisplayAssertion(
                 "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                 6,
                 "Decode_LZB_OneChunk",
                 "cp+2 <= comp_end") )
          {
            __debugbreak();
          }
          v22 = *(unsigned __int16 *)Src;
          if ( v21 > 8 )
          {
            if ( v21 >= 0xF )
            {
              if ( Src >= v195
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     95,
                     "Decode_LZB_OneChunk",
                     "cp < comp_end") )
              {
                __debugbreak();
              }
              v133 = v22 & 0x7F;
              Src = (char *)Src + 1;
              if ( v22 & 0x80 )
              {
                v21 = v133 >> 3;
                v37 = (v133 >> 3) + 4;
                if ( v133 >> 3 == 15 )
                {
                  if ( (char *)Src + 3 > v195
                    && rrDisplayAssertion(
                         "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                         117,
                         "Decode_LZB_OneChunk",
                         "cp+3 <= comp_end") )
                  {
                    __debugbreak();
                  }
                  v74 = *(unsigned __int8 *)Src;
                  Src = (char *)Src + 1;
                  if ( v74 >= 0xC0 )
                  {
                    v37 += (v74 - 192) << 8;
                    v37 += *(unsigned __int8 *)Src;
                    Src = (char *)Src + 1;
                  }
                  else
                  {
                    v37 += v74;
                  }
                }
                if ( &to[v37] > v20 )
                {
                  ooLogErrorPre();
                  if ( g_fp_OodlePlugin_Printf )
                    g_fp_OodlePlugin_Printf(
                      1,
                      "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                      125,
                      "OODLE ERROR : LZ corruption : LZB match past end\n",
                      Src);
                  ooLogErrorPost();
                  return -1i64;
                }
                v131 = v22 & 7;
                v54 = &to[-v131];
                v95 = to;
                *to = to[-v131];
                v95[1] = v54[1];
                v95[2] = v54[2];
                v95[3] = v54[3];
                v54 += c_overlap_offset_step1add[v131];
                *((_DWORD *)v95 + 1) = *(_DWORD *)v54;
                if ( v37 > 8 )
                {
                  v14 = &v54[-c_overlap_offset_step2sub[v131] + 8];
                  v169 = v95 + 8;
                  copy_no_overlap_long(v95 + 8, v14, v37 - 8);
                }
                to += v37;
              }
              else
              {
                v171 = *(unsigned __int16 *)Src;
                Src = (char *)Src + 2;
                v173 = &to[-v171];
                v25 = v133 + v21 + 4;
                if ( v133 == 127 )
                {
                  if ( (char *)Src + 3 > v195
                    && rrDisplayAssertion(
                         "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                         177,
                         "Decode_LZB_OneChunk",
                         "cp+3 <= comp_end") )
                  {
                    __debugbreak();
                  }
                  v79 = *(unsigned __int8 *)Src;
                  Src = (char *)Src + 1;
                  if ( v79 >= 0xC0 )
                  {
                    v25 += (v79 - 192) << 8;
                    v25 += *(unsigned __int8 *)Src;
                    Src = (char *)Src + 1;
                  }
                  else
                  {
                    v25 += v79;
                  }
                }
                if ( &to[v25] > v20 )
                {
                  ooLogErrorPre();
                  if ( g_fp_OodlePlugin_Printf )
                    g_fp_OodlePlugin_Printf(
                      1,
                      "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                      185,
                      "OODLE ERROR : LZ corruption : LZB match past end\n",
                      Src);
                  ooLogErrorPost();
                  return -1i64;
                }
                copy_no_overlap_long(to, v173, v25);
                to += v25;
              }
            }
            else
            {
              Src = (char *)Src + 2;
              v129 = &to[-v22];
              v93 = v21 + 4;
              if ( v22 < 8
                && v93 > v22
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     69,
                     "Decode_LZB_OneChunk",
                     "off >= 8 || ml <= off") )
              {
                __debugbreak();
              }
              if ( v93 > 0x12
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     70,
                     "Decode_LZB_OneChunk",
                     "ml <= 18") )
              {
                __debugbreak();
              }
              if ( &to[v93] > v20 )
              {
                ooLogErrorPre();
                if ( g_fp_OodlePlugin_Printf )
                  g_fp_OodlePlugin_Printf(
                    1,
                    "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                    74,
                    "OODLE ERROR : LZ corruption : LZB match past end\n",
                    Src);
                ooLogErrorPost();
                return -1i64;
              }
              if ( to + 16 > v20 + 8
                && rrDisplayAssertion(
                     "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                     80,
                     "Decode_LZB_OneChunk",
                     "rp+16 <= rpEnd+8") )
              {
                __debugbreak();
              }
              *(_QWORD *)to = *(_QWORD *)v129;
              *((_QWORD *)to + 1) = *((_QWORD *)v129 + 1);
              if ( v93 > 0x10 )
                *((_WORD *)to + 8) = *((_WORD *)v129 + 8);
              to += v93;
            }
          }
          else
          {
            Src = (char *)Src + 2;
            v156 = &to[-v22];
            v106 = v21 + 4;
            if ( v21 + 4 > 0xC
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                   29,
                   "Decode_LZB_OneChunk",
                   "ml <= 12") )
            {
              __debugbreak();
            }
            if ( &to[v106] > v20 )
            {
              ooLogErrorPre();
              if ( g_fp_OodlePlugin_Printf )
                g_fp_OodlePlugin_Printf(
                  1,
                  "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                  38,
                  "OODLE ERROR : LZ corruption : LZB match past end\n",
                  Src);
              ooLogErrorPost();
              return -1i64;
            }
            if ( to + 12 > v20 + 8
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                   43,
                   "Decode_LZB_OneChunk",
                   "rp+12 <= rpEnd+8") )
            {
              __debugbreak();
            }
            *(_QWORD *)to = *(_QWORD *)v156;
            *((_DWORD *)to + 2) = *((_DWORD *)v156 + 2);
            to += v106;
          }
        }
      }
    }
    if ( (unsigned __int64)length < 0xF )
      break;
    if ( (char *)Src + 3 > v195
      && rrDisplayAssertion(
           "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
           16,
           "Decode_LZB_OneChunk",
           "cp+3 <= comp_end") )
    {
      __debugbreak();
    }
    v59 = *(unsigned __int8 *)Src;
    Src = (char *)Src + 1;
    if ( v59 >= 0xC0 )
    {
      length += (v59 - 192) << 8;
      length += *(unsigned __int8 *)Src;
      Src = (char *)Src + 1;
    }
    else
    {
      length += v59;
    }
    if ( (char *)Src + length > v195 )
    {
      ooLogErrorPre();
      if ( g_fp_OodlePlugin_Printf )
        g_fp_OodlePlugin_Printf(
          1,
          "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
          23,
          "OODLE ERROR : LZ corruption : LZB decomp past end\n",
          Src);
      ooLogErrorPost();
      return -1i64;
    }
    if ( &to[length] >= v20 )
    {
      if ( &to[length] <= v20 )
      {
        if ( (char *)Src + length > v195
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
               36,
               "Decode_LZB_OneChunk",
               "cp+lrl <= comp_end") )
        {
          __debugbreak();
        }
        copy_no_overlap_nooverrun(to, (const char *)Src, length);
        to += length;
        Src = (char *)Src + length;
        goto LABEL_1055;
      }
      ooLogErrorPre();
      if ( g_fp_OodlePlugin_Printf )
        g_fp_OodlePlugin_Printf(
          1,
          "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
          32,
          "OODLE ERROR : LZ corruption : LZB decomp past end\n",
          Src);
      ooLogErrorPost();
      return -1i64;
    }
    if ( &to[length] > v20
      && rrDisplayAssertion(
           "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
           46,
           "Decode_LZB_OneChunk",
           "rp+lrl <= rpEnd") )
    {
      __debugbreak();
    }
    if ( (char *)Src + length > v195
      && rrDisplayAssertion(
           "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
           47,
           "Decode_LZB_OneChunk",
           "cp+lrl <= comp_end") )
    {
      __debugbreak();
    }
    copy_no_overlap_long(to, (const char *)Src, length);
    to += length;
    Src = (char *)Src + length;
    if ( Src >= v24 )
    {
      if ( Src >= v195 )
      {
        ooLogErrorPre();
        if ( g_fp_OodlePlugin_Printf )
          g_fp_OodlePlugin_Printf(
            1,
            "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
            54,
            "OODLE ERROR : LZ corruption : LZB comp over-read\n",
            Src);
        ooLogErrorPost();
        return -1i64;
      }
      if ( v195 == &v193 )
      {
        ooLogErrorPre();
        if ( g_fp_OodlePlugin_Printf )
          g_fp_OodlePlugin_Printf(
            1,
            "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
            54,
            "OODLE ERROR : LZ corruption : LZB comp safe twice\n",
            Src);
        ooLogErrorPost();
        return -1i64;
      }
      v148 = v195 - (_BYTE *)Src;
      if ( (unsigned __int64)(v195 - (_BYTE *)Src) >= 0x80
        && rrDisplayAssertion(
             "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
             54,
             "Decode_LZB_OneChunk",
             "copy_len < sizeof(cp_safe)") )
      {
        __debugbreak();
      }
      memmove(Dst, Src, v148);
      v194 = &Dst[-((_BYTE *)Src - v194)];
      v195 = &v193;
      v24 = (char *)&v16 + 1458;
      Src = Dst;
    }
LABEL_725:
    v21 = v23 >> 4;
    if ( (char *)Src + 2 > v195
      && rrDisplayAssertion(
           "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
           6,
           "Decode_LZB_OneChunk",
           "cp+2 <= comp_end") )
    {
      __debugbreak();
    }
    v22 = *(unsigned __int16 *)Src;
    if ( v21 > 8 )
    {
      if ( v21 >= 0xF )
      {
        if ( Src >= v195
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
               95,
               "Decode_LZB_OneChunk",
               "cp < comp_end") )
        {
          __debugbreak();
        }
        v119 = v22 & 0x7F;
        Src = (char *)Src + 1;
        if ( v22 & 0x80 )
        {
          v21 = v119 >> 3;
          v44 = (v119 >> 3) + 4;
          if ( v119 >> 3 == 15 )
          {
            if ( (char *)Src + 3 > v195
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                   117,
                   "Decode_LZB_OneChunk",
                   "cp+3 <= comp_end") )
            {
              __debugbreak();
            }
            v75 = *(unsigned __int8 *)Src;
            Src = (char *)Src + 1;
            if ( v75 >= 0xC0 )
            {
              v44 += (v75 - 192) << 8;
              v44 += *(unsigned __int8 *)Src;
              Src = (char *)Src + 1;
            }
            else
            {
              v44 += v75;
            }
          }
          if ( &to[v44] > v20 )
          {
            ooLogErrorPre();
            if ( g_fp_OodlePlugin_Printf )
              g_fp_OodlePlugin_Printf(
                1,
                "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                125,
                "OODLE ERROR : LZ corruption : LZB match past end\n",
                Src);
            ooLogErrorPost();
            return -1i64;
          }
          v117 = v22 & 7;
          v50 = &to[-v117];
          v87 = to;
          *to = to[-v117];
          v87[1] = v50[1];
          v87[2] = v50[2];
          v87[3] = v50[3];
          v50 += c_overlap_offset_step1add[v117];
          *((_DWORD *)v87 + 1) = *(_DWORD *)v50;
          if ( v44 > 8 )
          {
            v12 = &v50[-c_overlap_offset_step2sub[v117] + 8];
            v176 = v87 + 8;
            copy_no_overlap_long(v87 + 8, v12, v44 - 8);
          }
          to += v44;
        }
        else
        {
          v160 = *(unsigned __int16 *)Src;
          Src = (char *)Src + 2;
          v161 = &to[-v160];
          v32 = v119 + v21 + 4;
          if ( v119 == 127 )
          {
            if ( (char *)Src + 3 > v195
              && rrDisplayAssertion(
                   "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                   177,
                   "Decode_LZB_OneChunk",
                   "cp+3 <= comp_end") )
            {
              __debugbreak();
            }
            v58 = *(unsigned __int8 *)Src;
            Src = (char *)Src + 1;
            if ( v58 >= 0xC0 )
            {
              v32 += (v58 - 192) << 8;
              v32 += *(unsigned __int8 *)Src;
              Src = (char *)Src + 1;
            }
            else
            {
              v32 += v58;
            }
          }
          if ( &to[v32] > v20 )
          {
            ooLogErrorPre();
            if ( g_fp_OodlePlugin_Printf )
              g_fp_OodlePlugin_Printf(
                1,
                "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
                185,
                "OODLE ERROR : LZ corruption : LZB match past end\n",
                Src);
            ooLogErrorPost();
            return -1i64;
          }
          copy_no_overlap_long(to, v161, v32);
          to += v32;
        }
      }
      else
      {
        Src = (char *)Src + 2;
        v115 = &to[-v22];
        v85 = v21 + 4;
        if ( v22 < 8
          && v85 > v22
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
               69,
               "Decode_LZB_OneChunk",
               "off >= 8 || ml <= off") )
        {
          __debugbreak();
        }
        if ( v85 > 0x12
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
               70,
               "Decode_LZB_OneChunk",
               "ml <= 18") )
        {
          __debugbreak();
        }
        if ( &to[v85] > v20 )
        {
          ooLogErrorPre();
          if ( g_fp_OodlePlugin_Printf )
            g_fp_OodlePlugin_Printf(
              1,
              "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
              74,
              "OODLE ERROR : LZ corruption : LZB match past end\n",
              Src);
          ooLogErrorPost();
          return -1i64;
        }
        if ( to + 16 > v20 + 8
          && rrDisplayAssertion(
               "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
               80,
               "Decode_LZB_OneChunk",
               "rp+16 <= rpEnd+8") )
        {
          __debugbreak();
        }
        *(_QWORD *)to = *(_QWORD *)v115;
        *((_QWORD *)to + 1) = *((_QWORD *)v115 + 1);
        if ( v85 > 0x10 )
          *((_WORD *)to + 8) = *((_WORD *)v115 + 8);
        to += v85;
      }
    }
    else
    {
      Src = (char *)Src + 2;
      v150 = &to[-v22];
      v104 = v21 + 4;
      if ( v21 + 4 > 0xC
        && rrDisplayAssertion(
             "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
             29,
             "Decode_LZB_OneChunk",
             "ml <= 12") )
      {
        __debugbreak();
      }
      if ( &to[v104] > v20 )
      {
        ooLogErrorPre();
        if ( g_fp_OodlePlugin_Printf )
          g_fp_OodlePlugin_Printf(
            1,
            "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
            38,
            "OODLE ERROR : LZ corruption : LZB match past end\n",
            Src);
        ooLogErrorPost();
        return -1i64;
      }
      if ( to + 12 > v20 + 8
        && rrDisplayAssertion(
             "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner2.inl",
             43,
             "Decode_LZB_OneChunk",
             "rp+12 <= rpEnd+8") )
      {
        __debugbreak();
      }
      *(_QWORD *)to = *(_QWORD *)v150;
      *((_DWORD *)to + 2) = *((_DWORD *)v150 + 2);
      to += v104;
    }
  }
  if ( &to[length] < v20 )
  {
    if ( to + 16 > v20 + 8
      && rrDisplayAssertion(
           "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
           90,
           "Decode_LZB_OneChunk",
           "rp+16 <= rpEnd+8") )
    {
      __debugbreak();
    }
    if ( (char *)Src + 16 > v195
      && rrDisplayAssertion(
           "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
           91,
           "Decode_LZB_OneChunk",
           "cp+16 <= comp_end") )
    {
      __debugbreak();
    }
    _mm_store_si128((__m128i *)&v188, _mm_loadu_si128((const __m128i *)Src));
    _mm_storeu_si128((__m128i *)to, _mm_load_si128((const __m128i *)&v188));
    to += length;
    Src = (char *)Src + length;
    goto LABEL_725;
  }
  length = rrPtrDiff32_6(v20 - to);
  if ( (char *)Src + length <= v195 )
  {
    if ( &to[length] > v20
      && rrDisplayAssertion(
           "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
           70,
           "Decode_LZB_OneChunk",
           "rp+lrl <= rpEnd") )
    {
      __debugbreak();
    }
    if ( (char *)Src + length > v195
      && rrDisplayAssertion(
           "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
           71,
           "Decode_LZB_OneChunk",
           "cp+lrl <= comp_end") )
    {
      __debugbreak();
    }
    copy_no_overlap_nooverrun(to, (const char *)Src, length);
    to += length;
    Src = (char *)Src + length;
    goto LABEL_1055;
  }
  ooLogErrorPre();
  if ( g_fp_OodlePlugin_Printf )
    g_fp_OodlePlugin_Printf(
      1,
      "v:\\devel\\projects\\oodle2\\core\\lzb_decode_inner.inl",
      67,
      "OODLE ERROR : LZ corruption : LZB decomp past end\n",
      Src);
  ooLogErrorPost();
  return -1i64;
}
