Code Monkey home page Code Monkey logo

Comments (3)

e-ave avatar e-ave commented on June 5, 2024 1

Potentially useful information i have discovered

MZMediaType (mt)
1 = Music
2 = Podcasts
3 = Audiobooks
4 = TVShows
5 = MusicVideos
6 = Movies
7 = ClassicSoftware
8 = MobileSoftware
9 = Ringtones
10 = iTunesU
11 = EBooks
12 = MacSoftware


MZPriceType
STDQ = Standard quality.//apples documentation
PLUS = High quality. //apples documentation - is this lossless? (music videos, ringtone, premium tracks) Unsure if PLUS replaced HQ; HQPRE and HQRDL are used instead of PLUSPRE/PLUSRDL. Unsure what the UP variants are unless its for uploading? PLUSUP & PLUSPREUP exist whereas HQUP/HQPREUP do not exist.
HQPRE = High quality preorder
HQRDL = High quality redownload
STDQPRE = Standard Quality Preorder
STDRDL - Standard redownload
STDOTA - Standard over the air


HCSD = Video SD upscaled to HD?
HDBUY - Video HD
HDPRE - Video HD Preorder
HDRDL - Video HD redownload

HDDESKTOPVOD = Desktop iTunes HD video resolutions
LCVOD = Desktop iTunes SD video resolutions?

SDVOD = Standard video rental
HDVOD = HD video rental


SWUPD - Software update
SWUPGRD - Software upgrade? I think this is when an app needs completely downloaded and update is when it can just patch the existing files
PLUSUP
SUBS = subscription; I think this is used if you "Get" an album on Apple Music instead of "Buy" it
GAME = Apple Arcade


productType
A=Apple offer
B=Digital Booklet
C=iOS App
P=audiobook, tv seasons(HDBUY, HCSD), album 
PUB=eBook
S=song
V=video
Q=season pass HDBUY,STDQ


"Subtitles for the deaf and hard of hearing (SDH) refer to subtitles in the original language with the addition of relevant non-dialog information.

    "MZPriceType": {
      "STDQ": {
        "isHD": false,
        "isSTDQ": true,
        "isRental": false,
        "isRedownload": false,
        "isBuy": true,
        "isPreorder": false
      },
      "STDQPRE": {
        "isHD": false,
        "isSTDQ": true,
        "isRental": false,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": true
      },
      "STDQFUL": {
        "isHD": false,
        "isSTDQ": true,
        "isRental": false,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": false
      },
      "HCSD": { 
        "isHD": false,
        "isSTDQ": true,//variant=SD
        "isRental": false,
        "isRedownload": false,
        "isBuy": true,//kind=BUY
        "isPreorder": false
      },
      "HCSDPRE": {
        "isHD": false,
        "isSTDQ": true,
        "isRental": false,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": true
      },
      "HCSDFUL": {
        "isHD": false,
        "isSTDQ": true,
        "isRental": false,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": false
      },
      "PLUS": {
        "isHD": true,
        "isSTDQ": false,
        "isRental": false,
        "isRedownload": false,
        "isBuy": true,
        "isPreorder": false
      },
      "HQPRE": {
        "isHD": true,
        "isSTDQ": false,
        "isRental": false,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": true
      },
      "HQFUL": {
        "isHD": true,
        "isSTDQ": false,
        "isRental": false,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": false
      },
      "HDBUY": {
        "isHD": true,
        "isSTDQ": false,
        "isRental": false,
        "isRedownload": false,
        "isBuy": true,
        "isPreorder": false
      },
      "HDPRE": {
        "isHD": true,
        "isSTDQ": false,
        "isRental": false,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": true
      },
      "HDFUL": {
        "isHD": true,
        "isSTDQ": false,
        "isRental": false,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": false
      },
      "SDVOD": {
        "isHD": false,
        "isSTDQ": true,
        "isRental": true,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": false
      },
      "LCVOD": {
        "isHD": false,
        "isSTDQ": true,
        "isRental": true,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": false
      },
      "HDVOD": {
        "isHD": true,
        "isSTDQ": false,
        "isRental": true,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": false
      },
      "HDDESKTOPVOD": {
        "isHD": true,
        "isSTDQ": false,
        "isRental": true,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": false
      },
      "STDRDL": {
        "isHD": false,
        "isSTDQ": true,
        "isRental": false,
        "isRedownload": true,
        "isBuy": false,
        "isPreorder": false
      },
      "HCSDRDL": {
        "isHD": false,
        "isSTDQ": true,
        "isRental": false,
        "isRedownload": true,
        "isBuy": false,
        "isPreorder": false
      },
      "HQRDL": {
        "isHD": true,
        "isSTDQ": false,
        "isRental": false,
        "isRedownload": true,
        "isBuy": false,
        "isPreorder": false
      },
      "HDRDL": {
        "isHD": true,
        "isSTDQ": false,
        "isRental": false,
        "isRedownload": true,
        "isBuy": false,
        "isPreorder": false
      },
      "PLUSUP": {
        "isHD": false,
        "isSTDQ": false,
        "isRental": false,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": false
      },
      "PLUSPREUP": {
        "isHD": false,
        "isSTDQ": false,
        "isRental": false,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": true
      },
      "RING": {
        "isHD": false,
        "isSTDQ": false,
        "isRental": false,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": false
      },
      "TKTM": {
        "isHD": false,
        "isSTDQ": false,
        "isRental": false,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": false
      },
      "2NDS": {
        "isHD": false,
        "isSTDQ": false,
        "isRental": false,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": false
      },
      "SWUPGRD": {
        "isHD": false,
        "isSTDQ": false,
        "isRental": false,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": false
      },
      "SWUPD": {
        "isHD": false,
        "isSTDQ": false,
        "isRental": false,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": false
      },
      "THDOME": {
        "isHD": false,
        "isSTDQ": false,
        "isRental": false,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": false
      },
      "STDOTA": {
        "isHD": false,
        "isSTDQ": true,
        "isRental": false,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": false
      },
      "HQOTA": {
        "isHD": true,
        "isSTDQ": false,
        "isRental": false,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": false
      },
      "HDOTA": {
        "isHD": true,
        "isSTDQ": false,
        "isRental": false,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": false
      },
      "RADIO": {
        "isHD": false,
        "isSTDQ": false,
        "isRental": false,
        "isRedownload": false,
        "isBuy": false,
        "isPreorder": false
      }
    },
    
char *__fastcall GenerateKBSync(__int64 a1)
{
  char *v1; // rsi
  int m_scInfo; // r13d
  _QWORD *v3; // rdi
  __int64 v4; // rcx
  __int64 v5; // rdx
  int v6; // ebx
  __int64 v7; // rcx
  __int64 v8; // r14
  unsigned int Length; // eax
  unsigned int v10; // r15d
  char *v11; // r12
  unsigned int v12; // ebx
  __int64 BytePtr; // rax
  unsigned int v14; // eax
  volatile signed __int32 *v15; // rbx
  int v17; // [rsp+20h] [rbp-49h]
  __int64 v18; // [rsp+30h] [rbp-39h] BYREF
  char v19; // [rsp+38h] [rbp-31h]
  __int64 v20; // [rsp+40h] [rbp-29h] BYREF
  char v21; // [rsp+48h] [rbp-21h]
  __int64 v22; // [rsp+50h] [rbp-19h] BYREF
  char v23; // [rsp+58h] [rbp-11h]
  char v24; // [rsp+60h] [rbp-9h]
  void *Block; // [rsp+68h] [rbp-1h] BYREF
  __int64 v26; // [rsp+70h] [rbp+7h]
  __int64 v27; // [rsp+78h] [rbp+Fh]
  char v28; // [rsp+80h] [rbp+17h]
  __int64 v29; // [rsp+D0h] [rbp+67h] BYREF
  __int64 v30; // [rsp+D8h] [rbp+6Fh] BYREF

  v29 = a1;
  v24 = 0;
  v1 = 0i64;
  v26 = 0i64;
  v27 = 0i64;
  v28 = 0;
  Block = 0i64;
  m_scInfo = GetSCInfo(0i64, 0i64, &Block);
  LODWORD(v26) = m_scInfo;
  v3 = Block;
  if ( m_scInfo )
  {
    v4 = HIDWORD(v26);
  }
  else
  {
    v24 = 1;
    if ( Block )
    {
      v4 = *(unsigned int *)Block;
      HIDWORD(v26) = *(_DWORD *)Block;
    }
    else
    {
      v4 = (unsigned int)dword_14209565C;
      v3 = 0i64;
      HIDWORD(v26) = dword_14209565C;
    }
    v27 = 0i64;
    v28 = 0;
  }
  if ( !v24 )
    goto LABEL_47;
  v18 = 0i64;
  v19 = 0;
  v5 = 0i64;
  if ( *(_QWORD *)&qword_142070F80 )
    v5 = *(_QWORD *)(*(_QWORD *)&qword_142070F80 + 62716i64);
  v30 = 0i64;
  LODWORD(v29) = 0;
  v6 = sub_1400AEE70(v4, v5, 0i64, 9i64, &v30, &v29);
  if ( v6 )
  {
    v22 = 0i64;
    v23 = 0;
    SwapAndReset(&v18, &v22);
    v7 = v22;
  }
  else
  {
    if ( v30 && (_DWORD)v29 )
      v20 = CFDataCreate(qword_1420700D8, v30, (unsigned int)v29);
    else
      v20 = 0i64;
    v21 = 0;
    SwapAndReset(&v18, &v20);
    v7 = v20;
  }
  if ( v7 )
    CFRelease(v7);
  if ( v30 )
    sub_140022260(v30);
  v8 = v18;
  if ( !v6 )
  {
    if ( v18 && CFDataGetLength(v18) )
    {
      Length = CFDataGetLength(v8);
      if ( Length <= 0xBFFFFFFD )
        v10 = 4 * ((Length + 2) / 3);
      else
        v10 = -1;
      v11 = 0i64;
      if ( v10 )
      {
        v1 = (char *)sub_140252AF0(v10);
        v11 = &v1[v10];
        memset(v1, 0, v10);
      }
      v12 = CFDataGetLength(v8);
      BytePtr = CFDataGetBytePtr(v8);
      v14 = encodeutf8(BytePtr, v12, v1, v10);
      v15 = 0i64;
      if ( v1 )
      {
        if ( v14 )
          v15 = (volatile signed __int32 *)sub_140AE9D90(v1, v14);
        if ( (unsigned __int64)(v11 - v1) >= 0x1000 )
        {
          if ( (unsigned __int64)&v1[-*((_QWORD *)v1 - 1) - 8] > 0x1F )
            invalid_parameter_noinfo_noreturn();
          v1 = (char *)*((_QWORD *)v1 - 1);
        }
        j_j_free_1(v1);
        if ( v15 )
        {
          if ( *(_QWORD *)v15 )
          {
            LOBYTE(v17) = 0;
            v1 = (char *)CFStringCreateWithBytes(0i64, v15 + 3, *(_QWORD *)v15, 134217984i64, v17);
LABEL_42:
            if ( _InterlockedExchangeAdd(v15 + 2, 0xFFFFFFFF) == 1 )
            {
              *((_DWORD *)v15 + 2) = -1000000000;
              j_free_1((void *)v15);
            }
            v3 = Block;
            v8 = v18;
            goto LABEL_45;
          }
        }
      }
      v1 = 0i64;
    }
    else
    {
      v15 = 0i64;
    }
    if ( v15 )
      goto LABEL_42;
  }
LABEL_45:
  if ( v8 )
    CFRelease(v8);
LABEL_47:
  if ( v24 && !m_scInfo && v3 )
  {
    if ( v3[1] )
    {
      sub_140028FA0(*(unsigned int *)v3);
      if ( !v3[1] )
      {
        _InterlockedCompareExchange(&dword_14209565C, 0, dword_14209565C);
        v3 = Block;
      }
    }
    aligned_free(v3);
  }
  return v1;
}

__int64 __fastcall sub_140022260(__int64 a1)
{
  int v1; // edx
  unsigned int v2; // r10d
  char v3; // al
  __int16 v4; // ax
  __int64 v6; // [rsp+20h] [rbp-18h] BYREF
  unsigned int v7; // [rsp+28h] [rbp-10h]
  unsigned int v8; // [rsp+2Ch] [rbp-Ch]
  int v9; // [rsp+30h] [rbp-8h]

  v1 = *(_DWORD *)((char *)off_1419B8C68 - 735133071);
  v2 = 102057763 * ((unsigned int)&v6 ^ 0x185F6DFB);
  v8 = 5 - v2;
  v6 = a1;
  v9 = v1 + v2;
  v3 = (char)((v1 - ((v1 + ((unsigned __int8)((char)v1 >> 7) >> 4)) & 0x70) + 11) | 0x82) / 109;
  LOBYTE(v2) = v3 - 61;
  v4 = (char)(-110 * ((v3 - 110) ^ 0x19) + 22);
  ((void (__fastcall *)(__int64 *))((char *)*(&off_1419B8A20
                                            + (unsigned __int8)((v2 & ((((unsigned __int8)(((unsigned __int8)(((unsigned __int16)(109 * v4) >> 8) - v4) >> 7)
                                                                                         + ((char)(((unsigned __int16)(109 * v4) >> 8)
                                                                                                 - v4) >> 6)) | 0x3Cu) > 0xD1) | 0xC2))
                                                              + 49)
                                            - 153)
                                  - 509927050))(&v6);
  return v7;
}

__int64 __fastcall sub_140028FA0(int a1)
{
  __int16 v1; // dx
  __int64 v2; // r10
  unsigned int v3; // edx
  int v4; // eax
  int v6[4]; // [rsp+28h] [rbp-10h] BYREF

  v1 = (char)(107 * (((unsigned __int8)a1 >> 5) ^ 4) * (((unsigned __int8)a1 >> 5) ^ 4));
  LOBYTE(v1) = v1 - 71 * (((unsigned __int16)(29 * v1) >> 15) + ((char)((unsigned __int16)(29 * v1) >> 8) >> 3));
  LOBYTE(v1) = ((unsigned __int8)(v1 ^ (((_BYTE)v1 << 6) - 124)) / 0x2Du) | 0xA9;
  v2 = (__int64)*(&off_1419B8A20
                + ((((unsigned __int8)(((unsigned __int16)(91 * (char)((char)v1 % 30 + 44)) >> 15)
                                     + ((char)((unsigned __int16)(91 * (char)((char)v1 % 30 + 44)) >> 8) >> 5)
                                     - 30) >> 2)
                  % 0x27u) & (unsigned __int8)((char)v1 % 30 + 44))
                + 230);
  v3 = 511220603 * ((unsigned int)v6 ^ 0x36F6DC0B);
  v4 = v3 + *(_DWORD *)(v2 - 72276499);
  v6[3] = 6 - v3;
  v6[1] = v4;
  v6[0] = v3 + a1;
  LOWORD(v4) = (char)(-110
                    * (((char)((v3
                              - ((v3 + ((unsigned __int8)((char)(123 * ((unsigned __int8)v6 ^ 0xB)) >> 7) >> 4)) & 0x70)
                              + 11) | 0x82)
                      / 109
                      - 110) ^ 0x19)
                    + 22);
  ((void (__fastcall *)(int *))((char *)*(&off_1419B8A20
                                        + (unsigned __int8)((((char)((v3
                                                                    - ((v3
                                                                      + ((unsigned __int8)((char)(123
                                                                                                * ((unsigned __int8)v6 ^ 0xB)) >> 7) >> 4)) & 0x70)
                                                                    + 11) | 0x82)
                                                            / 109
                                                            - 61) & ((((unsigned __int8)(((unsigned __int8)(((unsigned __int16)(109 * v4) >> 8) - v4) >> 7)
                                                                                       + ((char)(((unsigned __int16)(109 * v4) >> 8)
                                                                                               - v4) >> 6)) | 0x3Cu) > 0xD1) | 0xC2))
                                                          + 49)
                                        - 165)
                              - 37283174))(v6);
  return (unsigned int)v6[2];
}

void __fastcall sub_1400AEE70(char a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6)
{
  int v7; // eax
  __int64 v8; // r8
  char v9[280]; // [rsp+90h] [rbp-118h] BYREF

  v7 = (unsigned __int8)(((((char)(-112
                                 * ((unsigned __int8)((char)(a1
                                                           - 108
                                                           * (((char)((unsigned __int16)(19 * a1) >> 8) >> 3)
                                                            + ((unsigned __int16)(19 * a1) >> 15))) >> 1) >> 4)
                                 - 64) >> 7) | 0x43)
                        / -32) >> 7);
  ((void (__fastcall *)(char *, _QWORD, __int64))((char *)*(&off_1419B8A20
                                                          + (unsigned int)(unsigned __int8)(((((unsigned __int8)((unsigned int)(175 * v7) >> 13)
                                                                                             + (_BYTE)v7) << 6) | 0x5A)
                                                                                          - 37)
                                                          + 98)
                                                - 586092799))(
    v9,
    0i64,
    128i64);
  while ( a5 != 0 && a6 != 0 )
    ;
  ++v9[v8];
  __asm { jmp     rbp }
}

_DWORD *__fastcall sub_140AE9D90(void *Src, size_t Size)
{
  _DWORD *result; // rax
  _DWORD *v5; // rbx

  result = operator new(Size + 16, (const struct std::nothrow_t *)&unk_141987F60);
  v5 = result;
  if ( result )
  {
    *(_QWORD *)result = Size;
    result[2] = 1;
    *((_BYTE *)result + Size + 12) = 0;
    memcpy(result + 3, Src, Size);
    return v5;
  }
  return result;
}
_QWORD *__fastcall sub_140252AF0(size_t a1)
{
  void *v1; // rax
  void *v2; // rcx
  _QWORD *result; // rax

  if ( a1 < 0x1000 )
  {
    if ( a1 )
      return operator new(a1);
    else
      return 0i64;
  }
  else
  {
    if ( a1 + 39 <= a1 )
      sub_140252AD0();
    v1 = operator new(a1 + 39);
    v2 = v1;
    if ( !v1 )
      invalid_parameter_noinfo_noreturn();
    result = (_QWORD *)(((unsigned __int64)v1 + 39) & 0xFFFFFFFFFFFFFFE0ui64);
    *(result - 1) = v2;
  }
  return result;
}
void __noreturn sub_140252AD0()
{
  char pExceptionObject[40]; // [rsp+20h] [rbp-28h] BYREF

  sub_1402529B0(pExceptionObject);
  CxxThrowException(pExceptionObject, (_ThrowInfo *)&_TI3_AVbad_array_new_length_std__);
}
_QWORD *__fastcall sub_1402529B0(_QWORD *a1)
{
  a1[2] = 0i64;
  a1[1] = "bad array new length";
  *a1 = &std::bad_array_new_length::`vftable';
  return a1;
}
__int64 __fastcall encodeutf8(unsigned __int8 *a1, unsigned int a2, __int64 a3, unsigned int a4)
{
  __int64 v5; // r8
  unsigned int v6; // r10d
  unsigned __int8 *v7; // rbx
  unsigned int v8; // edx
  __int64 v9; // r9
  __int64 v10; // rax
  unsigned __int64 v11; // rdx
  unsigned __int64 v12; // rdx
  __int64 v13; // r8
  __int64 v14; // r8
  __int64 v15; // r8
  unsigned int v16; // ecx
  unsigned __int64 v17; // rdx
  __int64 v18; // r8
  __int64 v19; // rax
  __int64 v20; // rcx
  char v22[80]; // [rsp+0h] [rbp-68h] BYREF

  v5 = 0i64;
  v6 = a2;
  strcpy(v22, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/");
  v7 = a1;
  if ( !a1 && a2 )
    return 0i64;
  if ( !a3 )
    return 0i64;
  v8 = a2 <= 0xBFFFFFFD ? 4 * ((a2 + 2) / 3) : -1;
  if ( a4 < v8 )
    return 0i64;
  if ( v6 >= 3 )
  {
    v9 = v6 / 3;
    do
    {
      v6 -= 3;
      v10 = v7[2];
      v11 = (v7[1] | ((unsigned __int64)*v7 << 8)) << 8;
      v7 += 3;
      v12 = v10 | v11;
      *(_BYTE *)(v5 + a3) = v22[v12 >> 18];
      v13 = (unsigned int)(v5 + 1);
      *(_BYTE *)(v13 + a3) = v22[(v12 >> 12) & 0x3F];
      v14 = (unsigned int)(v13 + 1);
      *(_BYTE *)(v14 + a3) = v22[(v12 >> 6) & 0x3F];
      v15 = (unsigned int)(v14 + 1);
      *(_BYTE *)(v15 + a3) = v22[v12 & 0x3F];
      v5 = (unsigned int)(v15 + 1);
      --v9;
    }
    while ( v9 );
  }
  if ( v6 )
  {
    v16 = *v7 << 16;
    if ( v6 == 2 )
      v16 |= v7[1] << 8;
    v17 = v16;
    *(_BYTE *)(v5 + a3) = v22[(unsigned __int64)v16 >> 18];
    v18 = (unsigned int)(v5 + 1);
    v19 = (v16 >> 12) & 0x3F;
    v20 = (unsigned int)(v18 + 1);
    *(_BYTE *)(v18 + a3) = v22[v19];
    v5 = (unsigned int)(v18 + 2);
    if ( v6 == 2 )
    {
      *(_BYTE *)(v20 + a3) = v22[(v17 >> 6) & 0x3F];
      *(_BYTE *)(v5 + a3) = 61;
      return (unsigned int)(v5 + 1);
    }
    *(_BYTE *)(v20 + a3) = 61;
    *(_BYTE *)(v5 + a3) = 61;
    LODWORD(v5) = v5 + 1;
  }
  return (unsigned int)v5;
}
__int64 __fastcall GetSCInfo(__int64 a1, char a2, _QWORD *a3)
{
  unsigned int v5; // ebx
  __int64 (__fastcall *v6)(__int64 *, __int16 *, int *, _QWORD); // rax
  unsigned int v7; // eax
  __int64 (__fastcall *v8)(__int64 *, __int16 *, _QWORD, _QWORD, int *); // rax
  __int64 v9; // rdx
  __int64 (__fastcall *v10)(int *, __int64); // r8
  void *v11; // rbp
  char v13[16]; // [rsp+30h] [rbp-678h] BYREF
  __int64 v14[68]; // [rsp+40h] [rbp-668h] BYREF
  int v15[4]; // [rsp+260h] [rbp-448h] BYREF
  __int64 v16; // [rsp+270h] [rbp-438h]
  __int16 v17[256]; // [rsp+480h] [rbp-228h] BYREF

  if ( !a1 && a3 )
  {
    memset(v14, 0, sizeof(v14));
    v13[0] = 0;
    v5 = LoadSCInfo(v14);
    if ( v5 )
    {
      v13[0] = 1;
      *a3 = 0i64;
      goto LABEL_32;
    }
    v17[0] = 0;
    readBytes("SC Info.sidb", 12);
    if ( v14[2] && (LODWORD(v14[0]) == 1095123792 || LODWORD(v14[0]) == 1466527312) )
    {
      v6 = *(__int64 (__fastcall **)(__int64 *, __int16 *, int *, _QWORD))(v14[2] + 56);
      if ( v6 )
      {
        v7 = v6(v14, v17, v15, 0i64);
        v5 = v7;
        if ( !v7 )
        {
          v11 = (void *)allocateAlignedMemory(0i64);
          if ( !v11 )
            goto LABEL_24;
LABEL_28:
          v5 = sub_140724060(v14, v11);
          if ( !v5 )
          {
            *a3 = v11;
            return v5;
          }
          aligned_free(v11);
LABEL_31:
          *a3 = 0i64;
          if ( v5 == -5000 )
          {
LABEL_32:
            if ( a2 )
            {
              sub_140726830(sub_140723AA0, v13);
              return (unsigned int)-128;
            }
          }
          return v5;
        }
        v15[0] = 0;
        if ( v7 != -43 )
          goto LABEL_31;
        if ( v14[2] && (LODWORD(v14[0]) == 1095123792 || LODWORD(v14[0]) == 1466527312) )
        {
          if ( !v17[0] )
          {
            v5 = -50;
            goto LABEL_31;
          }
          v8 = *(__int64 (__fastcall **)(__int64 *, __int16 *, _QWORD, _QWORD, int *))(v14[2] + 112);
          if ( !v8 )
          {
LABEL_16:
            v5 = -4;
LABEL_35:
            *a3 = 0i64;
            return v5;
          }
          v5 = v8(v14, v17, 0i64, 0i64, v15);
          if ( v5 )
            goto LABEL_31;
          if ( v16 && (v15[0] == 1095123792 || v15[0] == 1466527312) )
          {
            v10 = *(__int64 (__fastcall **)(int *, __int64))(v16 + 88);
            if ( !v10 )
              goto LABEL_16;
            LOBYTE(v9) = 1;
            v5 = v10(v15, v9);
            if ( v5 )
              goto LABEL_31;
            v11 = (void *)allocateAlignedMemory(0i64);
            if ( !v11 )
            {
LABEL_24:
              v5 = -108;
              goto LABEL_35;
            }
            a2 = 1;
            goto LABEL_28;
          }
        }
      }
    }
    v5 = -50;
    goto LABEL_35;
  }
  return 4294967246i64;
}
__int64 __fastcall LoadSCInfo(__int64 a1)
{
  DWORD v3; // eax
  unsigned int v4; // ebx
  DWORD LastError; // eax
  __int64 v6; // rcx
  char *v7; // rcx
  __int64 v8; // rdx
  signed __int64 v9; // r8
  int v10; // [rsp+30h] [rbp-648h] BYREF
  __int16 v11; // [rsp+34h] [rbp-644h]
  int v12; // [rsp+38h] [rbp-640h]
  __int64 v13; // [rsp+40h] [rbp-638h]
  char v14[520]; // [rsp+48h] [rbp-630h] BYREF
  WCHAR PathName[264]; // [rsp+250h] [rbp-428h] BYREF
  __int16 v16[256]; // [rsp+460h] [rbp-218h] BYREF

  if ( !a1 )
    return 4294967246i64;
  v3 = SHGetFolderPathW(0i64, 32803, 0i64, 0, PathName);
  if ( v3 == -2147467259 )
  {
    v4 = -120;
  }
  else
  {
    v4 = sub_140ADE7B0(v3);
    if ( !v4 )
    {
      PathAppendW(PathName, L"Apple Computer");
      if ( !CreateDirectoryW(PathName, 0i64) )
      {
        LastError = GetLastError();
        if ( LastError != 183 )
          goto LABEL_20;
      }
      PathAppendW(PathName, &WideCharStr);
      LODWORD(v6) = 0;
      if ( !PathName[0] )
        goto LABEL_16;
      do
        v6 = (unsigned int)(v6 + 1);
      while ( PathName[v6] );
      if ( (unsigned int)(v6 - 1) <= 0x102 )
      {
        v7 = v14;
        v8 = 0i64;
        v9 = (char *)PathName - v14;
        do
        {
          if ( (_DWORD)v8 == 259 )
            break;
          v8 = (unsigned int)(v8 + 1);
          *(_WORD *)v7 = *(_WORD *)&v7[v9];
          v7 += 2;
        }
        while ( *(_WORD *)&v7[v9] );
        *(_WORD *)v7 = 0;
        v10 = 1466527312;
        v11 = 0;
        v12 = 0;
        v13 = sub_140AFF6E0(v7, v8);
        v4 = 0;
      }
      else
      {
LABEL_16:
        v4 = -50;
      }
      if ( CreateDirectoryW(PathName, 0i64) )
        goto LABEL_21;
      LastError = GetLastError();
      if ( LastError == 183 )
        v4 = 0;
      else
LABEL_20:
        v4 = sub_140ADE7B0(LastError);
    }
  }
LABEL_21:
  if ( !v4 )
  {
    v16[0] = 0;
    readBytes("SC Info", 7i64, v16);
    return (unsigned int)sub_140723720(&v10, v16, a1);
  }
  return v4;
}
__int64 __fastcall readBytes(LPCCH lpMultiByteStr, __int64 cbMultiByte, _WORD *a3)
{
  unsigned int v4; // ebx
  __int64 result; // rax
  int v6; // esi
  DWORD LastError; // eax

  if ( !a3 )
    return 4294967246i64;
  v4 = 0;
  *a3 = 0;
  if ( !cbMultiByte )
    return 0i64;
  if ( !lpMultiByteStr )
    return 4294967246i64;
  if ( a3 == (_WORD *)-2i64 )
  {
    result = 4294967246i64;
    LOWORD(MEMORY[0xFFFFFFFFFFFFFFFE]) = 0;
  }
  else
  {
    v6 = MultiByteToWideChar(0xFDE9u, 0, lpMultiByteStr, cbMultiByte, a3 + 1, 255);
    if ( !v6 )
    {
      LastError = GetLastError();
      v4 = sub_140ADE7B0(LastError);
    }
    result = v4;
    *a3 = v6;
  }
  return result;
}
__int64 __fastcall sub_140ADE7B0(DWORD dwMessageId)
{
  __int64 result; // rax
  unsigned int *i; // rcx
  WCHAR Buffer[512]; // [rsp+40h] [rbp-418h] BYREF

  result = 0i64;
  if ( dwMessageId )
  {
    for ( i = dword_141A21420; *i != dwMessageId; i += 2 )
    {
      result = (unsigned int)(result + 1);
      if ( (unsigned int)result >= 0xA4 )
      {
        FormatMessageW(0x1000u, 0i64, dwMessageId, 0, Buffer, 0x1FEu, 0i64);
        return 4294967246i64;
      }
    }
    return dword_141A21420[2 * result + 1];
  }
  return result;
}

__int64 __fastcall sub_140724060(__int64 a1, unsigned __int32 *a2)
{
  __int64 result; // rax
  unsigned __int32 v4; // [rsp+38h] [rbp+10h] BYREF

  *a2 = 0;
  if ( dword_14209565C )
    *a2 = dword_14209565C;
  if ( *a2 )
    return 0i64;
  result = sub_140723CE0(a1, &v4);
  if ( !(_DWORD)result )
  {
    if ( _InterlockedCompareExchange(&dword_14209565C, v4, 0) )
    {
      sub_140028FA0(v4);
      *a2 = dword_14209565C;
      return 0i64;
    }
    else
    {
      *a2 = v4;
      return 0i64;
    }
  }
  return result;
}
__int64 __fastcall sub_140723CE0(__int64 a1, unsigned int *a2)
{
  __int64 v5; // rax
  __int64 (__fastcall *v6)(__int64, __int64 *, __int64); // r9
  unsigned int v7; // ebx
  __int64 fPending; // [rsp+20h] [rbp-858h] BYREF
  int *v9; // [rsp+28h] [rbp-850h]
  __int64 v10; // [rsp+30h] [rbp-848h]
  int *v11; // [rsp+38h] [rbp-840h]
  __int64 v12; // [rsp+40h] [rbp-838h]
  __int64 v13; // [rsp+48h] [rbp-830h]
  __int64 v14[2]; // [rsp+50h] [rbp-828h] BYREF
  int v15; // [rsp+60h] [rbp-818h]
  int v16; // [rsp+68h] [rbp-810h]
  int v17; // [rsp+70h] [rbp-808h]
  int v18; // [rsp+78h] [rbp-800h]
  char v19; // [rsp+80h] [rbp-7F8h]
  char v20; // [rsp+88h] [rbp-7F0h]
  int v21; // [rsp+90h] [rbp-7E8h]
  int v22; // [rsp+98h] [rbp-7E0h]
  int v23; // [rsp+A0h] [rbp-7D8h]
  int v24; // [rsp+A8h] [rbp-7D0h]
  int v25; // [rsp+B0h] [rbp-7C8h]
  int v26; // [rsp+B8h] [rbp-7C0h]
  int v27; // [rsp+C0h] [rbp-7B8h]
  int v28; // [rsp+C8h] [rbp-7B0h]
  int v29; // [rsp+D0h] [rbp-7A8h]
  int v30; // [rsp+D8h] [rbp-7A0h]
  int v31; // [rsp+E0h] [rbp-798h]
  int v32; // [rsp+E8h] [rbp-790h]
  int v33; // [rsp+F0h] [rbp-788h]
  int v34; // [rsp+F8h] [rbp-780h]
  int v35; // [rsp+100h] [rbp-778h]
  __int64 v36; // [rsp+108h] [rbp-770h]
  int v37; // [rsp+110h] [rbp-768h]
  __int64 v38; // [rsp+118h] [rbp-760h]
  __int64 v39; // [rsp+120h] [rbp-758h]

  if ( !a2 )
    return 4294967246i64;
  if ( !InitOnceBeginInitialize(&stru_1420CD398, 0, (PBOOL)&fPending, 0i64)
    || (_DWORD)fPending
    && (v9 = (int *)&stru_1420CD398, LODWORD(v10) = 4, sub_140818BB0(), !InitOnceComplete(&stru_1420CD398, 0, 0i64)) )
  {
    abort();
  }
  v9 = &dword_1420CEA30;
  LOBYTE(v10) = 0;
  if ( !InitOnceBeginInitialize(&stru_1420CD3A8, 0, (PBOOL)&fPending, 0i64)
    || (_DWORD)fPending
    && (v11 = (int *)&stru_1420CD3A8, LODWORD(v12) = 4, sub_140818FE0(), !InitOnceComplete(&stru_1420CD3A8, 0, 0i64)) )
  {
    abort();
  }
  v11 = &dword_1420CEA48;
  LOBYTE(v12) = 0;
  if ( a1 && (v5 = *(_QWORD *)(a1 + 16)) != 0 && (*(_DWORD *)a1 == 1095123792 || *(_DWORD *)a1 == 1466527312) )
  {
    v6 = *(__int64 (__fastcall **)(__int64, __int64 *, __int64))(v5 + 32);
    if ( v6 )
    {
      v7 = v6(a1, v14, 2048i64);
      if ( !v7 )
      {
        v7 = ((__int64 (__fastcall *)(unsigned int, unsigned int, unsigned int, _DWORD, __int64, __int64, __int64, __int64, __int64, __int64, __int64, __int64, int, int, int, int, char, char, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, __int64, int, __int64, __int64))sub_14001DB60)(
               (unsigned int)&dword_1420CEA30,
               (unsigned int)&dword_1420CEA48,
               (unsigned int)v14,
               (_DWORD)a2,
               fPending,
               (__int64)v9,
               v10,
               (__int64)v11,
               v12,
               v13,
               v14[0],
               v14[1],
               v15,
               v16,
               v17,
               v18,
               v19,
               v20,
               v21,
               v22,
               v23,
               v24,
               v25,
               v26,
               v27,
               v28,
               v29,
               v30,
               v31,
               v32,
               v33,
               v34,
               v35,
               v36,
               v37,
               v38,
               v39);
        if ( v7 == -42153 )
          sub_140028FA0(*a2);
      }
    }
    else
    {
      return (unsigned int)-4;
    }
  }
  else
  {
    return (unsigned int)-50;
  }
  return v7;
}

__int64 __fastcall sub_140028FA0(int a1)
{
  __int16 v1; // dx
  __int64 v2; // r10
  unsigned int v3; // edx
  int v4; // eax
  int v6[4]; // [rsp+28h] [rbp-10h] BYREF

  v1 = (char)(107 * (((unsigned __int8)a1 >> 5) ^ 4) * (((unsigned __int8)a1 >> 5) ^ 4));
  LOBYTE(v1) = v1 - 71 * (((unsigned __int16)(29 * v1) >> 15) + ((char)((unsigned __int16)(29 * v1) >> 8) >> 3));
  LOBYTE(v1) = ((unsigned __int8)(v1 ^ (((_BYTE)v1 << 6) - 124)) / 0x2Du) | 0xA9;
  v2 = (__int64)*(&off_1419B8A20
                + ((((unsigned __int8)(((unsigned __int16)(91 * (char)((char)v1 % 30 + 44)) >> 15)
                                     + ((char)((unsigned __int16)(91 * (char)((char)v1 % 30 + 44)) >> 8) >> 5)
                                     - 30) >> 2)
                  % 0x27u) & (unsigned __int8)((char)v1 % 30 + 44))
                + 230);
  v3 = 511220603 * ((unsigned int)v6 ^ 0x36F6DC0B);
  v4 = v3 + *(_DWORD *)(v2 - 72276499);
  v6[3] = 6 - v3;
  v6[1] = v4;
  v6[0] = v3 + a1;
  LOWORD(v4) = (char)(-110
                    * (((char)((v3
                              - ((v3 + ((unsigned __int8)((char)(123 * ((unsigned __int8)v6 ^ 0xB)) >> 7) >> 4)) & 0x70)
                              + 11) | 0x82)
                      / 109
                      - 110) ^ 0x19)
                    + 22);
  ((void (__fastcall *)(int *))((char *)*(&off_1419B8A20
                                        + (unsigned __int8)((((char)((v3
                                                                    - ((v3
                                                                      + ((unsigned __int8)((char)(123
                                                                                                * ((unsigned __int8)v6 ^ 0xB)) >> 7) >> 4)) & 0x70)
                                                                    + 11) | 0x82)
                                                            / 109
                                                            - 61) & ((((unsigned __int8)(((unsigned __int8)(((unsigned __int16)(109 * v4) >> 8) - v4) >> 7)
                                                                                       + ((char)(((unsigned __int16)(109 * v4) >> 8)
                                                                                               - v4) >> 6)) | 0x3Cu) > 0xD1) | 0xC2))
                                                          + 49)
                                        - 165)
                              - 37283174))(v6);
  return (unsigned int)v6[2];
}
__int64 __fastcall sub_140726830(__int64 a1, char *a2)
{
  unsigned __int8 v2; // si
  volatile signed __int32 *v3; // rbx
  __int64 *v4; // rdx
  __int64 v6[2]; // [rsp+20h] [rbp-88h] BYREF
  char v7; // [rsp+30h] [rbp-78h]
  __int64 *v8; // [rsp+58h] [rbp-50h]
  __int64 v9; // [rsp+60h] [rbp-48h]
  __int64 v10; // [rsp+68h] [rbp-40h]
  __int16 v11; // [rsp+70h] [rbp-38h]
  char v12; // [rsp+72h] [rbp-36h]
  __int64 v13; // [rsp+78h] [rbp-30h]
  __int128 v14; // [rsp+80h] [rbp-28h]

  v6[0] = (__int64)&std::_Func_impl_no_alloc<std::_Binder<std::_Unforced,void (&)(unsigned char),unsigned char &>,void,>::`vftable';
  v6[1] = a1;
  v7 = *a2;
  v8 = v6;
  v9 = 0i64;
  v10 = 0i64;
  v11 = 0;
  v12 = 0;
  v13 = 0i64;
  v14 = 0i64;
  v2 = sub_140AF4DA0(v6);
  v3 = (volatile signed __int32 *)*((_QWORD *)&v14 + 1);
  if ( *((_QWORD *)&v14 + 1) )
  {
    if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*((_QWORD *)&v14 + 1) + 8i64), 0xFFFFFFFF) == 1 )
    {
      (**(void (__fastcall ***)(volatile signed __int32 *))v3)(v3);
      if ( _InterlockedExchangeAdd(v3 + 3, 0xFFFFFFFF) == 1 )
        (*(void (__fastcall **)(volatile signed __int32 *))(*(_QWORD *)v3 + 8i64))(v3);
    }
  }
  if ( v8 )
  {
    v4 = v6;
    LOBYTE(v4) = v8 != v6;
    (*(void (__fastcall **)(__int64 *, __int64 *))(*v8 + 32))(v8, v4);
  }
  return v2;
}
char __fastcall sub_140AF4DA0(__int64 a1)
{
  _QWORD *v3; // rax
  __int64 v4; // rbp
  __int64 (__fastcall ***v5)(_QWORD, void *); // rcx
  double v6; // xmm1_8
  __int64 v7; // rax
  __int64 v8; // rax
  __int64 v9; // rbx
  DWORD CurrentThreadId; // esi
  int v11; // eax
  __int64 v12; // rdi
  __int64 v13; // rsi
  __int64 i; // r14
  __int64 v15; // rdi
  __int64 *v16; // rsi
  unsigned __int64 v17; // rdi
  __int64 *v18; // rdx
  __int64 v19; // rax
  __int64 *v20; // r9
  bool v21; // zf
  char v22; // al
  char v23; // bl
  __int64 v24; // [rsp+50h] [rbp+8h]
  void *Block; // [rsp+58h] [rbp+10h]
  LARGE_INTEGER PerformanceCount; // [rsp+60h] [rbp+18h] BYREF
  __int64 v27; // [rsp+68h] [rbp+20h] BYREF

  if ( !*(_QWORD *)(a1 + 56) )
    return 0;
  v3 = operator new(0x78ui64, (const struct std::nothrow_t *)&unk_141987F60);
  v4 = (__int64)v3;
  if ( v3 )
  {
    v3[7] = 0i64;
    v5 = *(__int64 (__fastcall ****)(_QWORD, void *))(a1 + 56);
    if ( v5 )
      v3[7] = (**v5)(v5, v3);
    *(_DWORD *)(v4 + 64) = *(_DWORD *)(a1 + 64);
    *(_DWORD *)(v4 + 68) = *(_DWORD *)(a1 + 68);
    v6 = 0.0;
    if ( *(double *)(a1 + 72) != 0.0 )
    {
      QueryPerformanceCounter(&PerformanceCount);
      v6 = (double)(int)PerformanceCount.LowPart * *(double *)&qword_14209E638 + *(double *)(a1 + 72);
    }
    *(double *)(v4 + 72) = v6;
    *(_BYTE *)(v4 + 80) = *(_BYTE *)(a1 + 80);
    *(_BYTE *)(v4 + 81) = *(_BYTE *)(a1 + 81);
    *(_BYTE *)(v4 + 82) = *(_BYTE *)(a1 + 82);
    *(_QWORD *)(v4 + 88) = *(_QWORD *)(a1 + 88);
    *(_BYTE *)(v4 + 96) = *(_QWORD *)(a1 + 96) != 0i64;
    *(_QWORD *)(v4 + 104) = 0i64;
    *(_QWORD *)(v4 + 112) = 0i64;
    if ( *(_QWORD *)(a1 + 104) )
    {
      *(_QWORD *)(v4 + 104) = *(_QWORD *)(a1 + 96);
      v7 = *(_QWORD *)(a1 + 104);
      *(_QWORD *)(v4 + 112) = v7;
      _InterlockedIncrement((volatile signed __int32 *)(v7 + 12));
    }
  }
  else
  {
    v4 = 0i64;
  }
  Block = (void *)v4;
  if ( v4 )
  {
    v8 = sub_140AF4C90();
    v9 = v8 + 32;
    v24 = v8 + 32;
    if ( v8 != -32 && *(_DWORD *)v9 == 1819239275 )
    {
      CurrentThreadId = GetCurrentThreadId();
      EnterCriticalSection((LPCRITICAL_SECTION)(v9 + 16));
      v11 = *(_DWORD *)(v9 + 8);
      if ( !v11 )
      {
        *(_DWORD *)(v9 + 4) = CurrentThreadId;
        v11 = *(_DWORD *)(v9 + 8);
      }
      *(_DWORD *)(v9 + 8) = v11 + 1;
    }
    if ( !*(_BYTE *)(sub_140AF4C90() + 24) )
    {
      v12 = *(_QWORD *)(a1 + 88);
      if ( !v12 )
        goto LABEL_23;
      v13 = *(_QWORD *)(sub_140AF4C90() + 8);
      for ( i = *(_QWORD *)sub_140AF4C90(); i != v13; i += 8i64 )
      {
        if ( v12 == *(_QWORD *)(*(_QWORD *)i + 88i64) )
          break;
      }
      if ( i == *(_QWORD *)(sub_140AF4C90() + 8) )
      {
LABEL_23:
        v15 = *(_QWORD *)(sub_140AF4C90() + 8);
        v16 = *(__int64 **)sub_140AF4C90();
        v17 = (v15 - (__int64)v16) >> 3;
        while ( (__int64)v17 > 0 )
        {
          v18 = &v16[v17 >> 1];
          if ( *(_DWORD *)(v4 + 64) <= *(_DWORD *)(*v18 + 64) )
          {
            v16 = v18 + 1;
            v17 += -1i64 - (v17 >> 1);
          }
          else
          {
            v17 >>= 1;
          }
        }
        v19 = sub_140AF4C90();
        Block = 0i64;
        v27 = v4;
        v20 = *(__int64 **)(v19 + 8);
        if ( v20 == *(__int64 **)(v19 + 16) )
        {
          sub_1402C5C50(v19, v16, &v27);
        }
        else if ( v16 == v20 )
        {
          *v20 = v4;
          *(_QWORD *)(v19 + 8) += 8i64;
        }
        else
        {
          *v20 = *(v20 - 1);
          *(_QWORD *)(v19 + 8) += 8i64;
          memmove(v16 + 1, v16, (char *)(v20 - 1) - (char *)v16);
          *v16 = v4;
        }
        if ( v9 && *(_DWORD *)v9 == 1819239275 && *(_DWORD *)(v9 + 4) == GetCurrentThreadId() )
        {
          v21 = (*(_DWORD *)(v24 + 8))-- == 1;
          if ( v21 )
            *(_DWORD *)(v9 + 4) = -1;
          LeaveCriticalSection((LPCRITICAL_SECTION)(v24 + 16));
        }
        v22 = byte_14209E2CE;
        byte_14209E2CE = 1;
        if ( !v22 && hWnd )
          PostMessageW((HWND)hWnd, 0x9017u, 0i64, 0i64);
        v23 = 1;
        goto LABEL_50;
      }
    }
    if ( v9 && *(_DWORD *)v9 == 1819239275 && *(_DWORD *)(v9 + 4) == GetCurrentThreadId() )
    {
      v21 = (*(_DWORD *)(v24 + 8))-- == 1;
      if ( v21 )
        *(_DWORD *)(v9 + 4) = -1;
      LeaveCriticalSection((LPCRITICAL_SECTION)(v24 + 16));
    }
  }
  v23 = 0;
LABEL_50:
  if ( Block )
    sub_140AF4C30(Block);
  return v23;
}
// attributes: thunk
__int64 __fastcall sub_140723AA0()
{
  return sub_140723890();
}
void sub_140723890()
{
  __int64 v0; // rax
  __int64 v1; // rax
  __int64 v2; // rax
  char *v3; // rdx
  _DWORD *v4; // rcx
  _DWORD *v5; // rcx
  _DWORD *v6; // rcx
  _DWORD *v7; // rcx
  _DWORD *v8; // rcx
  _DWORD *v9; // rcx
  _DWORD *v10; // rcx
  _DWORD *v11; // rax
  void *Block; // [rsp+30h] [rbp-69h] BYREF
  void *v13; // [rsp+38h] [rbp-61h]
  void *v14[2]; // [rsp+40h] [rbp-59h] BYREF
  void *v15; // [rsp+50h] [rbp-49h] BYREF
  void *v16; // [rsp+58h] [rbp-41h]
  void *v17; // [rsp+60h] [rbp-39h] BYREF
  void *v18; // [rsp+68h] [rbp-31h]
  char v19[56]; // [rsp+70h] [rbp-29h] BYREF
  char *v20; // [rsp+A8h] [rbp+Fh]
  char v21[56]; // [rsp+B0h] [rbp+17h] BYREF
  __int64 v22; // [rsp+E8h] [rbp+4Fh]

  v0 = sub_140B09C00(458752023i64);
  sub_140AE2540(&v17, v0);
  v1 = sub_140B09C00(458752024i64);
  sub_140AE2540(&v15, v1);
  v20 = 0i64;
  *(_OWORD *)v14 = 0i64;
  v2 = sub_140B09C00(1572012035i64);
  sub_140AE2540(&Block, v2);
  v22 = 0i64;
  if ( v20 )
    v22 = (**(__int64 (__fastcall ***)(char *, char *))v20)(v20, v21);
  sub_140B75280((unsigned int)&v17, (unsigned int)&v15, (unsigned int)&Block, (unsigned int)v14, 0i64, (__int64)v21);
  if ( v20 )
  {
    v3 = v19;
    LOBYTE(v3) = v20 != v19;
    (*(void (__fastcall **)(char *, char *))(*(_QWORD *)v20 + 32i64))(v20, v3);
    v20 = 0i64;
  }
  v4 = Block;
  if ( Block && _InterlockedExchangeAdd((volatile signed __int32 *)Block + 2, 0xFFFFFFFF) == 1 )
  {
    v4[2] = -1000000000;
    j_free_1(Block);
  }
  v5 = v13;
  if ( v13 && _InterlockedExchangeAdd((volatile signed __int32 *)v13 + 2, 0xFFFFFFFF) == 1 )
  {
    v5[2] = -1000000000;
    j_free_1(v13);
  }
  v6 = v14[0];
  if ( v14[0] && _InterlockedExchangeAdd((volatile signed __int32 *)v14[0] + 2, 0xFFFFFFFF) == 1 )
  {
    v6[2] = -1000000000;
    j_free_1(v14[0]);
  }
  v7 = v14[1];
  if ( v14[1] && _InterlockedExchangeAdd((volatile signed __int32 *)v14[1] + 2, 0xFFFFFFFF) == 1 )
  {
    v7[2] = -1000000000;
    j_free_1(v14[1]);
  }
  v8 = v15;
  if ( v15 && _InterlockedExchangeAdd((volatile signed __int32 *)v15 + 2, 0xFFFFFFFF) == 1 )
  {
    v8[2] = -1000000000;
    j_free_1(v15);
  }
  v9 = v16;
  if ( v16 && _InterlockedExchangeAdd((volatile signed __int32 *)v16 + 2, 0xFFFFFFFF) == 1 )
  {
    v9[2] = -1000000000;
    j_free_1(v16);
  }
  v10 = v17;
  if ( v17 && _InterlockedExchangeAdd((volatile signed __int32 *)v17 + 2, 0xFFFFFFFF) == 1 )
  {
    v10[2] = -1000000000;
    j_free_1(v17);
  }
  v11 = v18;
  if ( v18 )
  {
    if ( _InterlockedExchangeAdd((volatile signed __int32 *)v18 + 2, 0xFFFFFFFF) == 1 )
    {
      v11[2] = -1000000000;
      j_free_1(v18);
    }
  }
}

from ipatool.

pjpjq avatar pjpjq commented on June 5, 2024 1

did you manage to download old version ipa? or do you know any other way to download them?

from ipatool.

e-ave avatar e-ave commented on June 5, 2024

did you manage to download old version ipa? or do you know any other way to download them?

Yes, you can follow the directions listed here https://github.com/NyaMisty/ipatool-py#download-old-version

from ipatool.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.