__int64 __fastcall sub_7100BFB7AC(__int64 result, __int64 a2, __int64 a3)
{
  __int64 v3; // x19
  __int64 *v4; // x21
  __int64 v5; // x8
  __int64 v6; // x0
  __int64 v7; // x20
  __int64 v8; // x0
  int v9; // w8
  size_t v10; // x22
  __int64 v11; // x28
  const char **v12; // x23
  void *v13; // x24
  nn::os *v14; // x0
  unsigned int v15; // w0
  unsigned int v16; // w8
  unsigned int v17; // w9
  unsigned int v18; // w10
  unsigned int v19; // w11
  unsigned int v20; // w8
  unsigned int v21; // w12
  unsigned int v22; // w9
  unsigned int v23; // w8
  unsigned int v24; // w10
  unsigned int v25; // w9
  unsigned int v26; // w10
  __int64 v27; // x8
  const char **v28; // x9
  const char **v29; // x11
  __int64 *v30; // x23
  __int64 v31; // x8
  __int64 v32; // x0
  __int64 v33; // x20
  __int64 v34; // x0
  __int64 v35; // x28
  __int64 v36; // x27
  __int64 v37; // x26
  __int64 v38; // x8
  _BYTE *v39; // x0
  __int64 v40; // x8
  unsigned int v41; // w22
  void *v42; // x0
  __int64 v43; // x0
  __int64 v44; // x21
  __int64 v45; // x8
  unsigned int v46; // w9
  __int64 v47; // x8
  size_t v48; // x23
  void *v49; // x22
  size_t v50; // x24
  const char *v51; // x8
  const char **v52; // x9
  __int64 v53; // x11
  nn::os *v54; // x0
  unsigned int SystemTick; // w0
  unsigned int v56; // w11
  unsigned int v57; // w10
  unsigned int v58; // w9
  unsigned int v59; // w8
  unsigned int v60; // w11
  unsigned int v61; // w12
  unsigned int v62; // w10
  unsigned int v63; // w11
  unsigned int v64; // w9
  unsigned int v65; // w10
  unsigned int v66; // w8
  __int64 *v67; // x8
  __int64 v68; // x20
  __int64 v69; // x0
  __int64 TlsValue; // x0
  __int64 *v71; // x8
  __int64 v72; // x0
  __int64 *v73; // x22
  __int64 v74; // x8
  __int64 v75; // x21
  __int64 v76; // x0
  const char *v77; // x1
  __int64 *v78; // x20
  __int64 v79; // x24
  __int64 *v80; // x26
  __int64 v81; // x27
  __int64 v82; // x8
  __int64 v83; // x9
  __int64 v84; // x9
  __int64 v85; // x9
  __int64 v86; // x9
  __int64 v87; // x9
  unsigned int v88; // w9
  __int64 v89; // x8
  __int64 *v90; // x20
  __int64 v91; // x22
  __int64 *v92; // x24
  __int64 v93; // x26
  _QWORD *v94; // x21
  signed int v95; // w10
  _BYTE *v96; // x20
  unsigned __int64 v97; // x26
  const char **v98; // x22
  const char **v99; // x21
  _QWORD *v100; // x28
  _QWORD *v101; // x8
  const char *v102; // x1
  _BYTE *v103; // x24
  int Only; // w0
  __int64 v105; // x8
  __int64 v106; // x8
  int v107; // w25
  const char *v108; // x0
  const char **v109; // x20
  __int64 v110; // x8
  const char *v111; // x1
  const char **v112; // x8
  const char *v113; // x10
  __int64 v114; // x11
  __int64 v115; // x9
  _QWORD *v116; // x10
  __int64 v117; // x10
  _QWORD *v118; // x11
  unsigned int v119; // w12
  _QWORD *v120; // x11
  __int64 v121; // x8
  __int64 v122; // x9
  __int64 v123; // x9
  __int64 v124; // x9
  __int64 v125; // x9
  __int64 v126; // x9
  __int64 v127; // x9
  __int64 v128; // x9
  __int64 v129; // x9
  __int64 v130; // x9
  unsigned int v131; // w9
  __int64 v132; // x8
  _BYTE *v133; // x22
  const char **v134; // x9
  __int64 v135; // x8
  __int64 v136; // x10
  char v137; // w9
  __int64 v138; // x8
  _BYTE *v139; // x22
  __int64 v140; // x8
  _BYTE *v141; // x22
  __int64 v142; // x8
  _BYTE *v143; // x22
  __int64 v144; // x8
  _BYTE *v145; // x22
  __int64 v146; // x8
  _BYTE *v147; // x22
  __int64 v148; // x8
  _BYTE *v149; // x22
  __int64 v150; // x8
  _BYTE *v151; // x22
  __int64 v152; // x8
  _BYTE *v153; // x22
  __int64 v154; // x8
  _BYTE *v155; // x21
  unsigned int v156; // w9
  __int64 v157; // x8
  const char **v158; // x9
  __int64 v159; // x8
  __int64 v160; // x10
  char v161; // w9
  __int64 v162; // x8
  _BYTE *v163; // x21
  __int64 v164; // x8
  _BYTE *v165; // x21
  __int64 v166; // x8
  _BYTE *v167; // x21
  __int64 v168; // x8
  _BYTE *v169; // x21
  __int64 v170; // x8
  _BYTE *v171; // x21
  __int64 v172; // x8
  _BYTE *v173; // x21
  __int64 v174; // x8
  _BYTE *v175; // x21
  __int64 v176; // x8
  _BYTE *v177; // x21
  char v178; // w8
  __int64 v179; // x20
  __int64 v180; // x20
  __int64 v181; // x20
  __int64 v182; // x20
  unsigned __int64 v183; // [xsp+0h] [xbp-170h]
  size_t v184; // [xsp+18h] [xbp-158h]
  _QWORD *v185; // [xsp+18h] [xbp-158h]
  char v186[16]; // [xsp+20h] [xbp-150h] BYREF
  int v187[4]; // [xsp+30h] [xbp-140h] BYREF
  unsigned __int64 v188; // [xsp+40h] [xbp-130h] BYREF
  unsigned __int64 v189; // [xsp+48h] [xbp-128h]
  const char *v190; // [xsp+50h] [xbp-120h] BYREF
  const char **v191; // [xsp+58h] [xbp-118h]
  __int64 v192; // [xsp+60h] [xbp-110h]
  __int128 v193; // [xsp+68h] [xbp-108h] BYREF
  _DWORD n[3]; // [xsp+78h] [xbp-F8h] BYREF
  unsigned int v195; // [xsp+84h] [xbp-ECh] BYREF
  _QWORD v196[4]; // [xsp+88h] [xbp-E8h] BYREF
  const char *v197; // [xsp+A8h] [xbp-C8h] BYREF
  const char *v198; // [xsp+B0h] [xbp-C0h]
  const char **v199; // [xsp+B8h] [xbp-B8h]
  __int128 v200; // [xsp+C0h] [xbp-B0h]
  int v201; // [xsp+D0h] [xbp-A0h]
  __int16 v202; // [xsp+D4h] [xbp-9Ch]
  __int64 v203; // [xsp+D8h] [xbp-98h]
  char v204; // [xsp+E0h] [xbp-90h]
  const char *v205; // [xsp+E8h] [xbp-88h] BYREF
  const char **v206; // [xsp+F0h] [xbp-80h]
  const char **v207; // [xsp+F8h] [xbp-78h]
  const char **v208; // [xsp+100h] [xbp-70h] BYREF
  const char **v209; // [xsp+108h] [xbp-68h]
  const char **v210; // [xsp+110h] [xbp-60h]
  const char **v211; // [xsp+118h] [xbp-58h]
  const char **v212; // [xsp+120h] [xbp-50h]

  v3 = result;
  if ( a3 == 1818517859 )
  {
    *(_QWORD *)(result + 256) = 0LL;
    *(_QWORD *)(result + 264) = 0LL;
    *(_QWORD *)(result + 240) = 0LL;
    *(_QWORD *)(result + 248) = 0LL;
    v30 = off_7102D17A10[0];
    v31 = *(_QWORD *)(*off_7102D17A10[0] + 3216);
    v32 = *(_QWORD *)(result + 200);
    if ( *(_DWORD *)(*off_7102D17A10[0] + 3208) > 2u )
      v31 += 416LL;
    v33 = *(unsigned int *)(v31 + 96);
    v196[0] = (*(__int64 (__fastcall **)(__int64, __int64, __int64))(*(_QWORD *)v32 + 48LL))(v32, v33, 8LL);
    v196[1] = (*(__int64 (__fastcall **)(_QWORD, __int64, __int64))(**(_QWORD **)(v3 + 200) + 48LL))(
                *(_QWORD *)(v3 + 200),
                v33,
                8LL);
    v196[2] = (*(__int64 (__fastcall **)(_QWORD, __int64, __int64))(**(_QWORD **)(v3 + 200) + 48LL))(
                *(_QWORD *)(v3 + 200),
                v33,
                8LL);
    v196[3] = (*(__int64 (__fastcall **)(_QWORD, __int64, __int64))(**(_QWORD **)(v3 + 200) + 48LL))(
                *(_QWORD *)(v3 + 200),
                v33,
                8LL);
    v195 = 0;
    v34 = *v30;
    LODWORD(v205) = 4;
    v206 = (const char **)v196;
    result = sub_7101EE5A78(v34, &v205, (unsigned int)v33, &v195, *(_QWORD *)(v3 + 216), 4LL);
    v35 = 0LL;
    *(_BYTE *)(v3 + 353) = 0;
    v36 = 64LL;
    do
    {
      if ( *(_BYTE *)(v3 + v36) )
      {
        if ( (*(_BYTE *)(v3 + 352) & (unsigned __int8)(1 << v35)) != 0 )
        {
          v37 = v3 + 8 * v35;
          result = *(_QWORD *)(v37 + 32);
          v38 = *(_QWORD *)(*v30 + 3216);
          if ( *(_DWORD *)(*v30 + 3208) > 2u )
            v38 += 416LL;
          *(_BYTE *)(*(int *)(v38 + 16) + *(_QWORD *)(v38 + 8) - 1LL) = 0;
          LOBYTE(v205) = 0;
          if ( *(_BYTE *)(result + 120)
            && (result = (*(__int64 (__fastcall **)(__int64, const char **, __int64))(*(_QWORD *)result + 192LL))(
                           result,
                           &v205,
                           v38 + 8),
                (_BYTE)v205) )
          {
            v39 = *(_BYTE **)(v37 + 32);
            v40 = *(_QWORD *)(*v30 + 3216);
            if ( *(_DWORD *)(*v30 + 3208) > 2u )
              v40 += 416LL;
            *(_BYTE *)(*(int *)(v40 + 16) + *(_QWORD *)(v40 + 8) - 1LL) = 0;
            LODWORD(v205) = 0;
            if ( v39[120] )
            {
              (*(void (__fastcall **)(_BYTE *, const char **, __int64))(*(_QWORD *)v39 + 176LL))(v39, &v205, v40 + 8);
              v41 = (unsigned int)v205;
            }
            else
            {
              v41 = 0;
            }
            LOBYTE(n[0]) = 0;
            n[1] = v35;
            if ( v41 >> 4 > 0x270
              || (LODWORD(v197) = 1,
                  v205 = "ElsaSaveDataModule.cpp",
                  result = sub_71011D3330(n, &v197, v41, &v205, 1597LL),
                  v41) )
            {
              v43 = (*(__int64 (__fastcall **)(_QWORD, _QWORD, __int64))(**(_QWORD **)(v3 + 200) + 48LL))(
                      *(_QWORD *)(v3 + 200),
                      v41,
                      8LL);
              LODWORD(v210) = 0;
              v44 = v43;
              v208 = 0LL;
              v209 = 0LL;
              WORD2(v210) = 257;
              LOBYTE(v212) = 0;
              v211 = 0LL;
              v45 = *v30;
              v206 = (const char **)v43;
              LODWORD(v207) = v41;
              v46 = *(_DWORD *)(v45 + 3208);
              v47 = *(_QWORD *)(v45 + 3216);
              if ( v46 > 2 )
                v47 += 416LL;
              *(_BYTE *)(*(int *)(v47 + 16) + *(_QWORD *)(v47 + 8) - 1LL) = 0;
              v205 = *(const char **)(v47 + 8);
              BYTE5(v210) = 1;
              result = *(_QWORD *)(v37 + 32);
              if ( *(_BYTE *)(result + 120) )
              {
                result = (*(__int64 (__fastcall **)(__int64, const char **))(*(_QWORD *)result + 88LL))(result, &v205);
                if ( result )
                {
                  v48 = v41 - 40;
                  v49 = (void *)(*(__int64 (__fastcall **)(_QWORD, size_t, __int64))(**(_QWORD **)(v3 + 200) + 48LL))(
                                  *(_QWORD *)(v3 + 200),
                                  v48,
                                  8LL);
                  memset(v49, 0LL, v48);
                  v197 = *(const char **)v44;
                  v50 = HIDWORD(v197);
                  v51 = *(const char **)(v44 + 8);
                  v52 = *(const char ***)(v44 + 16);
                  v53 = *(_QWORD *)(v44 + 32);
                  *(_QWORD *)&v200 = *(_QWORD *)(v44 + 24);
                  *((_QWORD *)&v200 + 1) = v53;
                  v198 = v51;
                  v199 = v52;
                  v54 = (nn::os *)(*(__int64 (__fastcall **)(_QWORD, _QWORD, __int64))(**(_QWORD **)(v3 + 200) + 48LL))(
                                    *(_QWORD *)(v3 + 200),
                                    HIDWORD(v197),
                                    8LL);
                  *(_QWORD *)(v37 + 240) = v54;
                  SystemTick = nn::os::GetSystemTick(v54);
                  v56 = 1812433253 * (SystemTick ^ (SystemTick >> 30)) + 1;
                  v57 = 1812433253 * (v56 ^ (v56 >> 30)) + 2;
                  v58 = 1812433253 * (v57 ^ (v57 >> 30)) + 3;
                  v59 = 1812433253 * (v58 ^ (v58 >> 30)) + 4;
                  v190 = (const char *)__PAIR64__(v57, v56);
                  v191 = (const char **)__PAIR64__(v59, v58);
                  if ( (_DWORD)v198 && HIDWORD(v198) && (_DWORD)v199 && HIDWORD(v199) )
                  {
                    v59 = HIDWORD(v199);
                    v58 = (unsigned int)v199;
                    v190 = v198;
                    v57 = HIDWORD(v198);
                    v56 = (unsigned int)v198;
                    v191 = v199;
                  }
                  v60 = v56 ^ (v56 << 11) ^ v59 ^ ((v56 ^ (v56 << 11)) >> 8);
                  v61 = v60 ^ (v59 >> 19);
                  v62 = v57 ^ (v57 << 11) ^ ((v57 ^ (v57 << 11)) >> 8) ^ v61;
                  v63 = v62 ^ (v60 >> 19);
                  v64 = v58 ^ (v58 << 11) ^ ((v58 ^ (v58 << 11)) >> 8) ^ v63;
                  v65 = v64 ^ (v62 >> 19);
                  v66 = v59 ^ (v59 << 11) ^ ((v59 ^ (v59 << 11)) >> 8) ^ v65 ^ (v64 >> 19);
                  v190 = (const char *)__PAIR64__(v63, v61);
                  v191 = (const char **)__PAIR64__(v66, v65);
                  v188 = v63 | ((unsigned __int64)v61 << 32);
                  v189 = v66 | ((unsigned __int64)v65 << 32);
                  sub_7100BFF350(v187, &v190);
                  nn::crypto::DecryptAes128Cbc(
                    (nn::crypto *)v49,
                    (void *)v48,
                    (unsigned __int64)v187,
                    (const void *)0x10,
                    (unsigned __int64)&v188,
                    (const void *)0x10,
                    v44 + 40,
                    (const void *)v48,
                    v183);
                  sub_7100BFF350(v186, &v190);
                  memcpy(*(void **)(v37 + 240), v49, v50);
                  sub_7100BFF980(&v193, *(_QWORD *)(v37 + 240), v50, v186);
                  if ( v200 != v193 )
                  {
                    (*(void (__fastcall **)(_QWORD, _QWORD))(**(_QWORD **)(v3 + 200) + 56LL))(
                      *(_QWORD *)(v3 + 200),
                      *(_QWORD *)(v37 + 240));
                    *(_QWORD *)(v37 + 240) = 0LL;
                  }
                  (*(void (__fastcall **)(_QWORD, void *))(**(_QWORD **)(v3 + 200) + 56LL))(*(_QWORD *)(v3 + 200), v49);
                  result = (*(__int64 (__fastcall **)(_QWORD, __int64))(**(_QWORD **)(v3 + 200) + 56LL))(
                             *(_QWORD *)(v3 + 200),
                             v44);
                  v30 = off_7102D17A10[0];
                }
              }
            }
          }
          else
          {
            *(_BYTE *)(v3 + 353) |= 1 << v35;
          }
        }
        else
        {
          v42 = (void *)(*(__int64 (__fastcall **)(_QWORD, _QWORD, __int64))(**(_QWORD **)(v3 + 200) + 48LL))(
                          *(_QWORD *)(v3 + 200),
                          v195,
                          8LL);
          *(_QWORD *)(v3 + 8 * v35 + 240) = v42;
          result = (__int64)memcpy(v42, (const void *)v196[v35], v195);
        }
      }
      ++v35;
      v36 += 24LL;
    }
    while ( v35 != 4 );
    v82 = *v30;
    *(_DWORD *)(v82 + 3204) = *(_DWORD *)(*v30 + 3204) | 8;
    if ( *(_DWORD *)(v82 + 3208) <= 2u )
      v83 = *(_QWORD *)(v82 + 3216);
    else
      v83 = *(_QWORD *)(v82 + 3216) + 416LL;
    if ( (*(_BYTE *)(v83 + 128) & 2) != 0 )
      goto LABEL_158;
    *(_QWORD *)(v83 + 136) = *(_QWORD *)(v3 + 240);
    v84 = *(_QWORD *)(v82 + 3216);
    if ( *(_DWORD *)(v82 + 3208) > 2u )
      v84 += 416LL;
    *(_QWORD *)(v84 + 144) = *(_QWORD *)(v3 + 248);
    v85 = *(_QWORD *)(v82 + 3216);
    if ( *(_DWORD *)(v82 + 3208) > 2u )
      v85 += 416LL;
    *(_QWORD *)(v85 + 152) = *(_QWORD *)(v3 + 256);
    v86 = *(_QWORD *)(v82 + 3216);
    if ( *(_DWORD *)(v82 + 3208) > 2u )
      v86 += 416LL;
    *(_QWORD *)(v86 + 160) = *(_QWORD *)(v3 + 264);
    v87 = *(_QWORD *)(v82 + 3216);
    if ( *(_DWORD *)(v82 + 3208) > 2u )
      v87 += 416LL;
    *(_DWORD *)(v87 + 200) = 4;
    v88 = *(_DWORD *)(v82 + 3208);
    v89 = *(_QWORD *)(v82 + 3216);
    if ( v88 > 2 )
      v89 += 416LL;
    goto LABEL_157;
  }
  if ( a3 == 1818518904 )
  {
    *(_QWORD *)(result + 320) = 0LL;
    *(_QWORD *)(result + 328) = 0LL;
    *(_QWORD *)(result + 304) = 0LL;
    *(_QWORD *)(result + 312) = 0LL;
    *(_QWORD *)(result + 288) = 0LL;
    *(_QWORD *)(result + 296) = 0LL;
    v67 = off_7102D17650[0];
    *(_QWORD *)(result + 272) = 0LL;
    *(_QWORD *)(result + 280) = 0LL;
    v68 = *v67;
    if ( *v67 )
    {
      v69 = *(_QWORD *)(result + 200);
      if ( !v69 )
      {
        TlsValue = nn::os::GetTlsValue(*(unsigned int *)(*off_7102D17658[0] + 104));
        v71 = (__int64 *)(TlsValue + 136);
        if ( !TlsValue )
          v71 = (__int64 *)(v68 + 8);
        v69 = *v71;
        if ( !*v71 )
        {
          v94 = 0LL;
          goto LABEL_72;
        }
      }
      v72 = (*(__int64 (__fastcall **)(__int64, __int64, __int64))(*(_QWORD *)v69 + 48LL))(v69, 136LL, 8LL);
    }
    else
    {
      v72 = malloc(0x88uLL);
    }
    v94 = (_QWORD *)v72;
LABEL_72:
    v197 = "SaveReadOnly";
    v205 = "save";
    sub_71017A5478(v94, &v205, &v197);
    v185 = v94;
    *v94 = (char *)off_7102D1A880 + 16;
    LODWORD(v196[0]) = 0;
    result = nn::account::ListQualifiedUsers(v196, &v205, 8LL);
    v95 = v196[0];
    if ( SLODWORD(v196[0]) < 1 )
      goto LABEL_123;
    v96 = v94;
    v97 = 0LL;
    v98 = (const char **)(v3 + 272);
    v99 = &v205;
    v100 = (_QWORD *)(v3 + 360);
    while ( 1 )
    {
      result = nn::fs::IsSaveDataExisting(v99);
      if ( (result & 1) != 0 )
        break;
      if ( v97 >= 8 )
        v101 = (_QWORD *)(v3 + 360);
      else
        v101 = v100;
      *v101 = 0LL;
      v101[1] = 0LL;
LABEL_78:
      v95 = v196[0];
      ++v97;
      v100 += 2;
      ++v98;
      v99 += 2;
      if ( (__int64)v97 >= SLODWORD(v196[0]) )
      {
        if ( SLODWORD(v196[0]) <= 7 )
        {
LABEL_123:
          v114 = v95;
          v115 = v95;
          if ( (v95 & 1) != 0 )
          {
            if ( (unsigned int)v95 >= 8 )
              v116 = (_QWORD *)(v3 + 360);
            else
              v116 = (_QWORD *)(v3 + 16LL * v95 + 360);
            v115 = v114 + 1;
            *v116 = 0LL;
            v116[1] = 0LL;
          }
          if ( (_DWORD)v114 != 7 )
          {
            v117 = v3 + 16 * v115 + 376;
            do
            {
              v118 = (_QWORD *)(v117 - 16);
              v119 = v115 + 1;
              if ( (unsigned int)v115 >= 8 )
                v118 = (_QWORD *)(v3 + 360);
              *v118 = 0LL;
              v118[1] = 0LL;
              LODWORD(v115) = v115 + 2;
              if ( v119 >= 8 )
                v120 = (_QWORD *)(v3 + 360);
              else
                v120 = (_QWORD *)v117;
              v117 += 32LL;
              *v120 = 0LL;
              v120[1] = 0LL;
            }
            while ( (_DWORD)v115 != 8 );
          }
        }
        v121 = *off_7102D17A10[0];
        *(_DWORD *)(v121 + 3204) = *(_DWORD *)(*off_7102D17A10[0] + 3204) | 0x10;
        if ( *(_DWORD *)(v121 + 3208) <= 3u )
          v122 = *(_QWORD *)(v121 + 3216);
        else
          v122 = *(_QWORD *)(v121 + 3216) + 624LL;
        if ( (*(_BYTE *)(v122 + 128) & 2) != 0 )
          goto LABEL_158;
        *(_QWORD *)(v122 + 136) = *(_QWORD *)(v3 + 272);
        v123 = *(_QWORD *)(v121 + 3216);
        if ( *(_DWORD *)(v121 + 3208) > 3u )
          v123 += 624LL;
        *(_QWORD *)(v123 + 144) = *(_QWORD *)(v3 + 280);
        v124 = *(_QWORD *)(v121 + 3216);
        if ( *(_DWORD *)(v121 + 3208) > 3u )
          v124 += 624LL;
        *(_QWORD *)(v124 + 152) = *(_QWORD *)(v3 + 288);
        v125 = *(_QWORD *)(v121 + 3216);
        if ( *(_DWORD *)(v121 + 3208) > 3u )
          v125 += 624LL;
        *(_QWORD *)(v125 + 160) = *(_QWORD *)(v3 + 296);
        v126 = *(_QWORD *)(v121 + 3216);
        if ( *(_DWORD *)(v121 + 3208) > 3u )
          v126 += 624LL;
        *(_QWORD *)(v126 + 168) = *(_QWORD *)(v3 + 304);
        v127 = *(_QWORD *)(v121 + 3216);
        if ( *(_DWORD *)(v121 + 3208) > 3u )
          v127 += 624LL;
        *(_QWORD *)(v127 + 176) = *(_QWORD *)(v3 + 312);
        v128 = *(_QWORD *)(v121 + 3216);
        if ( *(_DWORD *)(v121 + 3208) > 3u )
          v128 += 624LL;
        *(_QWORD *)(v128 + 184) = *(_QWORD *)(v3 + 320);
        v129 = *(_QWORD *)(v121 + 3216);
        if ( *(_DWORD *)(v121 + 3208) > 3u )
          v129 += 624LL;
        *(_QWORD *)(v129 + 192) = *(_QWORD *)(v3 + 328);
        v130 = *(_QWORD *)(v121 + 3216);
        if ( *(_DWORD *)(v121 + 3208) > 3u )
          v130 += 624LL;
        *(_DWORD *)(v130 + 200) = 8;
        v131 = *(_DWORD *)(v121 + 3208);
        v89 = *(_QWORD *)(v121 + 3216);
        if ( v131 > 3 )
          v89 += 624LL;
LABEL_157:
        *(_BYTE *)(v89 + 128) |= 2u;
        goto LABEL_158;
      }
    }
    if ( *(_BYTE *)(v3 + 64) )
    {
      v103 = 0LL;
      if ( *(const char **)(v3 + 72) == *v99 && *(const char **)(v3 + 80) == v99[1] )
        v103 = *(_BYTE **)(v3 + 32);
      if ( !*(_BYTE *)(v3 + 88) )
        goto LABEL_90;
    }
    else
    {
      v103 = 0LL;
      if ( !*(_BYTE *)(v3 + 88) )
      {
LABEL_90:
        if ( *(_BYTE *)(v3 + 112) && *(const char **)(v3 + 120) == *v99 && *(const char **)(v3 + 128) == v99[1] )
          v103 = *(_BYTE **)(v3 + 48);
        if ( *(_BYTE *)(v3 + 136) && *(const char **)(v3 + 144) == *v99 && *(const char **)(v3 + 152) == v99[1] )
          v103 = *(_BYTE **)(v3 + 56);
        if ( v103
          || (Only = nn::fs::MountSaveDataReadOnly("SaveReadOnly", 0x100D2F00D5C0000LL, v99), v96)
          && (v103 = v96, !Only) )
        {
          v105 = *(_QWORD *)(*off_7102D17A10[0] + 3216);
          if ( *(_DWORD *)(*off_7102D17A10[0] + 3208) > 3u )
            v105 += 624LL;
          *(_BYTE *)(*(int *)(v105 + 16) + *(_QWORD *)(v105 + 8) - 1LL) = 0;
          LOBYTE(v197) = 0;
          if ( v103[120] )
          {
            (*(void (__fastcall **)(_BYTE *, const char **, __int64))(*(_QWORD *)v103 + 192LL))(v103, &v197, v105 + 8);
            if ( (_BYTE)v197 )
            {
              v106 = *(_QWORD *)(*off_7102D17A10[0] + 3216);
              if ( *(_DWORD *)(*off_7102D17A10[0] + 3208) > 3u )
                v106 += 624LL;
              *(_BYTE *)(*(int *)(v106 + 16) + *(_QWORD *)(v106 + 8) - 1LL) = 0;
              LODWORD(v197) = 0;
              if ( v103[120] )
              {
                (*(void (__fastcall **)(_BYTE *, const char **, __int64))(*(_QWORD *)v103 + 176LL))(
                  v103,
                  &v197,
                  v106 + 8);
                v107 = (int)v197;
                if ( (_DWORD)v197 )
                {
                  v108 = (const char *)(*(__int64 (__fastcall **)(_QWORD, _QWORD, __int64))(**(_QWORD **)(v3 + 200)
                                                                                          + 48LL))(
                                         *(_QWORD *)(v3 + 200),
                                         (unsigned int)v197,
                                         8LL);
                  v109 = v98;
                  if ( v97 >= 8 )
                    v109 = (const char **)(v3 + 272);
                  *v109 = v108;
                  v201 = 0;
                  v200 = 0uLL;
                  v202 = 257;
                  v204 = 0;
                  v203 = 0LL;
                  v198 = v108;
                  LODWORD(v199) = v107;
                  v110 = *(_QWORD *)(*off_7102D17A10[0] + 3216);
                  if ( *(_DWORD *)(*off_7102D17A10[0] + 3208) > 3u )
                    v110 += 624LL;
                  *(_BYTE *)(*(int *)(v110 + 16) + *(_QWORD *)(v110 + 8) - 1LL) = 0;
                  v197 = *(const char **)(v110 + 8);
                  HIBYTE(v202) = 1;
                  if ( !v103[120]
                    || !(*(__int64 (__fastcall **)(_BYTE *, const char **))(*(_QWORD *)v103 + 88LL))(v103, &v197) )
                  {
                    (*(void (__fastcall **)(_QWORD, const char *))(**(_QWORD **)(v3 + 200) + 56LL))(
                      *(_QWORD *)(v3 + 200),
                      *v109);
                    *v109 = 0LL;
                  }
                  v96 = v185;
                }
              }
            }
          }
        }
        result = nn::fs::IsMounted((nn::fs *)"SaveReadOnly", v102);
        if ( (result & 1) != 0 )
          result = nn::fs::Unmount((nn::fs *)"SaveReadOnly", v111);
        v112 = (const char **)v100;
        if ( v97 >= 8 )
          v112 = (const char **)(v3 + 360);
        v113 = v99[1];
        *v112 = *v99;
        v112[1] = v113;
        goto LABEL_78;
      }
    }
    if ( *(const char **)(v3 + 96) == *v99 && *(const char **)(v3 + 104) == v99[1] )
      v103 = *(_BYTE **)(v3 + 40);
    goto LABEL_90;
  }
  if ( a3 != 1935767141 )
    goto LABEL_158;
  v4 = off_7102D17A10[0];
  v5 = *(_QWORD *)(*off_7102D17A10[0] + 3216);
  v6 = *(_QWORD *)(result + 200);
  if ( *(_DWORD *)(*off_7102D17A10[0] + 3208) > 2u )
    v5 += 416LL;
  v7 = *(unsigned int *)(v5 + 96);
  v197 = (const char *)(*(__int64 (__fastcall **)(__int64, __int64, __int64))(*(_QWORD *)v6 + 48LL))(v6, v7, 8LL);
  v198 = (const char *)(*(__int64 (__fastcall **)(_QWORD, __int64, __int64))(**(_QWORD **)(v3 + 200) + 48LL))(
                         *(_QWORD *)(v3 + 200),
                         v7,
                         8LL);
  v199 = (const char **)(*(__int64 (__fastcall **)(_QWORD, __int64, __int64))(**(_QWORD **)(v3 + 200) + 48LL))(
                          *(_QWORD *)(v3 + 200),
                          v7,
                          8LL);
  *(_QWORD *)&v200 = (*(__int64 (__fastcall **)(_QWORD, __int64, __int64))(**(_QWORD **)(v3 + 200) + 48LL))(
                       *(_QWORD *)(v3 + 200),
                       v7,
                       8LL);
  n[0] = 0;
  v8 = *v4;
  LODWORD(v205) = 4;
  v206 = &v197;
  sub_7101EE5A78(v8, &v205, (unsigned int)v7, n, *(_QWORD *)(v3 + 216), 4LL);
  if ( n[0] < 0 )
    v9 = n[0] - 15;
  else
    v9 = n[0] + 15;
  v10 = (v9 + (v9 < 0 ? 0xF : 0)) & 0xFFFFFFF0;
  v11 = 0LL;
  v184 = (unsigned int)(v10 + 40);
  do
  {
    if ( ((*(unsigned __int8 *)(v3 + 352) >> v11) & 1) != 0 )
    {
      v12 = (const char **)(*(__int64 (__fastcall **)(_QWORD, size_t, __int64))(**(_QWORD **)(v3 + 200) + 48LL))(
                             *(_QWORD *)(v3 + 200),
                             v184,
                             8LL);
      v196[v11] = v12;
      memset(v12, 0LL, v184);
      v13 = (void *)(*(__int64 (__fastcall **)(_QWORD, size_t, __int64))(**(_QWORD **)(v3 + 200) + 48LL))(
                      *(_QWORD *)(v3 + 200),
                      v10,
                      8LL);
      memset(v13, 0LL, v10);
      v14 = (nn::os *)memcpy(v13, (&v197)[v11], n[0]);
      LODWORD(v205) = 1;
      HIDWORD(v205) = n[0];
      v15 = nn::os::GetSystemTick(v14);
      v16 = 1812433253 * (v15 ^ (v15 >> 30)) + 1;
      v17 = 1812433253 * (v16 ^ (v16 >> 30)) + 2;
      v18 = 1812433253 * (v17 ^ (v17 >> 30)) + 3;
      v206 = (const char **)__PAIR64__(v17, v16);
      v19 = 1812433253 * (v18 ^ (v18 >> 30)) + 4;
      v20 = v16 ^ (v16 << 11) ^ ((v16 ^ (v16 << 11)) >> 8) ^ v19;
      v21 = v20 ^ (v19 >> 19);
      v207 = (const char **)__PAIR64__(v19, v18);
      v22 = v17 ^ (v17 << 11) ^ ((v17 ^ (v17 << 11)) >> 8) ^ v21;
      v23 = v22 ^ (v20 >> 19);
      v24 = v18 ^ (v18 << 11) ^ ((v18 ^ (v18 << 11)) >> 8) ^ v23;
      v25 = v24 ^ (v22 >> 19);
      v26 = v19 ^ (v19 << 11) ^ ((v19 ^ (v19 << 11)) >> 8) ^ v25 ^ (v24 >> 19);
      v190 = (const char *)__PAIR64__(v23, v21);
      v191 = (const char **)__PAIR64__(v26, v25);
      v188 = v23 | ((unsigned __int64)v21 << 32);
      v189 = v26 | ((unsigned __int64)v25 << 32);
      sub_7100BFF350(v187, &v190);
      nn::crypto::EncryptAes128Cbc(
        (nn::crypto *)(v12 + 5),
        (void *)v10,
        (unsigned __int64)v187,
        (const void *)0x10,
        (unsigned __int64)&v188,
        (const void *)0x10,
        (unsigned __int64)v13,
        (const void *)v10,
        v183);
      sub_7100BFF350(v186, &v190);
      sub_7100BFF980(&v208, (&v197)[v11], n[0], v186);
      *v12 = v205;
      v27 = (__int64)v206;
      v28 = v207;
      v29 = v209;
      v12[3] = (const char *)v208;
      v12[4] = (const char *)v29;
      v12[1] = (const char *)v27;
      v12[2] = (const char *)v28;
      (*(void (__fastcall **)(_QWORD, void *))(**(_QWORD **)(v3 + 200) + 56LL))(*(_QWORD *)(v3 + 200), v13);
    }
    ++v11;
  }
  while ( v11 != 4 );
  v73 = off_7102D17A10[0];
  v74 = *(_QWORD *)(*off_7102D17A10[0] + 3216);
  if ( *(_DWORD *)(*off_7102D17A10[0] + 3208) > 3u )
    v74 += 624LL;
  v75 = *(unsigned int *)(v74 + 96);
  v205 = (const char *)(*(__int64 (__fastcall **)(_QWORD, __int64, __int64))(**(_QWORD **)(v3 + 200) + 48LL))(
                         *(_QWORD *)(v3 + 200),
                         v75,
                         8LL);
  v206 = (const char **)(*(__int64 (__fastcall **)(_QWORD, __int64, __int64))(**(_QWORD **)(v3 + 200) + 48LL))(
                          *(_QWORD *)(v3 + 200),
                          v75,
                          8LL);
  v207 = (const char **)(*(__int64 (__fastcall **)(_QWORD, __int64, __int64))(**(_QWORD **)(v3 + 200) + 48LL))(
                          *(_QWORD *)(v3 + 200),
                          v75,
                          8LL);
  v208 = (const char **)(*(__int64 (__fastcall **)(_QWORD, __int64, __int64))(**(_QWORD **)(v3 + 200) + 48LL))(
                          *(_QWORD *)(v3 + 200),
                          v75,
                          8LL);
  v209 = (const char **)(*(__int64 (__fastcall **)(_QWORD, __int64, __int64))(**(_QWORD **)(v3 + 200) + 48LL))(
                          *(_QWORD *)(v3 + 200),
                          v75,
                          8LL);
  v210 = (const char **)(*(__int64 (__fastcall **)(_QWORD, __int64, __int64))(**(_QWORD **)(v3 + 200) + 48LL))(
                          *(_QWORD *)(v3 + 200),
                          v75,
                          8LL);
  v211 = (const char **)(*(__int64 (__fastcall **)(_QWORD, __int64, __int64))(**(_QWORD **)(v3 + 200) + 48LL))(
                          *(_QWORD *)(v3 + 200),
                          v75,
                          8LL);
  v212 = (const char **)(*(__int64 (__fastcall **)(_QWORD, __int64, __int64))(**(_QWORD **)(v3 + 200) + 48LL))(
                          *(_QWORD *)(v3 + 200),
                          v75,
                          8LL);
  v76 = *v73;
  LODWORD(v188) = 0;
  LODWORD(v190) = 8;
  v191 = &v205;
  result = sub_7101EE5A78(v76, &v190, (unsigned int)v75, &v188, *(_QWORD *)(v3 + 232), 8LL);
  if ( (unsigned int)v184 >> 4 < 0x271 )
  {
    v78 = off_7102D17A10[0];
    v79 = 0LL;
    v80 = (__int64 *)(v3 + 80);
    v81 = v3 + 32;
    while ( 1 )
    {
      if ( ((*(unsigned __int8 *)(v3 + 352) >> v79) & 1) == 0 )
        goto LABEL_160;
      LOBYTE(v193) = 0;
      DWORD1(v193) = v79;
      v187[0] = 60;
      v190 = "ElsaSaveDataModule.cpp";
      result = sub_71011D3330(&v193, v187, v184, &v190, 1483LL);
      v132 = *(_QWORD *)(*v78 + 3216);
      v133 = *(_BYTE **)(v81 + 8 * v79);
      if ( *(_DWORD *)(*v78 + 3208) > 2u )
        v132 += 416LL;
      *(_BYTE *)(*(int *)(v132 + 16) + *(_QWORD *)(v132 + 8) - 1LL) = 0;
      v191 = 0LL;
      v192 = 0LL;
      v134 = (const char **)v196[v79];
      v190 = *(const char **)(v132 + 8);
      v191 = v134;
      LODWORD(v192) = v184;
      if ( !v133[120] )
        goto LABEL_158;
      result = (*(__int64 (__fastcall **)(_BYTE *))(*(_QWORD *)v133 + 32LL))(v133);
      if ( (result & 1) == 0 )
        goto LABEL_158;
      result = (*(__int64 (__fastcall **)(_BYTE *, const char **))(*(_QWORD *)v133 + 96LL))(v133, &v190);
      if ( (result & 1) == 0 )
        goto LABEL_158;
      v135 = *(v80 - 1);
      v136 = *v80;
      v137 = 0;
      if ( v135 == *(_QWORD *)(v3 + 360) && v136 == *(_QWORD *)(v3 + 368) )
      {
        v138 = *(_QWORD *)(*v78 + 3216);
        v139 = *(_BYTE **)(v81 + 8 * v79);
        if ( *(_DWORD *)(*v78 + 3208) > 3u )
          v138 += 624LL;
        *(_BYTE *)(*(int *)(v138 + 16) + *(_QWORD *)(v138 + 8) - 1LL) = 0;
        v191 = 0LL;
        v192 = 0LL;
        v190 = *(const char **)(v138 + 8);
        v191 = (const char **)v205;
        LODWORD(v192) = v188;
        if ( !v139[120] )
          goto LABEL_158;
        result = (*(__int64 (__fastcall **)(_BYTE *))(*(_QWORD *)v139 + 32LL))(v139);
        if ( (result & 1) == 0 )
          goto LABEL_158;
        result = (*(__int64 (__fastcall **)(_BYTE *, const char **))(*(_QWORD *)v139 + 96LL))(v139, &v190);
        if ( (result & 1) == 0 )
          goto LABEL_158;
        v135 = *(v80 - 1);
        v136 = *v80;
        v137 = 1;
      }
      if ( v135 == *(_QWORD *)(v3 + 376) && v136 == *(_QWORD *)(v3 + 384) )
      {
        v140 = *(_QWORD *)(*v78 + 3216);
        v141 = *(_BYTE **)(v81 + 8 * v79);
        if ( *(_DWORD *)(*v78 + 3208) > 3u )
          v140 += 624LL;
        *(_BYTE *)(*(int *)(v140 + 16) + *(_QWORD *)(v140 + 8) - 1LL) = 0;
        v191 = 0LL;
        v192 = 0LL;
        v190 = *(const char **)(v140 + 8);
        v191 = v206;
        LODWORD(v192) = v188;
        if ( !v141[120] )
          goto LABEL_158;
        result = (*(__int64 (__fastcall **)(_BYTE *))(*(_QWORD *)v141 + 32LL))(v141);
        if ( (result & 1) == 0 )
          goto LABEL_158;
        result = (*(__int64 (__fastcall **)(_BYTE *, const char **))(*(_QWORD *)v141 + 96LL))(v141, &v190);
        if ( (result & 1) == 0 )
          goto LABEL_158;
        v135 = *(v80 - 1);
        v136 = *v80;
        v137 = 1;
      }
      if ( v135 == *(_QWORD *)(v3 + 392) && v136 == *(_QWORD *)(v3 + 400) )
      {
        v142 = *(_QWORD *)(*v78 + 3216);
        v143 = *(_BYTE **)(v81 + 8 * v79);
        if ( *(_DWORD *)(*v78 + 3208) > 3u )
          v142 += 624LL;
        *(_BYTE *)(*(int *)(v142 + 16) + *(_QWORD *)(v142 + 8) - 1LL) = 0;
        v191 = 0LL;
        v192 = 0LL;
        v190 = *(const char **)(v142 + 8);
        v191 = v207;
        LODWORD(v192) = v188;
        if ( !v143[120] )
          goto LABEL_158;
        result = (*(__int64 (__fastcall **)(_BYTE *))(*(_QWORD *)v143 + 32LL))(v143);
        if ( (result & 1) == 0 )
          goto LABEL_158;
        result = (*(__int64 (__fastcall **)(_BYTE *, const char **))(*(_QWORD *)v143 + 96LL))(v143, &v190);
        if ( (result & 1) == 0 )
          goto LABEL_158;
        v135 = *(v80 - 1);
        v136 = *v80;
        v137 = 1;
      }
      if ( v135 == *(_QWORD *)(v3 + 408) && v136 == *(_QWORD *)(v3 + 416) )
      {
        v144 = *(_QWORD *)(*v78 + 3216);
        v145 = *(_BYTE **)(v81 + 8 * v79);
        if ( *(_DWORD *)(*v78 + 3208) > 3u )
          v144 += 624LL;
        *(_BYTE *)(*(int *)(v144 + 16) + *(_QWORD *)(v144 + 8) - 1LL) = 0;
        v191 = 0LL;
        v192 = 0LL;
        v190 = *(const char **)(v144 + 8);
        v191 = v208;
        LODWORD(v192) = v188;
        if ( !v145[120] )
          goto LABEL_158;
        result = (*(__int64 (__fastcall **)(_BYTE *))(*(_QWORD *)v145 + 32LL))(v145);
        if ( (result & 1) == 0 )
          goto LABEL_158;
        result = (*(__int64 (__fastcall **)(_BYTE *, const char **))(*(_QWORD *)v145 + 96LL))(v145, &v190);
        if ( (result & 1) == 0 )
          goto LABEL_158;
        v135 = *(v80 - 1);
        v136 = *v80;
        v137 = 1;
      }
      if ( v135 == *(_QWORD *)(v3 + 424) && v136 == *(_QWORD *)(v3 + 432) )
      {
        v146 = *(_QWORD *)(*v78 + 3216);
        v147 = *(_BYTE **)(v81 + 8 * v79);
        if ( *(_DWORD *)(*v78 + 3208) > 3u )
          v146 += 624LL;
        *(_BYTE *)(*(int *)(v146 + 16) + *(_QWORD *)(v146 + 8) - 1LL) = 0;
        v191 = 0LL;
        v192 = 0LL;
        v190 = *(const char **)(v146 + 8);
        v191 = v209;
        LODWORD(v192) = v188;
        if ( !v147[120] )
          goto LABEL_158;
        result = (*(__int64 (__fastcall **)(_BYTE *))(*(_QWORD *)v147 + 32LL))(v147);
        if ( (result & 1) == 0 )
          goto LABEL_158;
        result = (*(__int64 (__fastcall **)(_BYTE *, const char **))(*(_QWORD *)v147 + 96LL))(v147, &v190);
        if ( (result & 1) == 0 )
          goto LABEL_158;
        v135 = *(v80 - 1);
        v136 = *v80;
        v137 = 1;
      }
      if ( v135 == *(_QWORD *)(v3 + 440) && v136 == *(_QWORD *)(v3 + 448) )
      {
        v148 = *(_QWORD *)(*v78 + 3216);
        v149 = *(_BYTE **)(v81 + 8 * v79);
        if ( *(_DWORD *)(*v78 + 3208) > 3u )
          v148 += 624LL;
        *(_BYTE *)(*(int *)(v148 + 16) + *(_QWORD *)(v148 + 8) - 1LL) = 0;
        v191 = 0LL;
        v192 = 0LL;
        v190 = *(const char **)(v148 + 8);
        v191 = v210;
        LODWORD(v192) = v188;
        if ( !v149[120] )
          goto LABEL_158;
        result = (*(__int64 (__fastcall **)(_BYTE *))(*(_QWORD *)v149 + 32LL))(v149);
        if ( (result & 1) == 0 )
          goto LABEL_158;
        result = (*(__int64 (__fastcall **)(_BYTE *, const char **))(*(_QWORD *)v149 + 96LL))(v149, &v190);
        if ( (result & 1) == 0 )
          goto LABEL_158;
        v135 = *(v80 - 1);
        v136 = *v80;
        v137 = 1;
      }
      if ( v135 != *(_QWORD *)(v3 + 456) || v136 != *(_QWORD *)(v3 + 464) )
        break;
      v150 = *(_QWORD *)(*v78 + 3216);
      v151 = *(_BYTE **)(v81 + 8 * v79);
      if ( *(_DWORD *)(*v78 + 3208) > 3u )
        v150 += 624LL;
      *(_BYTE *)(*(int *)(v150 + 16) + *(_QWORD *)(v150 + 8) - 1LL) = 0;
      v191 = 0LL;
      v192 = 0LL;
      v190 = *(const char **)(v150 + 8);
      v191 = v211;
      LODWORD(v192) = v188;
      if ( !v151[120] )
        goto LABEL_158;
      result = (*(__int64 (__fastcall **)(_BYTE *))(*(_QWORD *)v151 + 32LL))(v151);
      if ( (result & 1) == 0 )
        goto LABEL_158;
      result = (*(__int64 (__fastcall **)(_BYTE *, const char **))(*(_QWORD *)v151 + 96LL))(v151, &v190);
      if ( (result & 1) == 0 )
        goto LABEL_158;
      if ( *(v80 - 1) == *(_QWORD *)(v3 + 472) && *v80 == *(_QWORD *)(v3 + 480) )
        goto LABEL_227;
LABEL_160:
      ++v79;
      v80 += 3;
      if ( v79 == 4 )
        goto LABEL_307;
    }
    if ( v135 != *(_QWORD *)(v3 + 472) || v136 != *(_QWORD *)(v3 + 480) )
    {
      if ( (v137 & 1) == 0 )
        goto LABEL_158;
      goto LABEL_160;
    }
LABEL_227:
    v152 = *(_QWORD *)(*v78 + 3216);
    v153 = *(_BYTE **)(v81 + 8 * v79);
    if ( *(_DWORD *)(*v78 + 3208) > 3u )
      v152 += 624LL;
    *(_BYTE *)(*(int *)(v152 + 16) + *(_QWORD *)(v152 + 8) - 1LL) = 0;
    v191 = 0LL;
    v192 = 0LL;
    v190 = *(const char **)(v152 + 8);
    v191 = v212;
    LODWORD(v192) = v188;
    if ( !v153[120] )
      goto LABEL_158;
    result = (*(__int64 (__fastcall **)(_BYTE *))(*(_QWORD *)v153 + 32LL))(v153);
    if ( (result & 1) == 0 )
      goto LABEL_158;
    result = (*(__int64 (__fastcall **)(_BYTE *, const char **))(*(_QWORD *)v153 + 96LL))(v153, &v190);
    if ( (result & 1) == 0 )
      goto LABEL_158;
    goto LABEL_160;
  }
  v90 = off_7102D17A10[0];
  v91 = 0LL;
  v92 = (__int64 *)(v3 + 80);
  v93 = v3 + 32;
  do
  {
    if ( ((*(unsigned __int8 *)(v3 + 352) >> v91) & 1) == 0 )
      goto LABEL_234;
    v154 = *v90;
    LOBYTE(v193) = 0;
    DWORD1(v193) = v91;
    v155 = *(_BYTE **)(v93 + 8 * v91);
    v156 = *(_DWORD *)(v154 + 3208);
    v157 = *(_QWORD *)(v154 + 3216);
    if ( v156 > 2 )
      v157 += 416LL;
    *(_BYTE *)(*(int *)(v157 + 16) + *(_QWORD *)(v157 + 8) - 1LL) = 0;
    v191 = 0LL;
    v192 = 0LL;
    v158 = (const char **)v196[v91];
    v190 = *(const char **)(v157 + 8);
    v191 = v158;
    LODWORD(v192) = v184;
    if ( !v155[120] )
      goto LABEL_158;
    result = (*(__int64 (__fastcall **)(_BYTE *))(*(_QWORD *)v155 + 32LL))(v155);
    if ( (result & 1) == 0 )
      goto LABEL_158;
    result = (*(__int64 (__fastcall **)(_BYTE *, const char **))(*(_QWORD *)v155 + 96LL))(v155, &v190);
    if ( (result & 1) == 0 )
      goto LABEL_158;
    v159 = *(v92 - 1);
    v160 = *v92;
    v161 = 0;
    if ( v159 == *(_QWORD *)(v3 + 360) && v160 == *(_QWORD *)(v3 + 368) )
    {
      v162 = *(_QWORD *)(*v90 + 3216);
      v163 = *(_BYTE **)(v93 + 8 * v91);
      if ( *(_DWORD *)(*v90 + 3208) > 3u )
        v162 += 624LL;
      *(_BYTE *)(*(int *)(v162 + 16) + *(_QWORD *)(v162 + 8) - 1LL) = 0;
      v191 = 0LL;
      v192 = 0LL;
      v190 = *(const char **)(v162 + 8);
      v191 = (const char **)v205;
      LODWORD(v192) = v188;
      if ( !v163[120] )
        goto LABEL_158;
      result = (*(__int64 (__fastcall **)(_BYTE *))(*(_QWORD *)v163 + 32LL))(v163);
      if ( (result & 1) == 0 )
        goto LABEL_158;
      result = (*(__int64 (__fastcall **)(_BYTE *, const char **))(*(_QWORD *)v163 + 96LL))(v163, &v190);
      if ( (result & 1) == 0 )
        goto LABEL_158;
      v159 = *(v92 - 1);
      v160 = *v92;
      v161 = 1;
    }
    if ( v159 == *(_QWORD *)(v3 + 376) && v160 == *(_QWORD *)(v3 + 384) )
    {
      v164 = *(_QWORD *)(*v90 + 3216);
      v165 = *(_BYTE **)(v93 + 8 * v91);
      if ( *(_DWORD *)(*v90 + 3208) > 3u )
        v164 += 624LL;
      *(_BYTE *)(*(int *)(v164 + 16) + *(_QWORD *)(v164 + 8) - 1LL) = 0;
      v191 = 0LL;
      v192 = 0LL;
      v190 = *(const char **)(v164 + 8);
      v191 = v206;
      LODWORD(v192) = v188;
      if ( !v165[120] )
        goto LABEL_158;
      result = (*(__int64 (__fastcall **)(_BYTE *))(*(_QWORD *)v165 + 32LL))(v165);
      if ( (result & 1) == 0 )
        goto LABEL_158;
      result = (*(__int64 (__fastcall **)(_BYTE *, const char **))(*(_QWORD *)v165 + 96LL))(v165, &v190);
      if ( (result & 1) == 0 )
        goto LABEL_158;
      v159 = *(v92 - 1);
      v160 = *v92;
      v161 = 1;
    }
    if ( v159 == *(_QWORD *)(v3 + 392) && v160 == *(_QWORD *)(v3 + 400) )
    {
      v166 = *(_QWORD *)(*v90 + 3216);
      v167 = *(_BYTE **)(v93 + 8 * v91);
      if ( *(_DWORD *)(*v90 + 3208) > 3u )
        v166 += 624LL;
      *(_BYTE *)(*(int *)(v166 + 16) + *(_QWORD *)(v166 + 8) - 1LL) = 0;
      v191 = 0LL;
      v192 = 0LL;
      v190 = *(const char **)(v166 + 8);
      v191 = v207;
      LODWORD(v192) = v188;
      if ( !v167[120] )
        goto LABEL_158;
      result = (*(__int64 (__fastcall **)(_BYTE *))(*(_QWORD *)v167 + 32LL))(v167);
      if ( (result & 1) == 0 )
        goto LABEL_158;
      result = (*(__int64 (__fastcall **)(_BYTE *, const char **))(*(_QWORD *)v167 + 96LL))(v167, &v190);
      if ( (result & 1) == 0 )
        goto LABEL_158;
      v159 = *(v92 - 1);
      v160 = *v92;
      v161 = 1;
    }
    if ( v159 == *(_QWORD *)(v3 + 408) && v160 == *(_QWORD *)(v3 + 416) )
    {
      v168 = *(_QWORD *)(*v90 + 3216);
      v169 = *(_BYTE **)(v93 + 8 * v91);
      if ( *(_DWORD *)(*v90 + 3208) > 3u )
        v168 += 624LL;
      *(_BYTE *)(*(int *)(v168 + 16) + *(_QWORD *)(v168 + 8) - 1LL) = 0;
      v191 = 0LL;
      v192 = 0LL;
      v190 = *(const char **)(v168 + 8);
      v191 = v208;
      LODWORD(v192) = v188;
      if ( !v169[120] )
        goto LABEL_158;
      result = (*(__int64 (__fastcall **)(_BYTE *))(*(_QWORD *)v169 + 32LL))(v169);
      if ( (result & 1) == 0 )
        goto LABEL_158;
      result = (*(__int64 (__fastcall **)(_BYTE *, const char **))(*(_QWORD *)v169 + 96LL))(v169, &v190);
      if ( (result & 1) == 0 )
        goto LABEL_158;
      v159 = *(v92 - 1);
      v160 = *v92;
      v161 = 1;
    }
    if ( v159 == *(_QWORD *)(v3 + 424) && v160 == *(_QWORD *)(v3 + 432) )
    {
      v170 = *(_QWORD *)(*v90 + 3216);
      v171 = *(_BYTE **)(v93 + 8 * v91);
      if ( *(_DWORD *)(*v90 + 3208) > 3u )
        v170 += 624LL;
      *(_BYTE *)(*(int *)(v170 + 16) + *(_QWORD *)(v170 + 8) - 1LL) = 0;
      v191 = 0LL;
      v192 = 0LL;
      v190 = *(const char **)(v170 + 8);
      v191 = v209;
      LODWORD(v192) = v188;
      if ( !v171[120] )
        goto LABEL_158;
      result = (*(__int64 (__fastcall **)(_BYTE *))(*(_QWORD *)v171 + 32LL))(v171);
      if ( (result & 1) == 0 )
        goto LABEL_158;
      result = (*(__int64 (__fastcall **)(_BYTE *, const char **))(*(_QWORD *)v171 + 96LL))(v171, &v190);
      if ( (result & 1) == 0 )
        goto LABEL_158;
      v159 = *(v92 - 1);
      v160 = *v92;
      v161 = 1;
    }
    if ( v159 == *(_QWORD *)(v3 + 440) && v160 == *(_QWORD *)(v3 + 448) )
    {
      v172 = *(_QWORD *)(*v90 + 3216);
      v173 = *(_BYTE **)(v93 + 8 * v91);
      if ( *(_DWORD *)(*v90 + 3208) > 3u )
        v172 += 624LL;
      *(_BYTE *)(*(int *)(v172 + 16) + *(_QWORD *)(v172 + 8) - 1LL) = 0;
      v191 = 0LL;
      v192 = 0LL;
      v190 = *(const char **)(v172 + 8);
      v191 = v210;
      LODWORD(v192) = v188;
      if ( !v173[120] )
        goto LABEL_158;
      result = (*(__int64 (__fastcall **)(_BYTE *))(*(_QWORD *)v173 + 32LL))(v173);
      if ( (result & 1) == 0 )
        goto LABEL_158;
      result = (*(__int64 (__fastcall **)(_BYTE *, const char **))(*(_QWORD *)v173 + 96LL))(v173, &v190);
      if ( (result & 1) == 0 )
        goto LABEL_158;
      v159 = *(v92 - 1);
      v160 = *v92;
      v161 = 1;
    }
    if ( v159 != *(_QWORD *)(v3 + 456) || v160 != *(_QWORD *)(v3 + 464) )
    {
      if ( v159 != *(_QWORD *)(v3 + 472) || v160 != *(_QWORD *)(v3 + 480) )
      {
        if ( (v161 & 1) == 0 )
          goto LABEL_158;
        goto LABEL_234;
      }
LABEL_301:
      v176 = *(_QWORD *)(*v90 + 3216);
      v177 = *(_BYTE **)(v93 + 8 * v91);
      if ( *(_DWORD *)(*v90 + 3208) > 3u )
        v176 += 624LL;
      *(_BYTE *)(*(int *)(v176 + 16) + *(_QWORD *)(v176 + 8) - 1LL) = 0;
      v191 = 0LL;
      v192 = 0LL;
      v190 = *(const char **)(v176 + 8);
      v191 = v212;
      LODWORD(v192) = v188;
      if ( !v177[120] )
        goto LABEL_158;
      result = (*(__int64 (__fastcall **)(_BYTE *))(*(_QWORD *)v177 + 32LL))(v177);
      if ( (result & 1) == 0 )
        goto LABEL_158;
      result = (*(__int64 (__fastcall **)(_BYTE *, const char **))(*(_QWORD *)v177 + 96LL))(v177, &v190);
      if ( (result & 1) == 0 )
        goto LABEL_158;
      goto LABEL_234;
    }
    v174 = *(_QWORD *)(*v90 + 3216);
    v175 = *(_BYTE **)(v93 + 8 * v91);
    if ( *(_DWORD *)(*v90 + 3208) > 3u )
      v174 += 624LL;
    *(_BYTE *)(*(int *)(v174 + 16) + *(_QWORD *)(v174 + 8) - 1LL) = 0;
    v191 = 0LL;
    v192 = 0LL;
    v190 = *(const char **)(v174 + 8);
    v191 = v211;
    LODWORD(v192) = v188;
    if ( !v175[120] )
      goto LABEL_158;
    result = (*(__int64 (__fastcall **)(_BYTE *))(*(_QWORD *)v175 + 32LL))(v175);
    if ( (result & 1) == 0 )
      goto LABEL_158;
    result = (*(__int64 (__fastcall **)(_BYTE *, const char **))(*(_QWORD *)v175 + 96LL))(v175, &v190);
    if ( (result & 1) == 0 )
      goto LABEL_158;
    if ( *(v92 - 1) == *(_QWORD *)(v3 + 472) && *v92 == *(_QWORD *)(v3 + 480) )
      goto LABEL_301;
LABEL_234:
    ++v91;
    v92 += 3;
  }
  while ( v91 != 4 );
LABEL_307:
  v178 = *(_BYTE *)(v3 + 352);
  if ( (v178 & 1) == 0 )
    goto LABEL_310;
  v179 = *(_QWORD *)(v3 + 32);
  result = nn::fs::Commit(*(nn::fs **)(v179 + 128), v77);
  *(_DWORD *)(v179 + 124) = result;
  if ( !(_DWORD)result )
  {
    v178 = *(_BYTE *)(v3 + 352);
LABEL_310:
    if ( (v178 & 2) != 0 )
    {
      v180 = *(_QWORD *)(v3 + 40);
      result = nn::fs::Commit(*(nn::fs **)(v180 + 128), v77);
      *(_DWORD *)(v180 + 124) = result;
      if ( !(_DWORD)result )
      {
        v178 = *(_BYTE *)(v3 + 352);
        goto LABEL_313;
      }
    }
    else
    {
LABEL_313:
      if ( (v178 & 4) != 0 )
      {
        v181 = *(_QWORD *)(v3 + 48);
        result = nn::fs::Commit(*(nn::fs **)(v181 + 128), v77);
        *(_DWORD *)(v181 + 124) = result;
        if ( (_DWORD)result )
          goto LABEL_158;
        v178 = *(_BYTE *)(v3 + 352);
      }
      if ( (v178 & 8) != 0 )
      {
        v182 = *(_QWORD *)(v3 + 56);
        result = nn::fs::Commit(*(nn::fs **)(v182 + 128), v77);
        *(_DWORD *)(v182 + 124) = result;
      }
    }
  }
LABEL_158:
  *(_BYTE *)(v3 + 488) = 0;
  return result;
}