
int sqlite3VdbeMemTranslate(Mem *pMem,u8 desiredEnc)

{
  char cVar1;
  ushort uVar2;
  undefined *puVar3;
  uint uVar4;
  byte *pbVar5;
  int iVar6;
  char *pcVar7;
  byte bVar8;
  byte *pbVar9;
  uint uVar10;
  byte *pbVar11;
  undefined3 in_register_00000014;
  char *pcVar12;
  byte bVar13;
  int iVar14;
  byte *pbVar15;
  byte *pbVar16;
  byte *pbVar17;
  
  iVar6 = CONCAT31(in_register_00000014,desiredEnc);
  if (pMem->enc == '\x01') {
    uVar4 = pMem->n;
    if (iVar6 != 1) {
      iVar14 = (uVar4 + 1) * 2;
      goto LAB_0007ff34;
    }
  }
  else {
    if (iVar6 != 1) {
      iVar6 = sqlite3VdbeMemMakeWriteable(pMem);
      if (iVar6 != 0) {
        return 7;
      }
      pcVar7 = pMem->z;
      pcVar12 = pcVar7 + (pMem->n & 0xfffffffe);
      for (; pcVar7 < pcVar12; pcVar7 = pcVar7 + 2) {
        cVar1 = *pcVar7;
        *pcVar7 = pcVar7[1];
        pcVar7[1] = cVar1;
      }
      pMem->enc = desiredEnc;
      return 0;
    }
    uVar4 = pMem->n;
  }
  uVar4 = uVar4 & 0xfffffffe;
  pMem->n = uVar4;
  iVar14 = uVar4 * 2 + 1;
LAB_0007ff34:
  pbVar16 = (byte *)pMem->z;
  pbVar5 = (byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))(pMem->db,iVar6,iVar14 >> 0x1f);
  puVar3 = PTR_DAT_00190b94;
  pbVar17 = pbVar16 + uVar4;
  if (pbVar5 == (byte *)0x0) {
    return 7;
  }
  if (pMem->enc == '\x01') {
    pbVar15 = pbVar5;
    if (iVar6 == 2) {
      iVar6 = 0;
      pbVar9 = pbVar5;
      if (pbVar17 > pbVar16) {
        do {
          bVar8 = *pbVar16;
          pbVar11 = pbVar16 + 1;
          if (bVar8 < 0xc0) {
            bVar13 = 0;
            goto LAB_0008030c;
          }
          bVar8 = puVar3[bVar8 - 0x3f94];
          if (pbVar17 == pbVar11) {
LAB_00080558:
            bVar13 = 0xff;
            if (bVar8 < 0x80) {
              bVar8 = 0xfd;
            }
            else {
              bVar13 = 0;
            }
LAB_0008030c:
            *pbVar9 = bVar8;
            pbVar15 = pbVar9 + 2;
            pbVar9[1] = bVar13;
          }
          else {
            uVar4 = (uint)pbVar16[1];
            iVar6 = (uint)bVar8 << 6;
            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;
            while( true ) {
              pbVar11 = pbVar11 + 1;
              uVar10 = (uVar4 & 0x3f) + iVar6;
              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))
              break;
              iVar6 = uVar10 * 0x40;
            }
            if ((uVar10 < 0x80) ||
               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {
              bVar13 = 0xff;
              bVar8 = 0xfd;
              goto LAB_0008030c;
            }
            bVar8 = (byte)uVar10;
            bVar13 = (byte)(uVar10 >> 8);
            if (uVar10 < 0x10000) goto LAB_0008030c;
            pbVar9[2] = bVar8;
            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;
            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;
            pbVar15 = pbVar9 + 4;
            pbVar9[3] = (bVar13 & 3) - 0x24;
          }
          iVar6 = (int)pbVar15 - (int)pbVar5;
          pbVar9 = pbVar15;
          pbVar16 = pbVar11;
        } while (pbVar11 < pbVar17);
      }
    }
    else {
      pbVar9 = pbVar5;
      if (pbVar17 <= pbVar16) {
        iVar6 = 0;
      }
      else {
        do {
          while( true ) {
            bVar8 = *pbVar16;
            pbVar11 = pbVar16 + 1;
            if (bVar8 < 0xc0) {
              bVar13 = 0;
              goto LAB_000801d8;
            }
            bVar8 = puVar3[bVar8 - 0x3f94];
            if (pbVar17 != pbVar11) break;
LAB_00080538:
            bVar13 = 0xff;
            if (bVar8 < 0x80) {
              bVar8 = 0xfd;
            }
            else {
              bVar13 = 0;
            }
LAB_000801d8:
            *pbVar9 = bVar13;
            pbVar9[1] = bVar8;
            pbVar15 = pbVar9 + 2;
            pbVar9 = pbVar15;
            pbVar16 = pbVar11;
            if (pbVar17 <= pbVar11) goto LAB_000802c0;
          }
          uVar4 = (uint)pbVar16[1];
          iVar6 = (uint)bVar8 << 6;
          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;
          while( true ) {
            pbVar11 = pbVar11 + 1;
            uVar10 = (uVar4 & 0x3f) + iVar6;
            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))
            break;
            iVar6 = uVar10 * 0x40;
          }
          if ((uVar10 < 0x80) ||
             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {
            bVar8 = 0xfd;
            bVar13 = 0xff;
            goto LAB_000801d8;
          }
          bVar13 = (byte)(uVar10 >> 8);
          bVar8 = (byte)uVar10;
          if (uVar10 < 0x10000) goto LAB_000801d8;
          pbVar9[3] = bVar8;
          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;
          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;
          pbVar15 = pbVar9 + 4;
          pbVar9[2] = (bVar13 & 3) - 0x24;
          pbVar9 = pbVar15;
          pbVar16 = pbVar11;
        } while (pbVar11 < pbVar17);
LAB_000802c0:
        iVar6 = (int)pbVar15 - (int)pbVar5;
      }
    }
    pMem->n = iVar6;
    pbVar9 = pbVar15 + 1;
    *pbVar15 = 0;
  }
  else {
    pbVar9 = pbVar5;
    if (pMem->enc == '\x02') {
      pbVar15 = pbVar5;
      if (pbVar17 <= pbVar16) {
        iVar6 = 0;
      }
      else {
        do {
          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;
          pbVar11 = pbVar16 + 2;
          bVar8 = (byte)uVar4;
          if (uVar4 - 0xd800 < 0x800) {
            if (pbVar11 < pbVar17) {
              iVar6 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +
                      (uVar4 * 0x400 & 0xffff);
              pbVar9 = pbVar15 + 4;
              uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;
              pbVar11 = pbVar16 + 4;
              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;
              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;
              pbVar15[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;
              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;
            }
            else {
LAB_00080454:
              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;
              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;
              pbVar9 = pbVar15 + 3;
              pbVar15[2] = (bVar8 & 0x3f) + 0x80;
            }
          }
          else if (uVar4 < 0x80) {
            *pbVar15 = bVar8;
            pbVar9 = pbVar15 + 1;
          }
          else {
            if (0x7ff < uVar4) goto LAB_00080454;
            pbVar15[1] = bVar8 & 0x3f | 0x80;
            *pbVar15 = (char)(uVar4 >> 6) - 0x40;
            pbVar9 = pbVar15 + 2;
          }
          iVar6 = (int)pbVar9 - (int)pbVar5;
          pbVar15 = pbVar9;
          pbVar16 = pbVar11;
        } while (pbVar11 < pbVar17);
      }
    }
    else if (pbVar17 <= pbVar16) {
      iVar6 = 0;
    }
    else {
      do {
        while( true ) {
          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;
          pbVar15 = pbVar16 + 2;
          bVar8 = (byte)uVar4;
          if (0x7ff < uVar4 - 0xd800) break;
          if (pbVar15 < pbVar17) {
            iVar6 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) + (uVar4 * 0x400 & 0xffff)
            ;
            pbVar11 = pbVar9 + 4;
            uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;
            pbVar15 = pbVar16 + 4;
            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;
            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;
            pbVar9[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;
            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;
          }
          else {
LAB_0007ff98:
            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;
            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;
            pbVar11 = pbVar9 + 3;
            pbVar9[2] = (bVar8 & 0x3f) + 0x80;
          }
LAB_0007ffc4:
          iVar6 = (int)pbVar11 - (int)pbVar5;
          pbVar9 = pbVar11;
          pbVar16 = pbVar15;
          if (pbVar17 <= pbVar15) goto LAB_00080014;
        }
        if (0x7f < uVar4) {
          if (0x7ff < uVar4) goto LAB_0007ff98;
          pbVar9[1] = bVar8 & 0x3f | 0x80;
          *pbVar9 = (char)(uVar4 >> 6) - 0x40;
          pbVar11 = pbVar9 + 2;
          goto LAB_0007ffc4;
        }
        *pbVar9 = bVar8;
        pbVar9 = pbVar9 + 1;
        pbVar16 = pbVar15;
      } while (pbVar15 < pbVar17);
      iVar6 = (int)pbVar9 - (int)pbVar5;
    }
LAB_00080014:
    pMem->n = iVar6;
  }
  *pbVar9 = 0;
  uVar2 = pMem->flags;
  if (((uVar2 & 0x2400) != 0) || (pMem->szMalloc != 0)) {
    (*(code *)(PTR_LAB_00190ba8 + -0x1e58))(pMem);
  }
  puVar3 = PTR_aBuiltinFunc_29540_1408__00190948;
  pMem->enc = desiredEnc;
  pMem->flags = uVar2 & 0x801d | 0x202;
  pMem->z = (char *)pbVar5;
  pMem->zMalloc = (char *)pbVar5;
  iVar6 = (**(code **)(puVar3 + -0xb40))(pbVar5);
  pMem->szMalloc = iVar6;
  return 0;
}



undefined4 FUN_0007fed4(int param_1,int param_2)

{
  undefined1 uVar1;
  ushort uVar2;
  undefined *puVar3;
  uint uVar4;
  byte *pbVar5;
  undefined4 uVar6;
  undefined1 *puVar7;
  byte bVar8;
  byte *pbVar9;
  uint uVar10;
  byte *pbVar11;
  undefined1 *puVar12;
  byte bVar13;
  int iVar14;
  byte *pbVar15;
  byte *pbVar16;
  byte *pbVar17;
  
  if (*(char *)(param_1 + 10) == '\x01') {
    uVar4 = *(uint *)(param_1 + 0xc);
    if (param_2 != 1) {
      iVar14 = (uVar4 + 1) * 2;
      goto LAB_0007ff34;
    }
  }
  else {
    if (param_2 != 1) {
      iVar14 = FUN_0007d470();
      if (iVar14 != 0) {
        return 7;
      }
      puVar7 = *(undefined1 **)(param_1 + 0x10);
      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);
      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {
        uVar1 = *puVar7;
        *puVar7 = puVar7[1];
        puVar7[1] = uVar1;
      }
      *(char *)(param_1 + 10) = (char)param_2;
      return 0;
    }
    uVar4 = *(uint *)(param_1 + 0xc);
  }
  uVar4 = uVar4 & 0xfffffffe;
  *(uint *)(param_1 + 0xc) = uVar4;
  iVar14 = uVar4 * 2 + 1;
LAB_0007ff34:
  pbVar16 = *(byte **)(param_1 + 0x10);
  pbVar5 = (byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))
                             (*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f);
  puVar3 = PTR_DAT_00190b94;
  pbVar17 = pbVar16 + uVar4;
  if (pbVar5 == (byte *)0x0) {
    return 7;
  }
  if (*(char *)(param_1 + 10) == '\x01') {
    pbVar15 = pbVar5;
    if (param_2 == 2) {
      iVar14 = 0;
      pbVar9 = pbVar5;
      if (pbVar17 > pbVar16) {
        do {
          bVar8 = *pbVar16;
          pbVar11 = pbVar16 + 1;
          if (bVar8 < 0xc0) {
            bVar13 = 0;
            goto LAB_0008030c;
          }
          bVar8 = puVar3[bVar8 - 0x3f94];
          if (pbVar17 == pbVar11) {
LAB_00080558:
            bVar13 = 0xff;
            if (bVar8 < 0x80) {
              bVar8 = 0xfd;
            }
            else {
              bVar13 = 0;
            }
LAB_0008030c:
            *pbVar9 = bVar8;
            pbVar15 = pbVar9 + 2;
            pbVar9[1] = bVar13;
          }
          else {
            uVar4 = (uint)pbVar16[1];
            iVar14 = (uint)bVar8 << 6;
            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;
            while( true ) {
              pbVar11 = pbVar11 + 1;
              uVar10 = (uVar4 & 0x3f) + iVar14;
              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))
              break;
              iVar14 = uVar10 * 0x40;
            }
            if ((uVar10 < 0x80) ||
               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {
              bVar13 = 0xff;
              bVar8 = 0xfd;
              goto LAB_0008030c;
            }
            bVar8 = (byte)uVar10;
            bVar13 = (byte)(uVar10 >> 8);
            if (uVar10 < 0x10000) goto LAB_0008030c;
            pbVar9[2] = bVar8;
            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;
            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;
            pbVar15 = pbVar9 + 4;
            pbVar9[3] = (bVar13 & 3) - 0x24;
          }
          iVar14 = (int)pbVar15 - (int)pbVar5;
          pbVar9 = pbVar15;
          pbVar16 = pbVar11;
        } while (pbVar11 < pbVar17);
      }
    }
    else {
      pbVar9 = pbVar5;
      if (pbVar17 <= pbVar16) {
        iVar14 = 0;
      }
      else {
        do {
          while( true ) {
            bVar8 = *pbVar16;
            pbVar11 = pbVar16 + 1;
            if (bVar8 < 0xc0) {
              bVar13 = 0;
              goto LAB_000801d8;
            }
            bVar8 = puVar3[bVar8 - 0x3f94];
            if (pbVar17 != pbVar11) break;
LAB_00080538:
            bVar13 = 0xff;
            if (bVar8 < 0x80) {
              bVar8 = 0xfd;
            }
            else {
              bVar13 = 0;
            }
LAB_000801d8:
            *pbVar9 = bVar13;
            pbVar9[1] = bVar8;
            pbVar15 = pbVar9 + 2;
            pbVar9 = pbVar15;
            pbVar16 = pbVar11;
            if (pbVar17 <= pbVar11) goto LAB_000802c0;
          }
          uVar4 = (uint)pbVar16[1];
          iVar14 = (uint)bVar8 << 6;
          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;
          while( true ) {
            pbVar11 = pbVar11 + 1;
            uVar10 = (uVar4 & 0x3f) + iVar14;
            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))
            break;
            iVar14 = uVar10 * 0x40;
          }
          if ((uVar10 < 0x80) ||
             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {
            bVar8 = 0xfd;
            bVar13 = 0xff;
            goto LAB_000801d8;
          }
          bVar13 = (byte)(uVar10 >> 8);
          bVar8 = (byte)uVar10;
          if (uVar10 < 0x10000) goto LAB_000801d8;
          pbVar9[3] = bVar8;
          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;
          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;
          pbVar15 = pbVar9 + 4;
          pbVar9[2] = (bVar13 & 3) - 0x24;
          pbVar9 = pbVar15;
          pbVar16 = pbVar11;
        } while (pbVar11 < pbVar17);
LAB_000802c0:
        iVar14 = (int)pbVar15 - (int)pbVar5;
      }
    }
    *(int *)(param_1 + 0xc) = iVar14;
    pbVar9 = pbVar15 + 1;
    *pbVar15 = 0;
  }
  else {
    pbVar9 = pbVar5;
    if (*(char *)(param_1 + 10) == '\x02') {
      pbVar15 = pbVar5;
      if (pbVar17 <= pbVar16) {
        iVar14 = 0;
      }
      else {
        do {
          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;
          pbVar11 = pbVar16 + 2;
          bVar8 = (byte)uVar4;
          if (uVar4 - 0xd800 < 0x800) {
            if (pbVar11 < pbVar17) {
              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +
                       (uVar4 * 0x400 & 0xffff);
              pbVar9 = pbVar15 + 4;
              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;
              pbVar11 = pbVar16 + 4;
              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;
              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;
              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;
              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;
            }
            else {
LAB_00080454:
              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;
              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;
              pbVar9 = pbVar15 + 3;
              pbVar15[2] = (bVar8 & 0x3f) + 0x80;
            }
          }
          else if (uVar4 < 0x80) {
            *pbVar15 = bVar8;
            pbVar9 = pbVar15 + 1;
          }
          else {
            if (0x7ff < uVar4) goto LAB_00080454;
            pbVar15[1] = bVar8 & 0x3f | 0x80;
            *pbVar15 = (char)(uVar4 >> 6) - 0x40;
            pbVar9 = pbVar15 + 2;
          }
          iVar14 = (int)pbVar9 - (int)pbVar5;
          pbVar15 = pbVar9;
          pbVar16 = pbVar11;
        } while (pbVar11 < pbVar17);
      }
    }
    else if (pbVar17 <= pbVar16) {
      iVar14 = 0;
    }
    else {
      do {
        while( true ) {
          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;
          pbVar15 = pbVar16 + 2;
          bVar8 = (byte)uVar4;
          if (0x7ff < uVar4 - 0xd800) break;
          if (pbVar15 < pbVar17) {
            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +
                     (uVar4 * 0x400 & 0xffff);
            pbVar11 = pbVar9 + 4;
            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;
            pbVar15 = pbVar16 + 4;
            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;
            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;
            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;
            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;
          }
          else {
LAB_0007ff98:
            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;
            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;
            pbVar11 = pbVar9 + 3;
            pbVar9[2] = (bVar8 & 0x3f) + 0x80;
          }
LAB_0007ffc4:
          iVar14 = (int)pbVar11 - (int)pbVar5;
          pbVar9 = pbVar11;
          pbVar16 = pbVar15;
          if (pbVar17 <= pbVar15) goto LAB_00080014;
        }
        if (0x7f < uVar4) {
          if (0x7ff < uVar4) goto LAB_0007ff98;
          pbVar9[1] = bVar8 & 0x3f | 0x80;
          *pbVar9 = (char)(uVar4 >> 6) - 0x40;
          pbVar11 = pbVar9 + 2;
          goto LAB_0007ffc4;
        }
        *pbVar9 = bVar8;
        pbVar9 = pbVar9 + 1;
        pbVar16 = pbVar15;
      } while (pbVar15 < pbVar17);
      iVar14 = (int)pbVar9 - (int)pbVar5;
    }
LAB_00080014:
    *(int *)(param_1 + 0xc) = iVar14;
  }
  *pbVar9 = 0;
  uVar2 = *(ushort *)(param_1 + 8);
  if (((uVar2 & 0x2400) != 0) || (*(int *)(param_1 + 0x18) != 0)) {
    (*(code *)(PTR_LAB_00190ba8 + -0x1e58))(param_1);
  }
  puVar3 = PTR_DAT_00190948;
  *(char *)(param_1 + 10) = (char)param_2;
  *(ushort *)(param_1 + 8) = uVar2 & 0x801d | 0x202;
  *(byte **)(param_1 + 0x10) = pbVar5;
  *(byte **)(param_1 + 0x14) = pbVar5;
  uVar6 = (**(code **)(puVar3 + -0xb40))(pbVar5);
  *(undefined4 *)(param_1 + 0x18) = uVar6;
  return 0;
}


lui gp,0x12
addiu gp,gp,-0x75b4
addu gp,gp,t9
addiu sp,sp,-0x30
li v0,0x1
sw s3,0x24(sp)
or s3,a1,zero
sw s2,0x20(sp)
sw gp,0x10(sp)
sw ra,0x2c(sp)
sw s4,0x28(sp)
sw s1,0x1c(sp)
sw s0,0x18(sp)
lbu v1,0xa(a0)
beq v1,v0,0x00080180
_or s2,a0,zero
bne a1,v0,0x000800a0
_lw t9,-0x7d60(gp)
lw v0,0xc(a0)
li s1,-0x2
and s1,v0,s1
sll a3,s1,0x1
sw s1,0xc(s2)
addiu a3,a3,0x1
lw t9,-0x7d78(gp)
sra a2,a3,0x1f
lw a0,0x20(s2)
addiu t9,t9,0x8e0
jalr t9
_lw s0,0x10(s2)
addu s1,s0,s1
lw gp,0x10(sp)
beq v0,zero,0x0008040c
_or s4,v0,zero
lbu v0,0xa(s2)
li v1,0x1
beq v0,v1,0x00080198
_li v1,0x2
beq v0,v1,0x00080434
_sltu v0,s0,s1
beq v0,zero,0x0008054c
_or a0,s4,zero
lui a1,0xffff
b 0x0007ffd0
_addiu a1,a1,0x2800
sltu v0,a3,s1
bne v0,zero,0x00080118
_sll a2,v1,0xa
srl t0,v1,0x6
srl v0,v1,0xc
andi t0,t0,0x3f
addiu v0,v0,-0x20
addiu t0,t0,-0x80
sb v0,0x0(a0)
andi v1,v1,0x3f
sb t0,0x1(a0)
addiu a0,a0,0x3
addiu v1,v1,-0x80
or s0,a3,zero
sb v1,-0x1(a0)
sltu v0,s0,s1
beq v0,zero,0x00080014
_subu v0,a0,s4
lbu v0,0x0(s0)
lbu v1,0x1(s0)
sll v0,v0,0x8
addu v1,v1,v0
addu v0,v1,a1
sltiu v0,v0,0x800
bne v0,zero,0x0007ff88
_addiu a3,s0,0x2
sltiu v0,v1,0x80
beq v0,zero,0x000805b8
_andi a2,v1,0xff
or s0,a3,zero
sb a2,0x0(a0)
sltu v0,s0,s1
bne v0,zero,0x0007ffd0
_addiu a0,a0,0x1
subu v0,a0,s4
sw v0,0xc(s2)
sb zero,0x0(a0)
lhu s0,0x8(s2)
andi v0,s0,0x2400
bne v0,zero,0x0008003c
_lw t9,-0x7d78(gp)
lw v0,0x18(s2)
beq v0,zero,0x00080050
_lw v0,-0x7fd8(gp)
lw t9,-0x7d78(gp)
addiu t9,t9,-0x1e58
jalr t9
_or a0,s2,zero
lw gp,0x10(sp)
lw v0,-0x7fd8(gp)
andi s0,s0,0x801d
ori s0,s0,0x202
sb s3,0xa(s2)
sh s0,0x8(s2)
sw s4,0x10(s2)
sw s4,0x14(s2)
lw t9,-0xb40(v0)
jalr t9
_or a0,s4,zero
or a2,zero,zero
sw v0,0x18(s2)
lw ra,0x2c(sp)
or v0,a2,zero
lw s4,0x28(sp)
lw s3,0x24(sp)
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x30
addiu t9,t9,-0x2b90
bal 0x0007d470
_nop
bne v0,zero,0x0008040c
_or a2,v0,zero
lw a1,0xc(s2)
li v1,-0x2
lw v0,0x10(s2)
and a1,a1,v1
addu a1,v0,a1
sltu v1,v0,a1
beq v1,zero,0x000800f0
_nop
lbu v1,0x1(v0)
addiu v0,v0,0x2
lbu a0,-0x2(v0)
sb v1,-0x2(v0)
sltu v1,v0,a1
bne v1,zero,0x000800d4
_sb a0,-0x1(v0)
sb s3,0xa(s2)
or v0,a2,zero
lw ra,0x2c(sp)
lw s4,0x28(sp)
lw s3,0x24(sp)
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x30
lbu a3,0x2(s0)
lbu v0,0x3(s0)
andi v1,v1,0x3c0
addiu v1,v1,0x40
sll a3,a3,0x8
andi a2,a2,0xffff
addu v0,v0,a3
sll v1,v1,0xa
andi v0,v0,0x3ff
addu v0,v0,a2
addiu a0,a0,0x4
addu v1,v0,v1
addiu s0,s0,0x4
srl a3,v1,0x12
ext a2,v1,0xc,0x6
ext v0,v1,0x6,0x6
andi v1,v1,0x3f
addiu a3,a3,-0x10
addiu a2,a2,-0x80
addiu v0,v0,-0x80
sb a3,-0x4(a0)
addiu v1,v1,-0x80
sb a2,-0x3(a0)
sb v0,-0x2(a0)
b 0x0007ffc4
_sb v1,-0x1(a0)
lw s1,0xc(a0)
beq a1,v1,0x0007ff20
_or v0,s1,zero
addiu a3,s1,0x1
b 0x0007ff34
_sll a3,a3,0x1
li v0,0x2
beq s3,v0,0x000802d4
_sltu v0,s0,s1
beq v0,zero,0x0008056c
_or a1,s4,zero
lw t2,-0x7d8c(gp)
li a3,-0x40
li t0,0x80
li t4,-0x800
addiu t2,t2,-0x3ed4
ori t3,zero,0xd800
li t6,-0x2
ori t5,zero,0xfffe
b 0x000801f0
_lui t1,0x1
or a2,zero,zero
or s0,v1,zero
sb a2,0x0(a1)
sltu v1,v1,s1
sb v0,0x1(a1)
beq v1,zero,0x000802c0
_addiu a1,a1,0x2
lbu v0,0x0(s0)
sltiu a0,v0,0xc0
bne a0,zero,0x000801d4
_addiu v1,s0,0x1
addu v0,v0,t2
lbu v0,-0xc0(v0)
beq s1,v1,0x00080534
_or a0,v0,zero
lbu a2,0x1(s0)
and t7,a2,a3
beq t7,t0,0x0008023c
_sll a0,a0,0x6
b 0x00080538
_li a2,0xff
lbu a2,0x0(v1)
and v0,a2,a3
bne v0,t0,0x00080250
_sltiu v0,a0,0x80
sll a0,a0,0x6
addiu v1,v1,0x1
andi a2,a2,0x3f
bne s1,v1,0x00080228
_addu a0,a2,a0
sltiu v0,a0,0x80
bne v0,zero,0x000803f8
_li v0,0xfd
and v0,a0,t4
beq v0,t3,0x000803f8
_li v0,0xfd
and v0,a0,t6
beq v0,t5,0x000803f4
_sltu t7,a0,t1
ext a2,a0,0x8,0x8
bne t7,zero,0x000801d8
_andi v0,a0,0xff
subu t7,a0,t1
sb v0,0x3(a1)
ext a0,a0,0xa,0x6
ext v0,t7,0x12,0x2
srl t7,t7,0xa
addiu v0,v0,-0x28
and t7,t7,a3
or a0,a0,t7
sb v0,0x0(a1)
sb a0,0x1(a1)
andi a2,a2,0x3
addiu a1,a1,0x4
addiu a2,a2,-0x24
or s0,v1,zero
sltu v1,v1,s1
bne v1,zero,0x000801f0
_sb a2,-0x2(a1)
subu v0,a1,s4
sw v0,0xc(s2)
addiu a0,a1,0x1
b 0x00080018
_sb zero,0x0(a1)
beq v0,zero,0x00080580
_or v0,zero,zero
lw t2,-0x7d8c(gp)
li a3,-0x40
li t0,0x80
li t4,-0x800
addiu t2,t2,-0x3ed4
ori t3,zero,0xd800
li t6,-0x2
ori t5,zero,0xfffe
lui t1,0x1
b 0x00080328
_or a1,s4,zero
or v1,zero,zero
sb a2,0x0(a1)
addiu a1,a1,0x2
sb v1,-0x1(a1)
or s0,a0,zero
sltu a0,a0,s1
beq a0,zero,0x000802c4
_subu v0,a1,s4
lbu a2,0x0(s0)
sltiu v0,a2,0xc0
bne v0,zero,0x00080308
_addiu a0,s0,0x1
addu a2,a2,t2
lbu a2,-0xc0(a2)
beq s1,a0,0x00080554
_or v0,a2,zero
lbu v1,0x1(s0)
and t7,v1,a3
beq t7,t0,0x00080374
_sll v0,v0,0x6
b 0x00080558
_li v1,0xff
lbu v1,0x0(a0)
and a2,v1,a3
bne a2,t0,0x00080384
_nop
sll v0,v0,0x6
addiu a0,a0,0x1
andi v1,v1,0x3f
bne s1,a0,0x00080360
_addu v0,v1,v0
sltiu v1,v0,0x80
bne v1,zero,0x00080404
_li v1,0xff
and v1,v0,t4
beq v1,t3,0x00080404
_li v1,0xff
and v1,v0,t6
beq v1,t5,0x00080400
_sltu t7,v0,t1
andi a2,v0,0xff
bne t7,zero,0x0008030c
_ext v1,v0,0x8,0x8
subu t7,v0,t1
sb a2,0x2(a1)
ext v0,v0,0xa,0x6
srl a2,t7,0xa
ext t7,t7,0x12,0x2
and a2,a2,a3
addiu t7,t7,-0x28
or v0,v0,a2
sb t7,0x1(a1)
andi v1,v1,0x3
sb v0,0x0(a1)
addiu a1,a1,0x4
addiu v1,v1,-0x24
or s0,a0,zero
b 0x0008031c
_sb v1,-0x1(a1)
li v0,0xfd
b 0x000801d8
_li a2,0xff
li v1,0xff
b 0x0008030c
_li a2,0xfd
lw ra,0x2c(sp)
li a2,0x7
lw s4,0x28(sp)
lw s3,0x24(sp)
or v0,a2,zero
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x30
beq v0,zero,0x00080574
_lui a2,0xffff
or a0,s4,zero
b 0x0008048c
_addiu a2,a2,0x2800
sltu v0,a1,s1
bne v0,zero,0x000804c8
_srl t0,v1,0x6
srl v0,v1,0xc
andi t0,t0,0x3f
addiu v0,v0,-0x20
addiu t0,t0,-0x80
sb v0,0x0(a0)
andi v1,v1,0x3f
sb t0,0x1(a0)
addiu a0,a0,0x3
addiu v1,v1,-0x80
or s0,a1,zero
sb v1,-0x1(a0)
sltu v0,s0,s1
beq v0,zero,0x00080014
_subu v0,a0,s4
lbu v1,0x1(s0)
lbu v0,0x0(s0)
sll v1,v1,0x8
addu v1,v1,v0
addu v0,v1,a2
sltiu v0,v0,0x800
bne v0,zero,0x00080448
_addiu a1,s0,0x2
sltiu v0,v1,0x80
beq v0,zero,0x00080588
_andi a3,v1,0xff
sb a3,0x0(a0)
or s0,a1,zero
b 0x00080480
_addiu a0,a0,0x1
lbu v0,0x3(s0)
sll a1,v1,0xa
lbu a3,0x2(s0)
andi v1,v1,0x3c0
addiu v1,v1,0x40
sll v0,v0,0x8
andi a1,a1,0xffff
addu v0,v0,a3
sll v1,v1,0xa
andi v0,v0,0x3ff
addu v0,v0,a1
addiu a0,a0,0x4
addu v1,v0,v1
addiu s0,s0,0x4
srl a3,v1,0x12
ext a1,v1,0xc,0x6
ext v0,v1,0x6,0x6
andi v1,v1,0x3f
addiu a3,a3,-0x10
addiu a1,a1,-0x80
addiu v0,v0,-0x80
sb a3,-0x4(a0)
addiu v1,v1,-0x80
sb a1,-0x3(a0)
sb v0,-0x2(a0)
b 0x00080480
_sb v1,-0x1(a0)
li a2,0xff
li t7,0xfd
sltiu a0,v0,0x80
movz a2,zero,a0
b 0x000801d8
_movn v0,t7,a0
b 0x00080014
_or v0,zero,zero
li v1,0xff
li t7,0xfd
sltiu v0,a2,0x80
movz v1,zero,v0
b 0x0008030c
_movn a2,t7,v0
b 0x000802c4
_or v0,zero,zero
or v0,zero,zero
b 0x00080014
_or a0,s4,zero
b 0x000802c4
_or a1,s4,zero
srl t0,v1,0x6
andi v0,a3,0x3f
sltiu t1,v1,0x800
andi a3,t0,0xff
beq t1,zero,0x00080454
_ori v0,v0,0x80
addiu v1,a3,-0x40
sb v0,0x1(a0)
or s0,a1,zero
sb v1,0x0(a0)
b 0x00080480
_addiu a0,a0,0x2
srl t0,v1,0x6
andi v0,a2,0x3f
sltiu t1,v1,0x800
andi a2,t0,0xff
beq t1,zero,0x0007ff98
_ori v0,v0,0x80
addiu v1,a2,-0x40
sb v0,0x1(a0)
or s0,a3,zero
sb v1,0x0(a0)
b 0x0007ffc4
_addiu a0,a0,0x2
(translation_unit "undefined4 FUN_0007fed4(int param_1,int param_2)\n\n{\n  undefined1 uVar1;\n  ushort uVar2;\n  undefined *puVar3;\n  uint uVar4;\n  byte *pbVar5;\n  undefined4 uVar6;\n  undefined1 *puVar7;\n  byte bVar8;\n  byte *pbVar9;\n  uint uVar10;\n  byte *pbVar11;\n  undefined1 *puVar12;\n  byte bVar13;\n  int iVar14;\n  byte *pbVar15;\n  byte *pbVar16;\n  byte *pbVar17;\n  \n  if (*(char *)(param_1 + 10) == '\x01') {\n    uVar4 = *(uint *)(param_1 + 0xc);\n    if (param_2 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }\n  }\n  else {\n    if (param_2 != 1) {\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }\n    uVar4 = *(uint *)(param_1 + 0xc);\n  }\n  uVar4 = uVar4 & 0xfffffffe;\n  *(uint *)(param_1 + 0xc) = uVar4;\n  iVar14 = uVar4 * 2 + 1;\nLAB_0007ff34:\n  pbVar16 = *(byte **)(param_1 + 0x10);\n  pbVar5 = (byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))\n                             (*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f);\n  puVar3 = PTR_DAT_00190b94;\n  pbVar17 = pbVar16 + uVar4;\n  if (pbVar5 == (byte *)0x0) {\n    return 7;\n  }\n  if (*(char *)(param_1 + 10) == '\x01') {\n    pbVar15 = pbVar5;\n    if (param_2 == 2) {\n      iVar14 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }\n    *(int *)(param_1 + 0xc) = iVar14;\n    pbVar9 = pbVar15 + 1;\n    *pbVar15 = 0;\n  }\n  else {\n    pbVar9 = pbVar5;\n    if (*(char *)(param_1 + 10) == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    *(int *)(param_1 + 0xc) = iVar14;\n  }\n  *pbVar9 = 0;\n  uVar2 = *(ushort *)(param_1 + 8);\n  if (((uVar2 & 0x2400) != 0) || (*(int *)(param_1 + 0x18) != 0)) {\n    (*(code *)(PTR_LAB_00190ba8 + -0x1e58))(param_1);\n  }\n  puVar3 = PTR_DAT_00190948;\n  *(char *)(param_1 + 10) = (char)param_2;\n  *(ushort *)(param_1 + 8) = uVar2 & 0x801d | 0x202;\n  *(byte **)(param_1 + 0x10) = pbVar5;\n  *(byte **)(param_1 + 0x14) = pbVar5;\n  uVar6 = (**(code **)(puVar3 + -0xb40))(pbVar5);\n  *(undefined4 *)(param_1 + 0x18) = uVar6;\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_0007fed4(int param_1,int param_2)\n\n{\n  undefined1 uVar1;\n  ushort uVar2;\n  undefined *puVar3;\n  uint uVar4;\n  byte *pbVar5;\n  undefined4 uVar6;\n  undefined1 *puVar7;\n  byte bVar8;\n  byte *pbVar9;\n  uint uVar10;\n  byte *pbVar11;\n  undefined1 *puVar12;\n  byte bVar13;\n  int iVar14;\n  byte *pbVar15;\n  byte *pbVar16;\n  byte *pbVar17;\n  \n  if (*(char *)(param_1 + 10) == '\x01') {\n    uVar4 = *(uint *)(param_1 + 0xc);\n    if (param_2 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }\n  }\n  else {\n    if (param_2 != 1) {\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }\n    uVar4 = *(uint *)(param_1 + 0xc);\n  }\n  uVar4 = uVar4 & 0xfffffffe;\n  *(uint *)(param_1 + 0xc) = uVar4;\n  iVar14 = uVar4 * 2 + 1;\nLAB_0007ff34:\n  pbVar16 = *(byte **)(param_1 + 0x10);\n  pbVar5 = (byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))\n                             (*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f);\n  puVar3 = PTR_DAT_00190b94;\n  pbVar17 = pbVar16 + uVar4;\n  if (pbVar5 == (byte *)0x0) {\n    return 7;\n  }\n  if (*(char *)(param_1 + 10) == '\x01') {\n    pbVar15 = pbVar5;\n    if (param_2 == 2) {\n      iVar14 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }\n    *(int *)(param_1 + 0xc) = iVar14;\n    pbVar9 = pbVar15 + 1;\n    *pbVar15 = 0;\n  }\n  else {\n    pbVar9 = pbVar5;\n    if (*(char *)(param_1 + 10) == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    *(int *)(param_1 + 0xc) = iVar14;\n  }\n  *pbVar9 = 0;\n  uVar2 = *(ushort *)(param_1 + 8);\n  if (((uVar2 & 0x2400) != 0) || (*(int *)(param_1 + 0x18) != 0)) {\n    (*(code *)(PTR_LAB_00190ba8 + -0x1e58))(param_1);\n  }\n  puVar3 = PTR_DAT_00190948;\n  *(char *)(param_1 + 10) = (char)param_2;\n  *(ushort *)(param_1 + 8) = uVar2 & 0x801d | 0x202;\n  *(byte **)(param_1 + 0x10) = pbVar5;\n  *(byte **)(param_1 + 0x14) = pbVar5;\n  uVar6 = (**(code **)(puVar3 + -0xb40))(pbVar5);\n  *(undefined4 *)(param_1 + 0x18) = uVar6;\n  return 0;\n}" type_identifier (function_declarator "FUN_0007fed4(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  undefined1 uVar1;\n  ushort uVar2;\n  undefined *puVar3;\n  uint uVar4;\n  byte *pbVar5;\n  undefined4 uVar6;\n  undefined1 *puVar7;\n  byte bVar8;\n  byte *pbVar9;\n  uint uVar10;\n  byte *pbVar11;\n  undefined1 *puVar12;\n  byte bVar13;\n  int iVar14;\n  byte *pbVar15;\n  byte *pbVar16;\n  byte *pbVar17;\n  \n  if (*(char *)(param_1 + 10) == '\x01') {\n    uVar4 = *(uint *)(param_1 + 0xc);\n    if (param_2 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }\n  }\n  else {\n    if (param_2 != 1) {\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }\n    uVar4 = *(uint *)(param_1 + 0xc);\n  }\n  uVar4 = uVar4 & 0xfffffffe;\n  *(uint *)(param_1 + 0xc) = uVar4;\n  iVar14 = uVar4 * 2 + 1;\nLAB_0007ff34:\n  pbVar16 = *(byte **)(param_1 + 0x10);\n  pbVar5 = (byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))\n                             (*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f);\n  puVar3 = PTR_DAT_00190b94;\n  pbVar17 = pbVar16 + uVar4;\n  if (pbVar5 == (byte *)0x0) {\n    return 7;\n  }\n  if (*(char *)(param_1 + 10) == '\x01') {\n    pbVar15 = pbVar5;\n    if (param_2 == 2) {\n      iVar14 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }\n    *(int *)(param_1 + 0xc) = iVar14;\n    pbVar9 = pbVar15 + 1;\n    *pbVar15 = 0;\n  }\n  else {\n    pbVar9 = pbVar5;\n    if (*(char *)(param_1 + 10) == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    *(int *)(param_1 + 0xc) = iVar14;\n  }\n  *pbVar9 = 0;\n  uVar2 = *(ushort *)(param_1 + 8);\n  if (((uVar2 & 0x2400) != 0) || (*(int *)(param_1 + 0x18) != 0)) {\n    (*(code *)(PTR_LAB_00190ba8 + -0x1e58))(param_1);\n  }\n  puVar3 = PTR_DAT_00190948;\n  *(char *)(param_1 + 10) = (char)param_2;\n  *(ushort *)(param_1 + 8) = uVar2 & 0x801d | 0x202;\n  *(byte **)(param_1 + 0x10) = pbVar5;\n  *(byte **)(param_1 + 0x14) = pbVar5;\n  uVar6 = (**(code **)(puVar3 + -0xb40))(pbVar5);\n  *(undefined4 *)(param_1 + 0x18) = uVar6;\n  return 0;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "undefined1 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "byte *pbVar15;" type_identifier (pointer_declarator "*pbVar15" * identifier) ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (if_statement "if (*(char *)(param_1 + 10) == '\x01') {\n    uVar4 = *(uint *)(param_1 + 0xc);\n    if (param_2 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }\n  }\n  else {\n    if (param_2 != 1) {\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }\n    uVar4 = *(uint *)(param_1 + 0xc);\n  }" if (parenthesized_expression "(*(char *)(param_1 + 10) == '\x01')" ( (binary_expression "*(char *)(param_1 + 10) == '\x01'" (pointer_expression "*(char *)(param_1 + 10)" * (cast_expression "(char *)(param_1 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n    uVar4 = *(uint *)(param_1 + 0xc);\n    if (param_2 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }\n  }" { (expression_statement "uVar4 = *(uint *)(param_1 + 0xc);" (assignment_expression "uVar4 = *(uint *)(param_1 + 0xc)" identifier = (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (param_2 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }" if (parenthesized_expression "(param_2 != 1)" ( (binary_expression "param_2 != 1" identifier != number_literal) )) (compound_statement "{\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }" { (expression_statement "iVar14 = (uVar4 + 1) * 2;" (assignment_expression "iVar14 = (uVar4 + 1) * 2" identifier = (binary_expression "(uVar4 + 1) * 2" (parenthesized_expression "(uVar4 + 1)" ( (binary_expression "uVar4 + 1" identifier + number_literal) )) * number_literal)) ;) (goto_statement "goto LAB_0007ff34;" goto statement_identifier ;) })) }) (else_clause "else {\n    if (param_2 != 1) {\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }\n    uVar4 = *(uint *)(param_1 + 0xc);\n  }" else (compound_statement "{\n    if (param_2 != 1) {\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }\n    uVar4 = *(uint *)(param_1 + 0xc);\n  }" { (if_statement "if (param_2 != 1) {\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }" if (parenthesized_expression "(param_2 != 1)" ( (binary_expression "param_2 != 1" identifier != number_literal) )) (compound_statement "{\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }" { (expression_statement "iVar14 = FUN_0007d470();" (assignment_expression "iVar14 = FUN_0007d470()" identifier = (call_expression "FUN_0007d470()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar14 != 0) {\n        return 7;\n      }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\n        return 7;\n      }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "puVar7 = *(undefined1 **)(param_1 + 0x10);" (assignment_expression "puVar7 = *(undefined1 **)(param_1 + 0x10)" identifier = (pointer_expression "*(undefined1 **)(param_1 + 0x10)" * (cast_expression "(undefined1 **)(param_1 + 0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);" (assignment_expression "puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe)" identifier = (binary_expression "puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe)" identifier + (parenthesized_expression "(*(uint *)(param_1 + 0xc) & 0xfffffffe)" ( (binary_expression "*(uint *)(param_1 + 0xc) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) & number_literal) )))) ;) (for_statement "for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }" for ( ; (binary_expression "puVar7 < puVar12" identifier < identifier) ; (assignment_expression "puVar7 = puVar7 + 2" identifier = (binary_expression "puVar7 + 2" identifier + number_literal)) ) (compound_statement "{\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }" { (expression_statement "uVar1 = *puVar7;" (assignment_expression "uVar1 = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "*puVar7 = puVar7[1];" (assignment_expression "*puVar7 = puVar7[1]" (pointer_expression "*puVar7" * identifier) = (subscript_expression "puVar7[1]" identifier [ number_literal ])) ;) (expression_statement "puVar7[1] = uVar1;" (assignment_expression "puVar7[1] = uVar1" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "*(char *)(param_1 + 10) = (char)param_2;" (assignment_expression "*(char *)(param_1 + 10) = (char)param_2" (pointer_expression "*(char *)(param_1 + 10)" * (cast_expression "(char *)(param_1 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) = (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar4 = *(uint *)(param_1 + 0xc);" (assignment_expression "uVar4 = *(uint *)(param_1 + 0xc)" identifier = (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) }))) (expression_statement "uVar4 = uVar4 & 0xfffffffe;" (assignment_expression "uVar4 = uVar4 & 0xfffffffe" identifier = (binary_expression "uVar4 & 0xfffffffe" identifier & number_literal)) ;) (expression_statement "*(uint *)(param_1 + 0xc) = uVar4;" (assignment_expression "*(uint *)(param_1 + 0xc) = uVar4" (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar14 = uVar4 * 2 + 1;" (assignment_expression "iVar14 = uVar4 * 2 + 1" identifier = (binary_expression "uVar4 * 2 + 1" (binary_expression "uVar4 * 2" identifier * number_literal) + number_literal)) ;) (labeled_statement "LAB_0007ff34:\n  pbVar16 = *(byte **)(param_1 + 0x10);" statement_identifier : (expression_statement "pbVar16 = *(byte **)(param_1 + 0x10);" (assignment_expression "pbVar16 = *(byte **)(param_1 + 0x10)" identifier = (pointer_expression "*(byte **)(param_1 + 0x10)" * (cast_expression "(byte **)(param_1 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;)) (expression_statement "pbVar5 = (byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))\n                             (*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f);" (assignment_expression "pbVar5 = (byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))\n                             (*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f)" identifier = (cast_expression "(byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))\n                             (*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(PTR_LAB_00190ba8 + 0x8e0))\n                             (*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba8 + 0x8e0))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba8 + 0x8e0)" * (cast_expression "(code *)(PTR_LAB_00190ba8 + 0x8e0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba8 + 0x8e0)" ( (binary_expression "PTR_LAB_00190ba8 + 0x8e0" identifier + number_literal) )))) )) (argument_list "(*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x20)" * (cast_expression "(undefined4 *)(param_1 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) , identifier , (binary_expression "iVar14 >> 0x1f" identifier >> number_literal) ))))) ;) (expression_statement "puVar3 = PTR_DAT_00190b94;" (assignment_expression "puVar3 = PTR_DAT_00190b94" identifier = identifier) ;) (expression_statement "pbVar17 = pbVar16 + uVar4;" (assignment_expression "pbVar17 = pbVar16 + uVar4" identifier = (binary_expression "pbVar16 + uVar4" identifier + identifier)) ;) (if_statement "if (pbVar5 == (byte *)0x0) {\n    return 7;\n  }" if (parenthesized_expression "(pbVar5 == (byte *)0x0)" ( (binary_expression "pbVar5 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 7;\n  }" { (return_statement "return 7;" return number_literal ;) })) (if_statement "if (*(char *)(param_1 + 10) == '\x01') {\n    pbVar15 = pbVar5;\n    if (param_2 == 2) {\n      iVar14 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }\n    *(int *)(param_1 + 0xc) = iVar14;\n    pbVar9 = pbVar15 + 1;\n    *pbVar15 = 0;\n  }\n  else {\n    pbVar9 = pbVar5;\n    if (*(char *)(param_1 + 10) == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    *(int *)(param_1 + 0xc) = iVar14;\n  }" if (parenthesized_expression "(*(char *)(param_1 + 10) == '\x01')" ( (binary_expression "*(char *)(param_1 + 10) == '\x01'" (pointer_expression "*(char *)(param_1 + 10)" * (cast_expression "(char *)(param_1 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n    pbVar15 = pbVar5;\n    if (param_2 == 2) {\n      iVar14 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }\n    *(int *)(param_1 + 0xc) = iVar14;\n    pbVar9 = pbVar15 + 1;\n    *pbVar15 = 0;\n  }" { (expression_statement "pbVar15 = pbVar5;" (assignment_expression "pbVar15 = pbVar5" identifier = identifier) ;) (if_statement "if (param_2 == 2) {\n      iVar14 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }" if (parenthesized_expression "(param_2 == 2)" ( (binary_expression "param_2 == 2" identifier == number_literal) )) (compound_statement "{\n      iVar14 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "pbVar9 = pbVar5;" (assignment_expression "pbVar9 = pbVar5" identifier = identifier) ;) (if_statement "if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }" if (parenthesized_expression "(pbVar17 > pbVar16)" ( (binary_expression "pbVar17 > pbVar16" identifier > identifier) )) (compound_statement "{\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }" { (do_statement "do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);" do (compound_statement "{\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        }" { (expression_statement "bVar8 = *pbVar16;" (assignment_expression "bVar8 = *pbVar16" identifier = (pointer_expression "*pbVar16" * identifier)) ;) (expression_statement "pbVar11 = pbVar16 + 1;" (assignment_expression "pbVar11 = pbVar16 + 1" identifier = (binary_expression "pbVar16 + 1" identifier + number_literal)) ;) (if_statement "if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }" if (parenthesized_expression "(bVar8 < 0xc0)" ( (binary_expression "bVar8 < 0xc0" identifier < number_literal) )) (compound_statement "{\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }" { (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0008030c;" goto statement_identifier ;) })) (expression_statement "bVar8 = puVar3[bVar8 - 0x3f94];" (assignment_expression "bVar8 = puVar3[bVar8 - 0x3f94]" identifier = (subscript_expression "puVar3[bVar8 - 0x3f94]" identifier [ (binary_expression "bVar8 - 0x3f94" identifier - number_literal) ])) ;) (if_statement "if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }" if (parenthesized_expression "(pbVar17 == pbVar11)" ( (binary_expression "pbVar17 == pbVar11" identifier == identifier) )) (compound_statement "{\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }" { (labeled_statement "LAB_00080558:\n            bVar13 = 0xff;" statement_identifier : (expression_statement "bVar13 = 0xff;" (assignment_expression "bVar13 = 0xff" identifier = number_literal) ;)) (if_statement "if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }" if (parenthesized_expression "(bVar8 < 0x80)" ( (binary_expression "bVar8 < 0x80" identifier < number_literal) )) (compound_statement "{\n              bVar8 = 0xfd;\n            }" { (expression_statement "bVar8 = 0xfd;" (assignment_expression "bVar8 = 0xfd" identifier = number_literal) ;) }) (else_clause "else {\n              bVar13 = 0;\n            }" else (compound_statement "{\n              bVar13 = 0;\n            }" { (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) }))) (labeled_statement "LAB_0008030c:\n            *pbVar9 = bVar8;" statement_identifier : (expression_statement "*pbVar9 = bVar8;" (assignment_expression "*pbVar9 = bVar8" (pointer_expression "*pbVar9" * identifier) = identifier) ;)) (expression_statement "pbVar15 = pbVar9 + 2;" (assignment_expression "pbVar15 = pbVar9 + 2" identifier = (binary_expression "pbVar9 + 2" identifier + number_literal)) ;) (expression_statement "pbVar9[1] = bVar13;" (assignment_expression "pbVar9[1] = bVar13" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }" else (compound_statement "{\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }" { (expression_statement "uVar4 = (uint)pbVar16[1];" (assignment_expression "uVar4 = (uint)pbVar16[1]" identifier = (cast_expression "(uint)pbVar16[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar14 = (uint)bVar8 << 6;" (assignment_expression "iVar14 = (uint)bVar8 << 6" identifier = (binary_expression "(uint)bVar8 << 6" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal)) ;) (if_statement "if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;" if (parenthesized_expression "((uVar4 & 0xffffffc0) != 0x80)" ( (binary_expression "(uVar4 & 0xffffffc0) != 0x80" (parenthesized_expression "(uVar4 & 0xffffffc0)" ( (binary_expression "uVar4 & 0xffffffc0" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00080558;" goto statement_identifier ;)) (while_statement "while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }" { (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "uVar10 = (uVar4 & 0x3f) + iVar14;" (assignment_expression "uVar10 = (uVar4 & 0x3f) + iVar14" identifier = (binary_expression "(uVar4 & 0x3f) + iVar14" (parenthesized_expression "(uVar4 & 0x3f)" ( (binary_expression "uVar4 & 0x3f" identifier & number_literal) )) + identifier)) ;) (if_statement "if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;" if (parenthesized_expression "((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))" ( (binary_expression "(pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80)" (parenthesized_expression "(pbVar17 == pbVar11)" ( (binary_expression "pbVar17 == pbVar11" identifier == identifier) )) || (parenthesized_expression "(uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80)" ( (comma_expression "uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80" (assignment_expression "uVar4 = (uint)*pbVar11" identifier = (binary_expression "(uint)*pbVar11" (parenthesized_expression "(uint)" ( identifier )) * identifier)) , (binary_expression "(uVar4 & 0xffffffc0) != 0x80" (parenthesized_expression "(uVar4 & 0xffffffc0)" ( (binary_expression "uVar4 & 0xffffffc0" identifier & number_literal) )) != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar14 = uVar10 * 0x40;" (assignment_expression "iVar14 = uVar10 * 0x40" identifier = (binary_expression "uVar10 * 0x40" identifier * number_literal)) ;) })) (if_statement "if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }" if (parenthesized_expression "((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe))))" ( (binary_expression "(uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))" (parenthesized_expression "(uVar10 < 0x80)" ( (binary_expression "uVar10 < 0x80" identifier < number_literal) )) || (parenthesized_expression "(((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))" ( (parenthesized_expression "((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe))" ( (binary_expression "(uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)" (binary_expression "(uVar10 & 0xfffff800) == 0xd800" (parenthesized_expression "(uVar10 & 0xfffff800)" ( (binary_expression "uVar10 & 0xfffff800" identifier & number_literal) )) == number_literal) || (parenthesized_expression "((uVar10 & 0xfffffffe) == 0xfffe)" ( (binary_expression "(uVar10 & 0xfffffffe) == 0xfffe" (parenthesized_expression "(uVar10 & 0xfffffffe)" ( (binary_expression "uVar10 & 0xfffffffe" identifier & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }" { (expression_statement "bVar13 = 0xff;" (assignment_expression "bVar13 = 0xff" identifier = number_literal) ;) (expression_statement "bVar8 = 0xfd;" (assignment_expression "bVar8 = 0xfd" identifier = number_literal) ;) (goto_statement "goto LAB_0008030c;" goto statement_identifier ;) })) (expression_statement "bVar8 = (byte)uVar10;" (assignment_expression "bVar8 = (byte)uVar10" identifier = (cast_expression "(byte)uVar10" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar13 = (byte)(uVar10 >> 8);" (assignment_expression "bVar13 = (byte)(uVar10 >> 8)" identifier = (call_expression "(byte)(uVar10 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar10 >> 8)" ( (binary_expression "uVar10 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (uVar10 < 0x10000) goto LAB_0008030c;" if (parenthesized_expression "(uVar10 < 0x10000)" ( (binary_expression "uVar10 < 0x10000" identifier < number_literal) )) (goto_statement "goto LAB_0008030c;" goto statement_identifier ;)) (expression_statement "pbVar9[2] = bVar8;" (assignment_expression "pbVar9[2] = bVar8" (subscript_expression "pbVar9[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;" (assignment_expression "pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) = (binary_expression "(byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28" (call_expression "(byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar10 - 0x10000) * 0x1000 >> 0x1e)" ( (binary_expression "(uVar10 - 0x10000) * 0x1000 >> 0x1e" (binary_expression "(uVar10 - 0x10000) * 0x1000" (parenthesized_expression "(uVar10 - 0x10000)" ( (binary_expression "uVar10 - 0x10000" identifier - number_literal) )) * number_literal) >> number_literal) ))) - number_literal)) ;) (expression_statement "*pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;" (assignment_expression "*pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0" (pointer_expression "*pbVar9" * identifier) = (binary_expression "bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0" (binary_expression "bVar13 >> 2" identifier >> number_literal) | (binary_expression "(byte)(uVar10 - 0x10000 >> 10) & 0xc0" (call_expression "(byte)(uVar10 - 0x10000 >> 10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar10 - 0x10000 >> 10)" ( (binary_expression "uVar10 - 0x10000 >> 10" (binary_expression "uVar10 - 0x10000" identifier - number_literal) >> number_literal) ))) & number_literal))) ;) (expression_statement "pbVar15 = pbVar9 + 4;" (assignment_expression "pbVar15 = pbVar9 + 4" identifier = (binary_expression "pbVar9 + 4" identifier + number_literal)) ;) (expression_statement "pbVar9[3] = (bVar13 & 3) - 0x24;" (assignment_expression "pbVar9[3] = (bVar13 & 3) - 0x24" (subscript_expression "pbVar9[3]" identifier [ number_literal ]) = (binary_expression "(bVar13 & 3) - 0x24" (parenthesized_expression "(bVar13 & 3)" ( (binary_expression "bVar13 & 3" identifier & number_literal) )) - number_literal)) ;) }))) (expression_statement "iVar14 = (int)pbVar15 - (int)pbVar5;" (assignment_expression "iVar14 = (int)pbVar15 - (int)pbVar5" identifier = (binary_expression "(int)pbVar15 - (int)pbVar5" (cast_expression "(int)pbVar15" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pbVar9 = pbVar15;" (assignment_expression "pbVar9 = pbVar15" identifier = identifier) ;) (expression_statement "pbVar16 = pbVar11;" (assignment_expression "pbVar16 = pbVar11" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar11 < pbVar17)" ( (binary_expression "pbVar11 < pbVar17" identifier < identifier) )) ;) })) }) (else_clause "else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }" else (compound_statement "{\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }" { (expression_statement "pbVar9 = pbVar5;" (assignment_expression "pbVar9 = pbVar5" identifier = identifier) ;) (if_statement "if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }" if (parenthesized_expression "(pbVar17 <= pbVar16)" ( (binary_expression "pbVar17 <= pbVar16" identifier <= identifier) )) (compound_statement "{\n        iVar14 = 0;\n      }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }" else (compound_statement "{\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }" { (do_statement "do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);" do (compound_statement "{\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        }" { (while_statement "while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }" { (expression_statement "bVar8 = *pbVar16;" (assignment_expression "bVar8 = *pbVar16" identifier = (pointer_expression "*pbVar16" * identifier)) ;) (expression_statement "pbVar11 = pbVar16 + 1;" (assignment_expression "pbVar11 = pbVar16 + 1" identifier = (binary_expression "pbVar16 + 1" identifier + number_literal)) ;) (if_statement "if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }" if (parenthesized_expression "(bVar8 < 0xc0)" ( (binary_expression "bVar8 < 0xc0" identifier < number_literal) )) (compound_statement "{\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }" { (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000801d8;" goto statement_identifier ;) })) (expression_statement "bVar8 = puVar3[bVar8 - 0x3f94];" (assignment_expression "bVar8 = puVar3[bVar8 - 0x3f94]" identifier = (subscript_expression "puVar3[bVar8 - 0x3f94]" identifier [ (binary_expression "bVar8 - 0x3f94" identifier - number_literal) ])) ;) (if_statement "if (pbVar17 != pbVar11) break;" if (parenthesized_expression "(pbVar17 != pbVar11)" ( (binary_expression "pbVar17 != pbVar11" identifier != identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00080538:\n            bVar13 = 0xff;" statement_identifier : (expression_statement "bVar13 = 0xff;" (assignment_expression "bVar13 = 0xff" identifier = number_literal) ;)) (if_statement "if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }" if (parenthesized_expression "(bVar8 < 0x80)" ( (binary_expression "bVar8 < 0x80" identifier < number_literal) )) (compound_statement "{\n              bVar8 = 0xfd;\n            }" { (expression_statement "bVar8 = 0xfd;" (assignment_expression "bVar8 = 0xfd" identifier = number_literal) ;) }) (else_clause "else {\n              bVar13 = 0;\n            }" else (compound_statement "{\n              bVar13 = 0;\n            }" { (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) }))) (labeled_statement "LAB_000801d8:\n            *pbVar9 = bVar13;" statement_identifier : (expression_statement "*pbVar9 = bVar13;" (assignment_expression "*pbVar9 = bVar13" (pointer_expression "*pbVar9" * identifier) = identifier) ;)) (expression_statement "pbVar9[1] = bVar8;" (assignment_expression "pbVar9[1] = bVar8" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pbVar15 = pbVar9 + 2;" (assignment_expression "pbVar15 = pbVar9 + 2" identifier = (binary_expression "pbVar9 + 2" identifier + number_literal)) ;) (expression_statement "pbVar9 = pbVar15;" (assignment_expression "pbVar9 = pbVar15" identifier = identifier) ;) (expression_statement "pbVar16 = pbVar11;" (assignment_expression "pbVar16 = pbVar11" identifier = identifier) ;) (if_statement "if (pbVar17 <= pbVar11) goto LAB_000802c0;" if (parenthesized_expression "(pbVar17 <= pbVar11)" ( (binary_expression "pbVar17 <= pbVar11" identifier <= identifier) )) (goto_statement "goto LAB_000802c0;" goto statement_identifier ;)) })) (expression_statement "uVar4 = (uint)pbVar16[1];" (assignment_expression "uVar4 = (uint)pbVar16[1]" identifier = (cast_expression "(uint)pbVar16[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar14 = (uint)bVar8 << 6;" (assignment_expression "iVar14 = (uint)bVar8 << 6" identifier = (binary_expression "(uint)bVar8 << 6" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal)) ;) (if_statement "if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;" if (parenthesized_expression "((uVar4 & 0xffffffc0) != 0x80)" ( (binary_expression "(uVar4 & 0xffffffc0) != 0x80" (parenthesized_expression "(uVar4 & 0xffffffc0)" ( (binary_expression "uVar4 & 0xffffffc0" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00080538;" goto statement_identifier ;)) (while_statement "while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }" { (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "uVar10 = (uVar4 & 0x3f) + iVar14;" (assignment_expression "uVar10 = (uVar4 & 0x3f) + iVar14" identifier = (binary_expression "(uVar4 & 0x3f) + iVar14" (parenthesized_expression "(uVar4 & 0x3f)" ( (binary_expression "uVar4 & 0x3f" identifier & number_literal) )) + identifier)) ;) (if_statement "if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;" if (parenthesized_expression "((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))" ( (binary_expression "(pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80)" (parenthesized_expression "(pbVar17 == pbVar11)" ( (binary_expression "pbVar17 == pbVar11" identifier == identifier) )) || (parenthesized_expression "(uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80)" ( (comma_expression "uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80" (assignment_expression "uVar4 = (uint)*pbVar11" identifier = (binary_expression "(uint)*pbVar11" (parenthesized_expression "(uint)" ( identifier )) * identifier)) , (binary_expression "(uVar4 & 0xffffffc0) != 0x80" (parenthesized_expression "(uVar4 & 0xffffffc0)" ( (binary_expression "uVar4 & 0xffffffc0" identifier & number_literal) )) != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar14 = uVar10 * 0x40;" (assignment_expression "iVar14 = uVar10 * 0x40" identifier = (binary_expression "uVar10 * 0x40" identifier * number_literal)) ;) })) (if_statement "if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }" if (parenthesized_expression "((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe))))" ( (binary_expression "(uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))" (parenthesized_expression "(uVar10 < 0x80)" ( (binary_expression "uVar10 < 0x80" identifier < number_literal) )) || (parenthesized_expression "(((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))" ( (parenthesized_expression "((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe))" ( (binary_expression "(uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)" (binary_expression "(uVar10 & 0xfffff800) == 0xd800" (parenthesized_expression "(uVar10 & 0xfffff800)" ( (binary_expression "uVar10 & 0xfffff800" identifier & number_literal) )) == number_literal) || (parenthesized_expression "((uVar10 & 0xfffffffe) == 0xfffe)" ( (binary_expression "(uVar10 & 0xfffffffe) == 0xfffe" (parenthesized_expression "(uVar10 & 0xfffffffe)" ( (binary_expression "uVar10 & 0xfffffffe" identifier & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }" { (expression_statement "bVar8 = 0xfd;" (assignment_expression "bVar8 = 0xfd" identifier = number_literal) ;) (expression_statement "bVar13 = 0xff;" (assignment_expression "bVar13 = 0xff" identifier = number_literal) ;) (goto_statement "goto LAB_000801d8;" goto statement_identifier ;) })) (expression_statement "bVar13 = (byte)(uVar10 >> 8);" (assignment_expression "bVar13 = (byte)(uVar10 >> 8)" identifier = (call_expression "(byte)(uVar10 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar10 >> 8)" ( (binary_expression "uVar10 >> 8" identifier >> number_literal) )))) ;) (expression_statement "bVar8 = (byte)uVar10;" (assignment_expression "bVar8 = (byte)uVar10" identifier = (cast_expression "(byte)uVar10" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (uVar10 < 0x10000) goto LAB_000801d8;" if (parenthesized_expression "(uVar10 < 0x10000)" ( (binary_expression "uVar10 < 0x10000" identifier < number_literal) )) (goto_statement "goto LAB_000801d8;" goto statement_identifier ;)) (expression_statement "pbVar9[3] = bVar8;" (assignment_expression "pbVar9[3] = bVar8" (subscript_expression "pbVar9[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;" (assignment_expression "*pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28" (pointer_expression "*pbVar9" * identifier) = (binary_expression "(byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28" (call_expression "(byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar10 - 0x10000) * 0x1000 >> 0x1e)" ( (binary_expression "(uVar10 - 0x10000) * 0x1000 >> 0x1e" (binary_expression "(uVar10 - 0x10000) * 0x1000" (parenthesized_expression "(uVar10 - 0x10000)" ( (binary_expression "uVar10 - 0x10000" identifier - number_literal) )) * number_literal) >> number_literal) ))) - number_literal)) ;) (expression_statement "pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;" (assignment_expression "pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) = (binary_expression "bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0" (binary_expression "bVar13 >> 2" identifier >> number_literal) | (binary_expression "(byte)(uVar10 - 0x10000 >> 10) & 0xc0" (call_expression "(byte)(uVar10 - 0x10000 >> 10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar10 - 0x10000 >> 10)" ( (binary_expression "uVar10 - 0x10000 >> 10" (binary_expression "uVar10 - 0x10000" identifier - number_literal) >> number_literal) ))) & number_literal))) ;) (expression_statement "pbVar15 = pbVar9 + 4;" (assignment_expression "pbVar15 = pbVar9 + 4" identifier = (binary_expression "pbVar9 + 4" identifier + number_literal)) ;) (expression_statement "pbVar9[2] = (bVar13 & 3) - 0x24;" (assignment_expression "pbVar9[2] = (bVar13 & 3) - 0x24" (subscript_expression "pbVar9[2]" identifier [ number_literal ]) = (binary_expression "(bVar13 & 3) - 0x24" (parenthesized_expression "(bVar13 & 3)" ( (binary_expression "bVar13 & 3" identifier & number_literal) )) - number_literal)) ;) (expression_statement "pbVar9 = pbVar15;" (assignment_expression "pbVar9 = pbVar15" identifier = identifier) ;) (expression_statement "pbVar16 = pbVar11;" (assignment_expression "pbVar16 = pbVar11" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar11 < pbVar17)" ( (binary_expression "pbVar11 < pbVar17" identifier < identifier) )) ;) (labeled_statement "LAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;" statement_identifier : (expression_statement "iVar14 = (int)pbVar15 - (int)pbVar5;" (assignment_expression "iVar14 = (int)pbVar15 - (int)pbVar5" identifier = (binary_expression "(int)pbVar15 - (int)pbVar5" (cast_expression "(int)pbVar15" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;)) }))) }))) (expression_statement "*(int *)(param_1 + 0xc) = iVar14;" (assignment_expression "*(int *)(param_1 + 0xc) = iVar14" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar9 = pbVar15 + 1;" (assignment_expression "pbVar9 = pbVar15 + 1" identifier = (binary_expression "pbVar15 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar15 = 0;" (assignment_expression "*pbVar15 = 0" (pointer_expression "*pbVar15" * identifier) = number_literal) ;) }) (else_clause "else {\n    pbVar9 = pbVar5;\n    if (*(char *)(param_1 + 10) == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    *(int *)(param_1 + 0xc) = iVar14;\n  }" else (compound_statement "{\n    pbVar9 = pbVar5;\n    if (*(char *)(param_1 + 10) == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    *(int *)(param_1 + 0xc) = iVar14;\n  }" { (expression_statement "pbVar9 = pbVar5;" (assignment_expression "pbVar9 = pbVar5" identifier = identifier) ;) (if_statement "if (*(char *)(param_1 + 10) == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }" if (parenthesized_expression "(*(char *)(param_1 + 10) == '\x02')" ( (binary_expression "*(char *)(param_1 + 10) == '\x02'" (pointer_expression "*(char *)(param_1 + 10)" * (cast_expression "(char *)(param_1 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }" { (expression_statement "pbVar15 = pbVar5;" (assignment_expression "pbVar15 = pbVar5" identifier = identifier) ;) (if_statement "if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }" if (parenthesized_expression "(pbVar17 <= pbVar16)" ( (binary_expression "pbVar17 <= pbVar16" identifier <= identifier) )) (compound_statement "{\n        iVar14 = 0;\n      }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }" else (compound_statement "{\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }" { (do_statement "do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);" do (compound_statement "{\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        }" { (expression_statement "uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;" (assignment_expression "uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16" identifier = (binary_expression "(uint)pbVar16[1] * 0x100 + (uint)*pbVar16" (binary_expression "(uint)pbVar16[1] * 0x100" (cast_expression "(uint)pbVar16[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[1]" identifier [ number_literal ])) * number_literal) + (binary_expression "(uint)*pbVar16" (parenthesized_expression "(uint)" ( identifier )) * identifier))) ;) (expression_statement "pbVar11 = pbVar16 + 2;" (assignment_expression "pbVar11 = pbVar16 + 2" identifier = (binary_expression "pbVar16 + 2" identifier + number_literal)) ;) (expression_statement "bVar8 = (byte)uVar4;" (assignment_expression "bVar8 = (byte)uVar4" identifier = (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }" if (parenthesized_expression "(uVar4 - 0xd800 < 0x800)" ( (binary_expression "uVar4 - 0xd800 < 0x800" (binary_expression "uVar4 - 0xd800" identifier - number_literal) < number_literal) )) (compound_statement "{\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }" { (if_statement "if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }" if (parenthesized_expression "(pbVar11 < pbVar17)" ( (binary_expression "pbVar11 < pbVar17" identifier < identifier) )) (compound_statement "{\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }" { (expression_statement "iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);" (assignment_expression "iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff)" identifier = (binary_expression "((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff)" (parenthesized_expression "((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff)" ( (binary_expression "(uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff" (binary_expression "(uint)pbVar16[3] * 0x100 + (uint)pbVar16[2]" (binary_expression "(uint)pbVar16[3] * 0x100" (cast_expression "(uint)pbVar16[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[3]" identifier [ number_literal ])) * number_literal) + (cast_expression "(uint)pbVar16[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[2]" identifier [ number_literal ]))) & number_literal) )) + (parenthesized_expression "(uVar4 * 0x400 & 0xffff)" ( (binary_expression "uVar4 * 0x400 & 0xffff" (binary_expression "uVar4 * 0x400" identifier * number_literal) & number_literal) )))) ;) (expression_statement "pbVar9 = pbVar15 + 4;" (assignment_expression "pbVar9 = pbVar15 + 4" identifier = (binary_expression "pbVar15 + 4" identifier + number_literal)) ;) (expression_statement "uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;" (assignment_expression "uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400" identifier = (binary_expression "iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400" identifier + (binary_expression "((uVar4 & 0x3c0) + 0x40) * 0x400" (parenthesized_expression "((uVar4 & 0x3c0) + 0x40)" ( (binary_expression "(uVar4 & 0x3c0) + 0x40" (parenthesized_expression "(uVar4 & 0x3c0)" ( (binary_expression "uVar4 & 0x3c0" identifier & number_literal) )) + number_literal) )) * number_literal))) ;) (expression_statement "pbVar11 = pbVar16 + 4;" (assignment_expression "pbVar11 = pbVar16 + 4" identifier = (binary_expression "pbVar16 + 4" identifier + number_literal)) ;) (expression_statement "*pbVar15 = (char)(uVar4 >> 0x12) - 0x10;" (assignment_expression "*pbVar15 = (char)(uVar4 >> 0x12) - 0x10" (pointer_expression "*pbVar15" * identifier) = (binary_expression "(char)(uVar4 >> 0x12) - 0x10" (cast_expression "(char)(uVar4 >> 0x12)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar4 >> 0x12)" ( (binary_expression "uVar4 >> 0x12" identifier >> number_literal) ))) - number_literal)) ;) (expression_statement "pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;" (assignment_expression "pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80" (subscript_expression "pbVar15[1]" identifier [ number_literal ]) = (binary_expression "(byte)(uVar4 * 0x4000 >> 0x1a) + 0x80" (call_expression "(byte)(uVar4 * 0x4000 >> 0x1a)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar4 * 0x4000 >> 0x1a)" ( (binary_expression "uVar4 * 0x4000 >> 0x1a" (binary_expression "uVar4 * 0x4000" identifier * number_literal) >> number_literal) ))) + number_literal)) ;) (expression_statement "pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;" (assignment_expression "pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80" (subscript_expression "pbVar15[2]" identifier [ number_literal ]) = (binary_expression "(byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80" (call_expression "(byte)((uint)(iVar14 * 0x100000) >> 0x1a)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)(iVar14 * 0x100000) >> 0x1a)" ( (binary_expression "(uint)(iVar14 * 0x100000) >> 0x1a" (call_expression "(uint)(iVar14 * 0x100000)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar14 * 0x100000)" ( (binary_expression "iVar14 * 0x100000" identifier * number_literal) ))) >> number_literal) ))) + number_literal)) ;) (expression_statement "pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;" (assignment_expression "pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80" (subscript_expression "pbVar15[3]" identifier [ number_literal ]) = (binary_expression "((byte)uVar4 & 0x3f) + 0x80" (parenthesized_expression "((byte)uVar4 & 0x3f)" ( (binary_expression "(byte)uVar4 & 0x3f" (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) + number_literal)) ;) }) (else_clause "else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }" else (compound_statement "{\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }" { (labeled_statement "LAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;" statement_identifier : (expression_statement "*pbVar15 = (char)(uVar4 >> 0xc) - 0x20;" (assignment_expression "*pbVar15 = (char)(uVar4 >> 0xc) - 0x20" (pointer_expression "*pbVar15" * identifier) = (binary_expression "(char)(uVar4 >> 0xc) - 0x20" (cast_expression "(char)(uVar4 >> 0xc)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar4 >> 0xc)" ( (binary_expression "uVar4 >> 0xc" identifier >> number_literal) ))) - number_literal)) ;)) (expression_statement "pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;" (assignment_expression "pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80" (subscript_expression "pbVar15[1]" identifier [ number_literal ]) = (binary_expression "((byte)(uVar4 >> 6) & 0x3f) + 0x80" (parenthesized_expression "((byte)(uVar4 >> 6) & 0x3f)" ( (binary_expression "(byte)(uVar4 >> 6) & 0x3f" (call_expression "(byte)(uVar4 >> 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar4 >> 6)" ( (binary_expression "uVar4 >> 6" identifier >> number_literal) ))) & number_literal) )) + number_literal)) ;) (expression_statement "pbVar9 = pbVar15 + 3;" (assignment_expression "pbVar9 = pbVar15 + 3" identifier = (binary_expression "pbVar15 + 3" identifier + number_literal)) ;) (expression_statement "pbVar15[2] = (bVar8 & 0x3f) + 0x80;" (assignment_expression "pbVar15[2] = (bVar8 & 0x3f) + 0x80" (subscript_expression "pbVar15[2]" identifier [ number_literal ]) = (binary_expression "(bVar8 & 0x3f) + 0x80" (parenthesized_expression "(bVar8 & 0x3f)" ( (binary_expression "bVar8 & 0x3f" identifier & number_literal) )) + number_literal)) ;) }))) }) (else_clause "else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }" else (if_statement "if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }" if (parenthesized_expression "(uVar4 < 0x80)" ( (binary_expression "uVar4 < 0x80" identifier < number_literal) )) (compound_statement "{\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }" { (expression_statement "*pbVar15 = bVar8;" (assignment_expression "*pbVar15 = bVar8" (pointer_expression "*pbVar15" * identifier) = identifier) ;) (expression_statement "pbVar9 = pbVar15 + 1;" (assignment_expression "pbVar9 = pbVar15 + 1" identifier = (binary_expression "pbVar15 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }" else (compound_statement "{\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }" { (if_statement "if (0x7ff < uVar4) goto LAB_00080454;" if (parenthesized_expression "(0x7ff < uVar4)" ( (binary_expression "0x7ff < uVar4" number_literal < identifier) )) (goto_statement "goto LAB_00080454;" goto statement_identifier ;)) (expression_statement "pbVar15[1] = bVar8 & 0x3f | 0x80;" (assignment_expression "pbVar15[1] = bVar8 & 0x3f | 0x80" (subscript_expression "pbVar15[1]" identifier [ number_literal ]) = (binary_expression "bVar8 & 0x3f | 0x80" (binary_expression "bVar8 & 0x3f" identifier & number_literal) | number_literal)) ;) (expression_statement "*pbVar15 = (char)(uVar4 >> 6) - 0x40;" (assignment_expression "*pbVar15 = (char)(uVar4 >> 6) - 0x40" (pointer_expression "*pbVar15" * identifier) = (binary_expression "(char)(uVar4 >> 6) - 0x40" (cast_expression "(char)(uVar4 >> 6)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar4 >> 6)" ( (binary_expression "uVar4 >> 6" identifier >> number_literal) ))) - number_literal)) ;) (expression_statement "pbVar9 = pbVar15 + 2;" (assignment_expression "pbVar9 = pbVar15 + 2" identifier = (binary_expression "pbVar15 + 2" identifier + number_literal)) ;) }))))) (expression_statement "iVar14 = (int)pbVar9 - (int)pbVar5;" (assignment_expression "iVar14 = (int)pbVar9 - (int)pbVar5" identifier = (binary_expression "(int)pbVar9 - (int)pbVar5" (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pbVar15 = pbVar9;" (assignment_expression "pbVar15 = pbVar9" identifier = identifier) ;) (expression_statement "pbVar16 = pbVar11;" (assignment_expression "pbVar16 = pbVar11" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar11 < pbVar17)" ( (binary_expression "pbVar11 < pbVar17" identifier < identifier) )) ;) }))) }) (else_clause "else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }" else (if_statement "if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }" if (parenthesized_expression "(pbVar17 <= pbVar16)" ( (binary_expression "pbVar17 <= pbVar16" identifier <= identifier) )) (compound_statement "{\n      iVar14 = 0;\n    }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }" else (compound_statement "{\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }" { (do_statement "do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);" do (compound_statement "{\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      }" { (while_statement "while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }" { (expression_statement "uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;" (assignment_expression "uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100" identifier = (binary_expression "(uint)pbVar16[1] + (uint)*pbVar16 * 0x100" (cast_expression "(uint)pbVar16[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[1]" identifier [ number_literal ])) + (binary_expression "(uint)*pbVar16 * 0x100" (binary_expression "(uint)*pbVar16" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal))) ;) (expression_statement "pbVar15 = pbVar16 + 2;" (assignment_expression "pbVar15 = pbVar16 + 2" identifier = (binary_expression "pbVar16 + 2" identifier + number_literal)) ;) (expression_statement "bVar8 = (byte)uVar4;" (assignment_expression "bVar8 = (byte)uVar4" identifier = (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (0x7ff < uVar4 - 0xd800) break;" if (parenthesized_expression "(0x7ff < uVar4 - 0xd800)" ( (binary_expression "0x7ff < uVar4 - 0xd800" number_literal < (binary_expression "uVar4 - 0xd800" identifier - number_literal)) )) (break_statement "break;" break ;)) (if_statement "if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }" if (parenthesized_expression "(pbVar15 < pbVar17)" ( (binary_expression "pbVar15 < pbVar17" identifier < identifier) )) (compound_statement "{\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }" { (expression_statement "iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);" (assignment_expression "iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff)" identifier = (binary_expression "((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff)" (parenthesized_expression "((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff)" ( (binary_expression "(uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff" (binary_expression "(uint)pbVar16[3] + (uint)pbVar16[2] * 0x100" (cast_expression "(uint)pbVar16[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[3]" identifier [ number_literal ])) + (binary_expression "(uint)pbVar16[2] * 0x100" (cast_expression "(uint)pbVar16[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[2]" identifier [ number_literal ])) * number_literal)) & number_literal) )) + (parenthesized_expression "(uVar4 * 0x400 & 0xffff)" ( (binary_expression "uVar4 * 0x400 & 0xffff" (binary_expression "uVar4 * 0x400" identifier * number_literal) & number_literal) )))) ;) (expression_statement "pbVar11 = pbVar9 + 4;" (assignment_expression "pbVar11 = pbVar9 + 4" identifier = (binary_expression "pbVar9 + 4" identifier + number_literal)) ;) (expression_statement "uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;" (assignment_expression "uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400" identifier = (binary_expression "iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400" identifier + (binary_expression "((uVar4 & 0x3c0) + 0x40) * 0x400" (parenthesized_expression "((uVar4 & 0x3c0) + 0x40)" ( (binary_expression "(uVar4 & 0x3c0) + 0x40" (parenthesized_expression "(uVar4 & 0x3c0)" ( (binary_expression "uVar4 & 0x3c0" identifier & number_literal) )) + number_literal) )) * number_literal))) ;) (expression_statement "pbVar15 = pbVar16 + 4;" (assignment_expression "pbVar15 = pbVar16 + 4" identifier = (binary_expression "pbVar16 + 4" identifier + number_literal)) ;) (expression_statement "*pbVar9 = (char)(uVar4 >> 0x12) - 0x10;" (assignment_expression "*pbVar9 = (char)(uVar4 >> 0x12) - 0x10" (pointer_expression "*pbVar9" * identifier) = (binary_expression "(char)(uVar4 >> 0x12) - 0x10" (cast_expression "(char)(uVar4 >> 0x12)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar4 >> 0x12)" ( (binary_expression "uVar4 >> 0x12" identifier >> number_literal) ))) - number_literal)) ;) (expression_statement "pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;" (assignment_expression "pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) = (binary_expression "(byte)(uVar4 * 0x4000 >> 0x1a) + 0x80" (call_expression "(byte)(uVar4 * 0x4000 >> 0x1a)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar4 * 0x4000 >> 0x1a)" ( (binary_expression "uVar4 * 0x4000 >> 0x1a" (binary_expression "uVar4 * 0x4000" identifier * number_literal) >> number_literal) ))) + number_literal)) ;) (expression_statement "pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;" (assignment_expression "pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80" (subscript_expression "pbVar9[2]" identifier [ number_literal ]) = (binary_expression "(byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80" (call_expression "(byte)((uint)(iVar14 * 0x100000) >> 0x1a)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)(iVar14 * 0x100000) >> 0x1a)" ( (binary_expression "(uint)(iVar14 * 0x100000) >> 0x1a" (call_expression "(uint)(iVar14 * 0x100000)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar14 * 0x100000)" ( (binary_expression "iVar14 * 0x100000" identifier * number_literal) ))) >> number_literal) ))) + number_literal)) ;) (expression_statement "pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;" (assignment_expression "pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80" (subscript_expression "pbVar9[3]" identifier [ number_literal ]) = (binary_expression "((byte)uVar4 & 0x3f) + 0x80" (parenthesized_expression "((byte)uVar4 & 0x3f)" ( (binary_expression "(byte)uVar4 & 0x3f" (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) + number_literal)) ;) }) (else_clause "else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }" else (compound_statement "{\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }" { (labeled_statement "LAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;" statement_identifier : (expression_statement "*pbVar9 = (char)(uVar4 >> 0xc) - 0x20;" (assignment_expression "*pbVar9 = (char)(uVar4 >> 0xc) - 0x20" (pointer_expression "*pbVar9" * identifier) = (binary_expression "(char)(uVar4 >> 0xc) - 0x20" (cast_expression "(char)(uVar4 >> 0xc)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar4 >> 0xc)" ( (binary_expression "uVar4 >> 0xc" identifier >> number_literal) ))) - number_literal)) ;)) (expression_statement "pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;" (assignment_expression "pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) = (binary_expression "((byte)(uVar4 >> 6) & 0x3f) + 0x80" (parenthesized_expression "((byte)(uVar4 >> 6) & 0x3f)" ( (binary_expression "(byte)(uVar4 >> 6) & 0x3f" (call_expression "(byte)(uVar4 >> 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar4 >> 6)" ( (binary_expression "uVar4 >> 6" identifier >> number_literal) ))) & number_literal) )) + number_literal)) ;) (expression_statement "pbVar11 = pbVar9 + 3;" (assignment_expression "pbVar11 = pbVar9 + 3" identifier = (binary_expression "pbVar9 + 3" identifier + number_literal)) ;) (expression_statement "pbVar9[2] = (bVar8 & 0x3f) + 0x80;" (assignment_expression "pbVar9[2] = (bVar8 & 0x3f) + 0x80" (subscript_expression "pbVar9[2]" identifier [ number_literal ]) = (binary_expression "(bVar8 & 0x3f) + 0x80" (parenthesized_expression "(bVar8 & 0x3f)" ( (binary_expression "bVar8 & 0x3f" identifier & number_literal) )) + number_literal)) ;) }))) (labeled_statement "LAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;" statement_identifier : (expression_statement "iVar14 = (int)pbVar11 - (int)pbVar5;" (assignment_expression "iVar14 = (int)pbVar11 - (int)pbVar5" identifier = (binary_expression "(int)pbVar11 - (int)pbVar5" (cast_expression "(int)pbVar11" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;)) (expression_statement "pbVar9 = pbVar11;" (assignment_expression "pbVar9 = pbVar11" identifier = identifier) ;) (expression_statement "pbVar16 = pbVar15;" (assignment_expression "pbVar16 = pbVar15" identifier = identifier) ;) (if_statement "if (pbVar17 <= pbVar15) goto LAB_00080014;" if (parenthesized_expression "(pbVar17 <= pbVar15)" ( (binary_expression "pbVar17 <= pbVar15" identifier <= identifier) )) (goto_statement "goto LAB_00080014;" goto statement_identifier ;)) })) (if_statement "if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }" if (parenthesized_expression "(0x7f < uVar4)" ( (binary_expression "0x7f < uVar4" number_literal < identifier) )) (compound_statement "{\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }" { (if_statement "if (0x7ff < uVar4) goto LAB_0007ff98;" if (parenthesized_expression "(0x7ff < uVar4)" ( (binary_expression "0x7ff < uVar4" number_literal < identifier) )) (goto_statement "goto LAB_0007ff98;" goto statement_identifier ;)) (expression_statement "pbVar9[1] = bVar8 & 0x3f | 0x80;" (assignment_expression "pbVar9[1] = bVar8 & 0x3f | 0x80" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) = (binary_expression "bVar8 & 0x3f | 0x80" (binary_expression "bVar8 & 0x3f" identifier & number_literal) | number_literal)) ;) (expression_statement "*pbVar9 = (char)(uVar4 >> 6) - 0x40;" (assignment_expression "*pbVar9 = (char)(uVar4 >> 6) - 0x40" (pointer_expression "*pbVar9" * identifier) = (binary_expression "(char)(uVar4 >> 6) - 0x40" (cast_expression "(char)(uVar4 >> 6)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar4 >> 6)" ( (binary_expression "uVar4 >> 6" identifier >> number_literal) ))) - number_literal)) ;) (expression_statement "pbVar11 = pbVar9 + 2;" (assignment_expression "pbVar11 = pbVar9 + 2" identifier = (binary_expression "pbVar9 + 2" identifier + number_literal)) ;) (goto_statement "goto LAB_0007ffc4;" goto statement_identifier ;) })) (expression_statement "*pbVar9 = bVar8;" (assignment_expression "*pbVar9 = bVar8" (pointer_expression "*pbVar9" * identifier) = identifier) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "pbVar16 = pbVar15;" (assignment_expression "pbVar16 = pbVar15" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar15 < pbVar17)" ( (binary_expression "pbVar15 < pbVar17" identifier < identifier) )) ;) (expression_statement "iVar14 = (int)pbVar9 - (int)pbVar5;" (assignment_expression "iVar14 = (int)pbVar9 - (int)pbVar5" identifier = (binary_expression "(int)pbVar9 - (int)pbVar5" (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))))) (labeled_statement "LAB_00080014:\n    *(int *)(param_1 + 0xc) = iVar14;" statement_identifier : (expression_statement "*(int *)(param_1 + 0xc) = iVar14;" (assignment_expression "*(int *)(param_1 + 0xc) = iVar14" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;)) }))) (expression_statement "*pbVar9 = 0;" (assignment_expression "*pbVar9 = 0" (pointer_expression "*pbVar9" * identifier) = number_literal) ;) (expression_statement "uVar2 = *(ushort *)(param_1 + 8);" (assignment_expression "uVar2 = *(ushort *)(param_1 + 8)" identifier = (pointer_expression "*(ushort *)(param_1 + 8)" * (cast_expression "(ushort *)(param_1 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (((uVar2 & 0x2400) != 0) || (*(int *)(param_1 + 0x18) != 0)) {\n    (*(code *)(PTR_LAB_00190ba8 + -0x1e58))(param_1);\n  }" if (parenthesized_expression "(((uVar2 & 0x2400) != 0) || (*(int *)(param_1 + 0x18) != 0))" ( (binary_expression "((uVar2 & 0x2400) != 0) || (*(int *)(param_1 + 0x18) != 0)" (parenthesized_expression "((uVar2 & 0x2400) != 0)" ( (binary_expression "(uVar2 & 0x2400) != 0" (parenthesized_expression "(uVar2 & 0x2400)" ( (binary_expression "uVar2 & 0x2400" identifier & number_literal) )) != number_literal) )) || (parenthesized_expression "(*(int *)(param_1 + 0x18) != 0)" ( (binary_expression "*(int *)(param_1 + 0x18) != 0" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n    (*(code *)(PTR_LAB_00190ba8 + -0x1e58))(param_1);\n  }" { (expression_statement "(*(code *)(PTR_LAB_00190ba8 + -0x1e58))(param_1);" (call_expression "(*(code *)(PTR_LAB_00190ba8 + -0x1e58))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba8 + -0x1e58))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba8 + -0x1e58)" * (cast_expression "(code *)(PTR_LAB_00190ba8 + -0x1e58)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba8 + -0x1e58)" ( (binary_expression "PTR_LAB_00190ba8 + -0x1e58" identifier + number_literal) )))) )) (argument_list "(param_1)" ( identifier ))) ;) })) (expression_statement "puVar3 = PTR_DAT_00190948;" (assignment_expression "puVar3 = PTR_DAT_00190948" identifier = identifier) ;) (expression_statement "*(char *)(param_1 + 10) = (char)param_2;" (assignment_expression "*(char *)(param_1 + 10) = (char)param_2" (pointer_expression "*(char *)(param_1 + 10)" * (cast_expression "(char *)(param_1 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) = (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(ushort *)(param_1 + 8) = uVar2 & 0x801d | 0x202;" (assignment_expression "*(ushort *)(param_1 + 8) = uVar2 & 0x801d | 0x202" (pointer_expression "*(ushort *)(param_1 + 8)" * (cast_expression "(ushort *)(param_1 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "uVar2 & 0x801d | 0x202" (binary_expression "uVar2 & 0x801d" identifier & number_literal) | number_literal)) ;) (expression_statement "*(byte **)(param_1 + 0x10) = pbVar5;" (assignment_expression "*(byte **)(param_1 + 0x10) = pbVar5" (pointer_expression "*(byte **)(param_1 + 0x10)" * (cast_expression "(byte **)(param_1 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(param_1 + 0x14) = pbVar5;" (assignment_expression "*(byte **)(param_1 + 0x14) = pbVar5" (pointer_expression "*(byte **)(param_1 + 0x14)" * (cast_expression "(byte **)(param_1 + 0x14)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar6 = (**(code **)(puVar3 + -0xb40))(pbVar5);" (assignment_expression "uVar6 = (**(code **)(puVar3 + -0xb40))(pbVar5)" identifier = (call_expression "(**(code **)(puVar3 + -0xb40))(pbVar5)" (parenthesized_expression "(**(code **)(puVar3 + -0xb40))" ( (pointer_expression "**(code **)(puVar3 + -0xb40)" * (pointer_expression "*(code **)(puVar3 + -0xb40)" * (cast_expression "(code **)(puVar3 + -0xb40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0xb40)" ( (binary_expression "puVar3 + -0xb40" identifier + number_literal) ))))) )) (argument_list "(pbVar5)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x18) = uVar6;" (assignment_expression "*(undefined4 *)(param_1 + 0x18) = uVar6" (pointer_expression "*(undefined4 *)(param_1 + 0x18)" * (cast_expression "(undefined4 *)(param_1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = identifier) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "int sqlite3VdbeMemTranslate(Mem *pMem,u8 desiredEnc)\n\n{\n  char cVar1;\n  ushort uVar2;\n  undefined *puVar3;\n  uint uVar4;\n  byte *pbVar5;\n  int iVar6;\n  char *pcVar7;\n  byte bVar8;\n  byte *pbVar9;\n  uint uVar10;\n  byte *pbVar11;\n  undefined3 in_register_00000014;\n  char *pcVar12;\n  byte bVar13;\n  int iVar14;\n  byte *pbVar15;\n  byte *pbVar16;\n  byte *pbVar17;\n  \n  iVar6 = CONCAT31(in_register_00000014,desiredEnc);\n  if (pMem->enc == '\x01') {\n    uVar4 = pMem->n;\n    if (iVar6 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }\n  }\n  else {\n    if (iVar6 != 1) {\n      iVar6 = sqlite3VdbeMemMakeWriteable(pMem);\n      if (iVar6 != 0) {\n        return 7;\n      }\n      pcVar7 = pMem->z;\n      pcVar12 = pcVar7 + (pMem->n & 0xfffffffe);\n      for (; pcVar7 < pcVar12; pcVar7 = pcVar7 + 2) {\n        cVar1 = *pcVar7;\n        *pcVar7 = pcVar7[1];\n        pcVar7[1] = cVar1;\n      }\n      pMem->enc = desiredEnc;\n      return 0;\n    }\n    uVar4 = pMem->n;\n  }\n  uVar4 = uVar4 & 0xfffffffe;\n  pMem->n = uVar4;\n  iVar14 = uVar4 * 2 + 1;\nLAB_0007ff34:\n  pbVar16 = (byte *)pMem->z;\n  pbVar5 = (byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))(pMem->db,iVar6,iVar14 >> 0x1f);\n  puVar3 = PTR_DAT_00190b94;\n  pbVar17 = pbVar16 + uVar4;\n  if (pbVar5 == (byte *)0x0) {\n    return 7;\n  }\n  if (pMem->enc == '\x01') {\n    pbVar15 = pbVar5;\n    if (iVar6 == 2) {\n      iVar6 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar6 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar6;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar6 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar6 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar6 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar6 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar6;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar6 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar6 = (int)pbVar15 - (int)pbVar5;\n      }\n    }\n    pMem->n = iVar6;\n    pbVar9 = pbVar15 + 1;\n    *pbVar15 = 0;\n  }\n  else {\n    pbVar9 = pbVar5;\n    if (pMem->enc == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar6 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar6 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                      (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar6 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar6 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar6 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) + (uVar4 * 0x400 & 0xffff)\n            ;\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar6 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar6 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    pMem->n = iVar6;\n  }\n  *pbVar9 = 0;\n  uVar2 = pMem->flags;\n  if (((uVar2 & 0x2400) != 0) || (pMem->szMalloc != 0)) {\n    (*(code *)(PTR_LAB_00190ba8 + -0x1e58))(pMem);\n  }\n  puVar3 = PTR_aBuiltinFunc_29540_1408__00190948;\n  pMem->enc = desiredEnc;\n  pMem->flags = uVar2 & 0x801d | 0x202;\n  pMem->z = (char *)pbVar5;\n  pMem->zMalloc = (char *)pbVar5;\n  iVar6 = (**(code **)(puVar3 + -0xb40))(pbVar5);\n  pMem->szMalloc = iVar6;\n  return 0;\n}\n\n" (function_definition "int sqlite3VdbeMemTranslate(Mem *pMem,u8 desiredEnc)\n\n{\n  char cVar1;\n  ushort uVar2;\n  undefined *puVar3;\n  uint uVar4;\n  byte *pbVar5;\n  int iVar6;\n  char *pcVar7;\n  byte bVar8;\n  byte *pbVar9;\n  uint uVar10;\n  byte *pbVar11;\n  undefined3 in_register_00000014;\n  char *pcVar12;\n  byte bVar13;\n  int iVar14;\n  byte *pbVar15;\n  byte *pbVar16;\n  byte *pbVar17;\n  \n  iVar6 = CONCAT31(in_register_00000014,desiredEnc);\n  if (pMem->enc == '\x01') {\n    uVar4 = pMem->n;\n    if (iVar6 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }\n  }\n  else {\n    if (iVar6 != 1) {\n      iVar6 = sqlite3VdbeMemMakeWriteable(pMem);\n      if (iVar6 != 0) {\n        return 7;\n      }\n      pcVar7 = pMem->z;\n      pcVar12 = pcVar7 + (pMem->n & 0xfffffffe);\n      for (; pcVar7 < pcVar12; pcVar7 = pcVar7 + 2) {\n        cVar1 = *pcVar7;\n        *pcVar7 = pcVar7[1];\n        pcVar7[1] = cVar1;\n      }\n      pMem->enc = desiredEnc;\n      return 0;\n    }\n    uVar4 = pMem->n;\n  }\n  uVar4 = uVar4 & 0xfffffffe;\n  pMem->n = uVar4;\n  iVar14 = uVar4 * 2 + 1;\nLAB_0007ff34:\n  pbVar16 = (byte *)pMem->z;\n  pbVar5 = (byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))(pMem->db,iVar6,iVar14 >> 0x1f);\n  puVar3 = PTR_DAT_00190b94;\n  pbVar17 = pbVar16 + uVar4;\n  if (pbVar5 == (byte *)0x0) {\n    return 7;\n  }\n  if (pMem->enc == '\x01') {\n    pbVar15 = pbVar5;\n    if (iVar6 == 2) {\n      iVar6 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar6 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar6;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar6 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar6 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar6 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar6 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar6;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar6 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar6 = (int)pbVar15 - (int)pbVar5;\n      }\n    }\n    pMem->n = iVar6;\n    pbVar9 = pbVar15 + 1;\n    *pbVar15 = 0;\n  }\n  else {\n    pbVar9 = pbVar5;\n    if (pMem->enc == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar6 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar6 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                      (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar6 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar6 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar6 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) + (uVar4 * 0x400 & 0xffff)\n            ;\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar6 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar6 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    pMem->n = iVar6;\n  }\n  *pbVar9 = 0;\n  uVar2 = pMem->flags;\n  if (((uVar2 & 0x2400) != 0) || (pMem->szMalloc != 0)) {\n    (*(code *)(PTR_LAB_00190ba8 + -0x1e58))(pMem);\n  }\n  puVar3 = PTR_aBuiltinFunc_29540_1408__00190948;\n  pMem->enc = desiredEnc;\n  pMem->flags = uVar2 & 0x801d | 0x202;\n  pMem->z = (char *)pbVar5;\n  pMem->zMalloc = (char *)pbVar5;\n  iVar6 = (**(code **)(puVar3 + -0xb40))(pbVar5);\n  pMem->szMalloc = iVar6;\n  return 0;\n}" primitive_type (function_declarator "sqlite3VdbeMemTranslate(Mem *pMem,u8 desiredEnc)" identifier (parameter_list "(Mem *pMem,u8 desiredEnc)" ( (parameter_declaration "Mem *pMem" type_identifier (pointer_declarator "*pMem" * identifier)) , (parameter_declaration "u8 desiredEnc" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  ushort uVar2;\n  undefined *puVar3;\n  uint uVar4;\n  byte *pbVar5;\n  int iVar6;\n  char *pcVar7;\n  byte bVar8;\n  byte *pbVar9;\n  uint uVar10;\n  byte *pbVar11;\n  undefined3 in_register_00000014;\n  char *pcVar12;\n  byte bVar13;\n  int iVar14;\n  byte *pbVar15;\n  byte *pbVar16;\n  byte *pbVar17;\n  \n  iVar6 = CONCAT31(in_register_00000014,desiredEnc);\n  if (pMem->enc == '\x01') {\n    uVar4 = pMem->n;\n    if (iVar6 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }\n  }\n  else {\n    if (iVar6 != 1) {\n      iVar6 = sqlite3VdbeMemMakeWriteable(pMem);\n      if (iVar6 != 0) {\n        return 7;\n      }\n      pcVar7 = pMem->z;\n      pcVar12 = pcVar7 + (pMem->n & 0xfffffffe);\n      for (; pcVar7 < pcVar12; pcVar7 = pcVar7 + 2) {\n        cVar1 = *pcVar7;\n        *pcVar7 = pcVar7[1];\n        pcVar7[1] = cVar1;\n      }\n      pMem->enc = desiredEnc;\n      return 0;\n    }\n    uVar4 = pMem->n;\n  }\n  uVar4 = uVar4 & 0xfffffffe;\n  pMem->n = uVar4;\n  iVar14 = uVar4 * 2 + 1;\nLAB_0007ff34:\n  pbVar16 = (byte *)pMem->z;\n  pbVar5 = (byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))(pMem->db,iVar6,iVar14 >> 0x1f);\n  puVar3 = PTR_DAT_00190b94;\n  pbVar17 = pbVar16 + uVar4;\n  if (pbVar5 == (byte *)0x0) {\n    return 7;\n  }\n  if (pMem->enc == '\x01') {\n    pbVar15 = pbVar5;\n    if (iVar6 == 2) {\n      iVar6 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar6 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar6;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar6 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar6 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar6 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar6 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar6;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar6 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar6 = (int)pbVar15 - (int)pbVar5;\n      }\n    }\n    pMem->n = iVar6;\n    pbVar9 = pbVar15 + 1;\n    *pbVar15 = 0;\n  }\n  else {\n    pbVar9 = pbVar5;\n    if (pMem->enc == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar6 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar6 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                      (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar6 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar6 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar6 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) + (uVar4 * 0x400 & 0xffff)\n            ;\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar6 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar6 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    pMem->n = iVar6;\n  }\n  *pbVar9 = 0;\n  uVar2 = pMem->flags;\n  if (((uVar2 & 0x2400) != 0) || (pMem->szMalloc != 0)) {\n    (*(code *)(PTR_LAB_00190ba8 + -0x1e58))(pMem);\n  }\n  puVar3 = PTR_aBuiltinFunc_29540_1408__00190948;\n  pMem->enc = desiredEnc;\n  pMem->flags = uVar2 & 0x801d | 0x202;\n  pMem->z = (char *)pbVar5;\n  pMem->zMalloc = (char *)pbVar5;\n  iVar6 = (**(code **)(puVar3 + -0xb40))(pbVar5);\n  pMem->szMalloc = iVar6;\n  return 0;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "undefined3 in_register_00000014;" type_identifier identifier ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "byte *pbVar15;" type_identifier (pointer_declarator "*pbVar15" * identifier) ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (expression_statement "iVar6 = CONCAT31(in_register_00000014,desiredEnc);" (assignment_expression "iVar6 = CONCAT31(in_register_00000014,desiredEnc)" identifier = (call_expression "CONCAT31(in_register_00000014,desiredEnc)" identifier (argument_list "(in_register_00000014,desiredEnc)" ( identifier , identifier )))) ;) (if_statement "if (pMem->enc == '\x01') {\n    uVar4 = pMem->n;\n    if (iVar6 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }\n  }\n  else {\n    if (iVar6 != 1) {\n      iVar6 = sqlite3VdbeMemMakeWriteable(pMem);\n      if (iVar6 != 0) {\n        return 7;\n      }\n      pcVar7 = pMem->z;\n      pcVar12 = pcVar7 + (pMem->n & 0xfffffffe);\n      for (; pcVar7 < pcVar12; pcVar7 = pcVar7 + 2) {\n        cVar1 = *pcVar7;\n        *pcVar7 = pcVar7[1];\n        pcVar7[1] = cVar1;\n      }\n      pMem->enc = desiredEnc;\n      return 0;\n    }\n    uVar4 = pMem->n;\n  }" if (parenthesized_expression "(pMem->enc == '\x01')" ( (binary_expression "pMem->enc == '\x01'" (field_expression "pMem->enc" identifier -> field_identifier) == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n    uVar4 = pMem->n;\n    if (iVar6 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }\n  }" { (expression_statement "uVar4 = pMem->n;" (assignment_expression "uVar4 = pMem->n" identifier = (field_expression "pMem->n" identifier -> field_identifier)) ;) (if_statement "if (iVar6 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }" if (parenthesized_expression "(iVar6 != 1)" ( (binary_expression "iVar6 != 1" identifier != number_literal) )) (compound_statement "{\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }" { (expression_statement "iVar14 = (uVar4 + 1) * 2;" (assignment_expression "iVar14 = (uVar4 + 1) * 2" identifier = (binary_expression "(uVar4 + 1) * 2" (parenthesized_expression "(uVar4 + 1)" ( (binary_expression "uVar4 + 1" identifier + number_literal) )) * number_literal)) ;) (goto_statement "goto LAB_0007ff34;" goto statement_identifier ;) })) }) (else_clause "else {\n    if (iVar6 != 1) {\n      iVar6 = sqlite3VdbeMemMakeWriteable(pMem);\n      if (iVar6 != 0) {\n        return 7;\n      }\n      pcVar7 = pMem->z;\n      pcVar12 = pcVar7 + (pMem->n & 0xfffffffe);\n      for (; pcVar7 < pcVar12; pcVar7 = pcVar7 + 2) {\n        cVar1 = *pcVar7;\n        *pcVar7 = pcVar7[1];\n        pcVar7[1] = cVar1;\n      }\n      pMem->enc = desiredEnc;\n      return 0;\n    }\n    uVar4 = pMem->n;\n  }" else (compound_statement "{\n    if (iVar6 != 1) {\n      iVar6 = sqlite3VdbeMemMakeWriteable(pMem);\n      if (iVar6 != 0) {\n        return 7;\n      }\n      pcVar7 = pMem->z;\n      pcVar12 = pcVar7 + (pMem->n & 0xfffffffe);\n      for (; pcVar7 < pcVar12; pcVar7 = pcVar7 + 2) {\n        cVar1 = *pcVar7;\n        *pcVar7 = pcVar7[1];\n        pcVar7[1] = cVar1;\n      }\n      pMem->enc = desiredEnc;\n      return 0;\n    }\n    uVar4 = pMem->n;\n  }" { (if_statement "if (iVar6 != 1) {\n      iVar6 = sqlite3VdbeMemMakeWriteable(pMem);\n      if (iVar6 != 0) {\n        return 7;\n      }\n      pcVar7 = pMem->z;\n      pcVar12 = pcVar7 + (pMem->n & 0xfffffffe);\n      for (; pcVar7 < pcVar12; pcVar7 = pcVar7 + 2) {\n        cVar1 = *pcVar7;\n        *pcVar7 = pcVar7[1];\n        pcVar7[1] = cVar1;\n      }\n      pMem->enc = desiredEnc;\n      return 0;\n    }" if (parenthesized_expression "(iVar6 != 1)" ( (binary_expression "iVar6 != 1" identifier != number_literal) )) (compound_statement "{\n      iVar6 = sqlite3VdbeMemMakeWriteable(pMem);\n      if (iVar6 != 0) {\n        return 7;\n      }\n      pcVar7 = pMem->z;\n      pcVar12 = pcVar7 + (pMem->n & 0xfffffffe);\n      for (; pcVar7 < pcVar12; pcVar7 = pcVar7 + 2) {\n        cVar1 = *pcVar7;\n        *pcVar7 = pcVar7[1];\n        pcVar7[1] = cVar1;\n      }\n      pMem->enc = desiredEnc;\n      return 0;\n    }" { (expression_statement "iVar6 = sqlite3VdbeMemMakeWriteable(pMem);" (assignment_expression "iVar6 = sqlite3VdbeMemMakeWriteable(pMem)" identifier = (call_expression "sqlite3VdbeMemMakeWriteable(pMem)" identifier (argument_list "(pMem)" ( identifier )))) ;) (if_statement "if (iVar6 != 0) {\n        return 7;\n      }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n        return 7;\n      }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "pcVar7 = pMem->z;" (assignment_expression "pcVar7 = pMem->z" identifier = (field_expression "pMem->z" identifier -> field_identifier)) ;) (expression_statement "pcVar12 = pcVar7 + (pMem->n & 0xfffffffe);" (assignment_expression "pcVar12 = pcVar7 + (pMem->n & 0xfffffffe)" identifier = (binary_expression "pcVar7 + (pMem->n & 0xfffffffe)" identifier + (parenthesized_expression "(pMem->n & 0xfffffffe)" ( (binary_expression "pMem->n & 0xfffffffe" (field_expression "pMem->n" identifier -> field_identifier) & number_literal) )))) ;) (for_statement "for (; pcVar7 < pcVar12; pcVar7 = pcVar7 + 2) {\n        cVar1 = *pcVar7;\n        *pcVar7 = pcVar7[1];\n        pcVar7[1] = cVar1;\n      }" for ( ; (binary_expression "pcVar7 < pcVar12" identifier < identifier) ; (assignment_expression "pcVar7 = pcVar7 + 2" identifier = (binary_expression "pcVar7 + 2" identifier + number_literal)) ) (compound_statement "{\n        cVar1 = *pcVar7;\n        *pcVar7 = pcVar7[1];\n        pcVar7[1] = cVar1;\n      }" { (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "*pcVar7 = pcVar7[1];" (assignment_expression "*pcVar7 = pcVar7[1]" (pointer_expression "*pcVar7" * identifier) = (subscript_expression "pcVar7[1]" identifier [ number_literal ])) ;) (expression_statement "pcVar7[1] = cVar1;" (assignment_expression "pcVar7[1] = cVar1" (subscript_expression "pcVar7[1]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "pMem->enc = desiredEnc;" (assignment_expression "pMem->enc = desiredEnc" (field_expression "pMem->enc" identifier -> field_identifier) = identifier) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar4 = pMem->n;" (assignment_expression "uVar4 = pMem->n" identifier = (field_expression "pMem->n" identifier -> field_identifier)) ;) }))) (expression_statement "uVar4 = uVar4 & 0xfffffffe;" (assignment_expression "uVar4 = uVar4 & 0xfffffffe" identifier = (binary_expression "uVar4 & 0xfffffffe" identifier & number_literal)) ;) (expression_statement "pMem->n = uVar4;" (assignment_expression "pMem->n = uVar4" (field_expression "pMem->n" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar14 = uVar4 * 2 + 1;" (assignment_expression "iVar14 = uVar4 * 2 + 1" identifier = (binary_expression "uVar4 * 2 + 1" (binary_expression "uVar4 * 2" identifier * number_literal) + number_literal)) ;) (labeled_statement "LAB_0007ff34:\n  pbVar16 = (byte *)pMem->z;" statement_identifier : (expression_statement "pbVar16 = (byte *)pMem->z;" (assignment_expression "pbVar16 = (byte *)pMem->z" identifier = (cast_expression "(byte *)pMem->z" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pMem->z" identifier -> field_identifier))) ;)) (expression_statement "pbVar5 = (byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))(pMem->db,iVar6,iVar14 >> 0x1f);" (assignment_expression "pbVar5 = (byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))(pMem->db,iVar6,iVar14 >> 0x1f)" identifier = (cast_expression "(byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))(pMem->db,iVar6,iVar14 >> 0x1f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(PTR_LAB_00190ba8 + 0x8e0))(pMem->db,iVar6,iVar14 >> 0x1f)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba8 + 0x8e0))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba8 + 0x8e0)" * (cast_expression "(code *)(PTR_LAB_00190ba8 + 0x8e0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba8 + 0x8e0)" ( (binary_expression "PTR_LAB_00190ba8 + 0x8e0" identifier + number_literal) )))) )) (argument_list "(pMem->db,iVar6,iVar14 >> 0x1f)" ( (field_expression "pMem->db" identifier -> field_identifier) , identifier , (binary_expression "iVar14 >> 0x1f" identifier >> number_literal) ))))) ;) (expression_statement "puVar3 = PTR_DAT_00190b94;" (assignment_expression "puVar3 = PTR_DAT_00190b94" identifier = identifier) ;) (expression_statement "pbVar17 = pbVar16 + uVar4;" (assignment_expression "pbVar17 = pbVar16 + uVar4" identifier = (binary_expression "pbVar16 + uVar4" identifier + identifier)) ;) (if_statement "if (pbVar5 == (byte *)0x0) {\n    return 7;\n  }" if (parenthesized_expression "(pbVar5 == (byte *)0x0)" ( (binary_expression "pbVar5 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 7;\n  }" { (return_statement "return 7;" return number_literal ;) })) (if_statement "if (pMem->enc == '\x01') {\n    pbVar15 = pbVar5;\n    if (iVar6 == 2) {\n      iVar6 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar6 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar6;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar6 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar6 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar6 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar6 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar6;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar6 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar6 = (int)pbVar15 - (int)pbVar5;\n      }\n    }\n    pMem->n = iVar6;\n    pbVar9 = pbVar15 + 1;\n    *pbVar15 = 0;\n  }\n  else {\n    pbVar9 = pbVar5;\n    if (pMem->enc == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar6 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar6 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                      (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar6 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar6 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar6 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) + (uVar4 * 0x400 & 0xffff)\n            ;\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar6 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar6 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    pMem->n = iVar6;\n  }" if (parenthesized_expression "(pMem->enc == '\x01')" ( (binary_expression "pMem->enc == '\x01'" (field_expression "pMem->enc" identifier -> field_identifier) == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n    pbVar15 = pbVar5;\n    if (iVar6 == 2) {\n      iVar6 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar6 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar6;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar6 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar6 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar6 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar6 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar6;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar6 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar6 = (int)pbVar15 - (int)pbVar5;\n      }\n    }\n    pMem->n = iVar6;\n    pbVar9 = pbVar15 + 1;\n    *pbVar15 = 0;\n  }" { (expression_statement "pbVar15 = pbVar5;" (assignment_expression "pbVar15 = pbVar5" identifier = identifier) ;) (if_statement "if (iVar6 == 2) {\n      iVar6 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar6 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar6;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar6 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar6 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar6 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar6 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar6;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar6 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar6 = (int)pbVar15 - (int)pbVar5;\n      }\n    }" if (parenthesized_expression "(iVar6 == 2)" ( (binary_expression "iVar6 == 2" identifier == number_literal) )) (compound_statement "{\n      iVar6 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar6 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar6;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar6 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar6 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "pbVar9 = pbVar5;" (assignment_expression "pbVar9 = pbVar5" identifier = identifier) ;) (if_statement "if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar6 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar6;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar6 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar6 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }" if (parenthesized_expression "(pbVar17 > pbVar16)" ( (binary_expression "pbVar17 > pbVar16" identifier > identifier) )) (compound_statement "{\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar6 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar6;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar6 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar6 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }" { (do_statement "do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar6 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar6;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar6 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar6 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);" do (compound_statement "{\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar6 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar6;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar6 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar6 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        }" { (expression_statement "bVar8 = *pbVar16;" (assignment_expression "bVar8 = *pbVar16" identifier = (pointer_expression "*pbVar16" * identifier)) ;) (expression_statement "pbVar11 = pbVar16 + 1;" (assignment_expression "pbVar11 = pbVar16 + 1" identifier = (binary_expression "pbVar16 + 1" identifier + number_literal)) ;) (if_statement "if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }" if (parenthesized_expression "(bVar8 < 0xc0)" ( (binary_expression "bVar8 < 0xc0" identifier < number_literal) )) (compound_statement "{\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }" { (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0008030c;" goto statement_identifier ;) })) (expression_statement "bVar8 = puVar3[bVar8 - 0x3f94];" (assignment_expression "bVar8 = puVar3[bVar8 - 0x3f94]" identifier = (subscript_expression "puVar3[bVar8 - 0x3f94]" identifier [ (binary_expression "bVar8 - 0x3f94" identifier - number_literal) ])) ;) (if_statement "if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar6 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar6;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar6 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }" if (parenthesized_expression "(pbVar17 == pbVar11)" ( (binary_expression "pbVar17 == pbVar11" identifier == identifier) )) (compound_statement "{\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }" { (labeled_statement "LAB_00080558:\n            bVar13 = 0xff;" statement_identifier : (expression_statement "bVar13 = 0xff;" (assignment_expression "bVar13 = 0xff" identifier = number_literal) ;)) (if_statement "if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }" if (parenthesized_expression "(bVar8 < 0x80)" ( (binary_expression "bVar8 < 0x80" identifier < number_literal) )) (compound_statement "{\n              bVar8 = 0xfd;\n            }" { (expression_statement "bVar8 = 0xfd;" (assignment_expression "bVar8 = 0xfd" identifier = number_literal) ;) }) (else_clause "else {\n              bVar13 = 0;\n            }" else (compound_statement "{\n              bVar13 = 0;\n            }" { (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) }))) (labeled_statement "LAB_0008030c:\n            *pbVar9 = bVar8;" statement_identifier : (expression_statement "*pbVar9 = bVar8;" (assignment_expression "*pbVar9 = bVar8" (pointer_expression "*pbVar9" * identifier) = identifier) ;)) (expression_statement "pbVar15 = pbVar9 + 2;" (assignment_expression "pbVar15 = pbVar9 + 2" identifier = (binary_expression "pbVar9 + 2" identifier + number_literal)) ;) (expression_statement "pbVar9[1] = bVar13;" (assignment_expression "pbVar9[1] = bVar13" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            uVar4 = (uint)pbVar16[1];\n            iVar6 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar6;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar6 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }" else (compound_statement "{\n            uVar4 = (uint)pbVar16[1];\n            iVar6 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar6;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar6 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }" { (expression_statement "uVar4 = (uint)pbVar16[1];" (assignment_expression "uVar4 = (uint)pbVar16[1]" identifier = (cast_expression "(uint)pbVar16[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar6 = (uint)bVar8 << 6;" (assignment_expression "iVar6 = (uint)bVar8 << 6" identifier = (binary_expression "(uint)bVar8 << 6" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal)) ;) (if_statement "if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;" if (parenthesized_expression "((uVar4 & 0xffffffc0) != 0x80)" ( (binary_expression "(uVar4 & 0xffffffc0) != 0x80" (parenthesized_expression "(uVar4 & 0xffffffc0)" ( (binary_expression "uVar4 & 0xffffffc0" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00080558;" goto statement_identifier ;)) (while_statement "while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar6;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar6 = uVar10 * 0x40;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar6;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar6 = uVar10 * 0x40;\n            }" { (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "uVar10 = (uVar4 & 0x3f) + iVar6;" (assignment_expression "uVar10 = (uVar4 & 0x3f) + iVar6" identifier = (binary_expression "(uVar4 & 0x3f) + iVar6" (parenthesized_expression "(uVar4 & 0x3f)" ( (binary_expression "uVar4 & 0x3f" identifier & number_literal) )) + identifier)) ;) (if_statement "if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;" if (parenthesized_expression "((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))" ( (binary_expression "(pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80)" (parenthesized_expression "(pbVar17 == pbVar11)" ( (binary_expression "pbVar17 == pbVar11" identifier == identifier) )) || (parenthesized_expression "(uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80)" ( (comma_expression "uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80" (assignment_expression "uVar4 = (uint)*pbVar11" identifier = (binary_expression "(uint)*pbVar11" (parenthesized_expression "(uint)" ( identifier )) * identifier)) , (binary_expression "(uVar4 & 0xffffffc0) != 0x80" (parenthesized_expression "(uVar4 & 0xffffffc0)" ( (binary_expression "uVar4 & 0xffffffc0" identifier & number_literal) )) != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = uVar10 * 0x40;" (assignment_expression "iVar6 = uVar10 * 0x40" identifier = (binary_expression "uVar10 * 0x40" identifier * number_literal)) ;) })) (if_statement "if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }" if (parenthesized_expression "((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe))))" ( (binary_expression "(uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))" (parenthesized_expression "(uVar10 < 0x80)" ( (binary_expression "uVar10 < 0x80" identifier < number_literal) )) || (parenthesized_expression "(((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))" ( (parenthesized_expression "((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe))" ( (binary_expression "(uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)" (binary_expression "(uVar10 & 0xfffff800) == 0xd800" (parenthesized_expression "(uVar10 & 0xfffff800)" ( (binary_expression "uVar10 & 0xfffff800" identifier & number_literal) )) == number_literal) || (parenthesized_expression "((uVar10 & 0xfffffffe) == 0xfffe)" ( (binary_expression "(uVar10 & 0xfffffffe) == 0xfffe" (parenthesized_expression "(uVar10 & 0xfffffffe)" ( (binary_expression "uVar10 & 0xfffffffe" identifier & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }" { (expression_statement "bVar13 = 0xff;" (assignment_expression "bVar13 = 0xff" identifier = number_literal) ;) (expression_statement "bVar8 = 0xfd;" (assignment_expression "bVar8 = 0xfd" identifier = number_literal) ;) (goto_statement "goto LAB_0008030c;" goto statement_identifier ;) })) (expression_statement "bVar8 = (byte)uVar10;" (assignment_expression "bVar8 = (byte)uVar10" identifier = (cast_expression "(byte)uVar10" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar13 = (byte)(uVar10 >> 8);" (assignment_expression "bVar13 = (byte)(uVar10 >> 8)" identifier = (call_expression "(byte)(uVar10 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar10 >> 8)" ( (binary_expression "uVar10 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (uVar10 < 0x10000) goto LAB_0008030c;" if (parenthesized_expression "(uVar10 < 0x10000)" ( (binary_expression "uVar10 < 0x10000" identifier < number_literal) )) (goto_statement "goto LAB_0008030c;" goto statement_identifier ;)) (expression_statement "pbVar9[2] = bVar8;" (assignment_expression "pbVar9[2] = bVar8" (subscript_expression "pbVar9[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;" (assignment_expression "pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) = (binary_expression "(byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28" (call_expression "(byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar10 - 0x10000) * 0x1000 >> 0x1e)" ( (binary_expression "(uVar10 - 0x10000) * 0x1000 >> 0x1e" (binary_expression "(uVar10 - 0x10000) * 0x1000" (parenthesized_expression "(uVar10 - 0x10000)" ( (binary_expression "uVar10 - 0x10000" identifier - number_literal) )) * number_literal) >> number_literal) ))) - number_literal)) ;) (expression_statement "*pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;" (assignment_expression "*pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0" (pointer_expression "*pbVar9" * identifier) = (binary_expression "bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0" (binary_expression "bVar13 >> 2" identifier >> number_literal) | (binary_expression "(byte)(uVar10 - 0x10000 >> 10) & 0xc0" (call_expression "(byte)(uVar10 - 0x10000 >> 10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar10 - 0x10000 >> 10)" ( (binary_expression "uVar10 - 0x10000 >> 10" (binary_expression "uVar10 - 0x10000" identifier - number_literal) >> number_literal) ))) & number_literal))) ;) (expression_statement "pbVar15 = pbVar9 + 4;" (assignment_expression "pbVar15 = pbVar9 + 4" identifier = (binary_expression "pbVar9 + 4" identifier + number_literal)) ;) (expression_statement "pbVar9[3] = (bVar13 & 3) - 0x24;" (assignment_expression "pbVar9[3] = (bVar13 & 3) - 0x24" (subscript_expression "pbVar9[3]" identifier [ number_literal ]) = (binary_expression "(bVar13 & 3) - 0x24" (parenthesized_expression "(bVar13 & 3)" ( (binary_expression "bVar13 & 3" identifier & number_literal) )) - number_literal)) ;) }))) (expression_statement "iVar6 = (int)pbVar15 - (int)pbVar5;" (assignment_expression "iVar6 = (int)pbVar15 - (int)pbVar5" identifier = (binary_expression "(int)pbVar15 - (int)pbVar5" (cast_expression "(int)pbVar15" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pbVar9 = pbVar15;" (assignment_expression "pbVar9 = pbVar15" identifier = identifier) ;) (expression_statement "pbVar16 = pbVar11;" (assignment_expression "pbVar16 = pbVar11" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar11 < pbVar17)" ( (binary_expression "pbVar11 < pbVar17" identifier < identifier) )) ;) })) }) (else_clause "else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar6 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar6 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar6;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar6 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar6 = (int)pbVar15 - (int)pbVar5;\n      }\n    }" else (compound_statement "{\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar6 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar6 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar6;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar6 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar6 = (int)pbVar15 - (int)pbVar5;\n      }\n    }" { (expression_statement "pbVar9 = pbVar5;" (assignment_expression "pbVar9 = pbVar5" identifier = identifier) ;) (if_statement "if (pbVar17 <= pbVar16) {\n        iVar6 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar6 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar6;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar6 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar6 = (int)pbVar15 - (int)pbVar5;\n      }" if (parenthesized_expression "(pbVar17 <= pbVar16)" ( (binary_expression "pbVar17 <= pbVar16" identifier <= identifier) )) (compound_statement "{\n        iVar6 = 0;\n      }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar6 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar6;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar6 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar6 = (int)pbVar15 - (int)pbVar5;\n      }" else (compound_statement "{\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar6 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar6;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar6 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar6 = (int)pbVar15 - (int)pbVar5;\n      }" { (do_statement "do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar6 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar6;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar6 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);" do (compound_statement "{\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar6 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar6;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar6 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        }" { (while_statement "while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }" { (expression_statement "bVar8 = *pbVar16;" (assignment_expression "bVar8 = *pbVar16" identifier = (pointer_expression "*pbVar16" * identifier)) ;) (expression_statement "pbVar11 = pbVar16 + 1;" (assignment_expression "pbVar11 = pbVar16 + 1" identifier = (binary_expression "pbVar16 + 1" identifier + number_literal)) ;) (if_statement "if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }" if (parenthesized_expression "(bVar8 < 0xc0)" ( (binary_expression "bVar8 < 0xc0" identifier < number_literal) )) (compound_statement "{\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }" { (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000801d8;" goto statement_identifier ;) })) (expression_statement "bVar8 = puVar3[bVar8 - 0x3f94];" (assignment_expression "bVar8 = puVar3[bVar8 - 0x3f94]" identifier = (subscript_expression "puVar3[bVar8 - 0x3f94]" identifier [ (binary_expression "bVar8 - 0x3f94" identifier - number_literal) ])) ;) (if_statement "if (pbVar17 != pbVar11) break;" if (parenthesized_expression "(pbVar17 != pbVar11)" ( (binary_expression "pbVar17 != pbVar11" identifier != identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00080538:\n            bVar13 = 0xff;" statement_identifier : (expression_statement "bVar13 = 0xff;" (assignment_expression "bVar13 = 0xff" identifier = number_literal) ;)) (if_statement "if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }" if (parenthesized_expression "(bVar8 < 0x80)" ( (binary_expression "bVar8 < 0x80" identifier < number_literal) )) (compound_statement "{\n              bVar8 = 0xfd;\n            }" { (expression_statement "bVar8 = 0xfd;" (assignment_expression "bVar8 = 0xfd" identifier = number_literal) ;) }) (else_clause "else {\n              bVar13 = 0;\n            }" else (compound_statement "{\n              bVar13 = 0;\n            }" { (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) }))) (labeled_statement "LAB_000801d8:\n            *pbVar9 = bVar13;" statement_identifier : (expression_statement "*pbVar9 = bVar13;" (assignment_expression "*pbVar9 = bVar13" (pointer_expression "*pbVar9" * identifier) = identifier) ;)) (expression_statement "pbVar9[1] = bVar8;" (assignment_expression "pbVar9[1] = bVar8" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pbVar15 = pbVar9 + 2;" (assignment_expression "pbVar15 = pbVar9 + 2" identifier = (binary_expression "pbVar9 + 2" identifier + number_literal)) ;) (expression_statement "pbVar9 = pbVar15;" (assignment_expression "pbVar9 = pbVar15" identifier = identifier) ;) (expression_statement "pbVar16 = pbVar11;" (assignment_expression "pbVar16 = pbVar11" identifier = identifier) ;) (if_statement "if (pbVar17 <= pbVar11) goto LAB_000802c0;" if (parenthesized_expression "(pbVar17 <= pbVar11)" ( (binary_expression "pbVar17 <= pbVar11" identifier <= identifier) )) (goto_statement "goto LAB_000802c0;" goto statement_identifier ;)) })) (expression_statement "uVar4 = (uint)pbVar16[1];" (assignment_expression "uVar4 = (uint)pbVar16[1]" identifier = (cast_expression "(uint)pbVar16[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar6 = (uint)bVar8 << 6;" (assignment_expression "iVar6 = (uint)bVar8 << 6" identifier = (binary_expression "(uint)bVar8 << 6" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal)) ;) (if_statement "if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;" if (parenthesized_expression "((uVar4 & 0xffffffc0) != 0x80)" ( (binary_expression "(uVar4 & 0xffffffc0) != 0x80" (parenthesized_expression "(uVar4 & 0xffffffc0)" ( (binary_expression "uVar4 & 0xffffffc0" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00080538;" goto statement_identifier ;)) (while_statement "while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar6;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar6 = uVar10 * 0x40;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar6;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar6 = uVar10 * 0x40;\n          }" { (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "uVar10 = (uVar4 & 0x3f) + iVar6;" (assignment_expression "uVar10 = (uVar4 & 0x3f) + iVar6" identifier = (binary_expression "(uVar4 & 0x3f) + iVar6" (parenthesized_expression "(uVar4 & 0x3f)" ( (binary_expression "uVar4 & 0x3f" identifier & number_literal) )) + identifier)) ;) (if_statement "if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;" if (parenthesized_expression "((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))" ( (binary_expression "(pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80)" (parenthesized_expression "(pbVar17 == pbVar11)" ( (binary_expression "pbVar17 == pbVar11" identifier == identifier) )) || (parenthesized_expression "(uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80)" ( (comma_expression "uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80" (assignment_expression "uVar4 = (uint)*pbVar11" identifier = (binary_expression "(uint)*pbVar11" (parenthesized_expression "(uint)" ( identifier )) * identifier)) , (binary_expression "(uVar4 & 0xffffffc0) != 0x80" (parenthesized_expression "(uVar4 & 0xffffffc0)" ( (binary_expression "uVar4 & 0xffffffc0" identifier & number_literal) )) != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = uVar10 * 0x40;" (assignment_expression "iVar6 = uVar10 * 0x40" identifier = (binary_expression "uVar10 * 0x40" identifier * number_literal)) ;) })) (if_statement "if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }" if (parenthesized_expression "((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe))))" ( (binary_expression "(uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))" (parenthesized_expression "(uVar10 < 0x80)" ( (binary_expression "uVar10 < 0x80" identifier < number_literal) )) || (parenthesized_expression "(((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))" ( (parenthesized_expression "((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe))" ( (binary_expression "(uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)" (binary_expression "(uVar10 & 0xfffff800) == 0xd800" (parenthesized_expression "(uVar10 & 0xfffff800)" ( (binary_expression "uVar10 & 0xfffff800" identifier & number_literal) )) == number_literal) || (parenthesized_expression "((uVar10 & 0xfffffffe) == 0xfffe)" ( (binary_expression "(uVar10 & 0xfffffffe) == 0xfffe" (parenthesized_expression "(uVar10 & 0xfffffffe)" ( (binary_expression "uVar10 & 0xfffffffe" identifier & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }" { (expression_statement "bVar8 = 0xfd;" (assignment_expression "bVar8 = 0xfd" identifier = number_literal) ;) (expression_statement "bVar13 = 0xff;" (assignment_expression "bVar13 = 0xff" identifier = number_literal) ;) (goto_statement "goto LAB_000801d8;" goto statement_identifier ;) })) (expression_statement "bVar13 = (byte)(uVar10 >> 8);" (assignment_expression "bVar13 = (byte)(uVar10 >> 8)" identifier = (call_expression "(byte)(uVar10 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar10 >> 8)" ( (binary_expression "uVar10 >> 8" identifier >> number_literal) )))) ;) (expression_statement "bVar8 = (byte)uVar10;" (assignment_expression "bVar8 = (byte)uVar10" identifier = (cast_expression "(byte)uVar10" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (uVar10 < 0x10000) goto LAB_000801d8;" if (parenthesized_expression "(uVar10 < 0x10000)" ( (binary_expression "uVar10 < 0x10000" identifier < number_literal) )) (goto_statement "goto LAB_000801d8;" goto statement_identifier ;)) (expression_statement "pbVar9[3] = bVar8;" (assignment_expression "pbVar9[3] = bVar8" (subscript_expression "pbVar9[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;" (assignment_expression "*pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28" (pointer_expression "*pbVar9" * identifier) = (binary_expression "(byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28" (call_expression "(byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar10 - 0x10000) * 0x1000 >> 0x1e)" ( (binary_expression "(uVar10 - 0x10000) * 0x1000 >> 0x1e" (binary_expression "(uVar10 - 0x10000) * 0x1000" (parenthesized_expression "(uVar10 - 0x10000)" ( (binary_expression "uVar10 - 0x10000" identifier - number_literal) )) * number_literal) >> number_literal) ))) - number_literal)) ;) (expression_statement "pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;" (assignment_expression "pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) = (binary_expression "bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0" (binary_expression "bVar13 >> 2" identifier >> number_literal) | (binary_expression "(byte)(uVar10 - 0x10000 >> 10) & 0xc0" (call_expression "(byte)(uVar10 - 0x10000 >> 10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar10 - 0x10000 >> 10)" ( (binary_expression "uVar10 - 0x10000 >> 10" (binary_expression "uVar10 - 0x10000" identifier - number_literal) >> number_literal) ))) & number_literal))) ;) (expression_statement "pbVar15 = pbVar9 + 4;" (assignment_expression "pbVar15 = pbVar9 + 4" identifier = (binary_expression "pbVar9 + 4" identifier + number_literal)) ;) (expression_statement "pbVar9[2] = (bVar13 & 3) - 0x24;" (assignment_expression "pbVar9[2] = (bVar13 & 3) - 0x24" (subscript_expression "pbVar9[2]" identifier [ number_literal ]) = (binary_expression "(bVar13 & 3) - 0x24" (parenthesized_expression "(bVar13 & 3)" ( (binary_expression "bVar13 & 3" identifier & number_literal) )) - number_literal)) ;) (expression_statement "pbVar9 = pbVar15;" (assignment_expression "pbVar9 = pbVar15" identifier = identifier) ;) (expression_statement "pbVar16 = pbVar11;" (assignment_expression "pbVar16 = pbVar11" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar11 < pbVar17)" ( (binary_expression "pbVar11 < pbVar17" identifier < identifier) )) ;) (labeled_statement "LAB_000802c0:\n        iVar6 = (int)pbVar15 - (int)pbVar5;" statement_identifier : (expression_statement "iVar6 = (int)pbVar15 - (int)pbVar5;" (assignment_expression "iVar6 = (int)pbVar15 - (int)pbVar5" identifier = (binary_expression "(int)pbVar15 - (int)pbVar5" (cast_expression "(int)pbVar15" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;)) }))) }))) (expression_statement "pMem->n = iVar6;" (assignment_expression "pMem->n = iVar6" (field_expression "pMem->n" identifier -> field_identifier) = identifier) ;) (expression_statement "pbVar9 = pbVar15 + 1;" (assignment_expression "pbVar9 = pbVar15 + 1" identifier = (binary_expression "pbVar15 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar15 = 0;" (assignment_expression "*pbVar15 = 0" (pointer_expression "*pbVar15" * identifier) = number_literal) ;) }) (else_clause "else {\n    pbVar9 = pbVar5;\n    if (pMem->enc == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar6 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar6 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                      (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar6 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar6 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar6 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) + (uVar4 * 0x400 & 0xffff)\n            ;\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar6 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar6 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    pMem->n = iVar6;\n  }" else (compound_statement "{\n    pbVar9 = pbVar5;\n    if (pMem->enc == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar6 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar6 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                      (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar6 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar6 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar6 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) + (uVar4 * 0x400 & 0xffff)\n            ;\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar6 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar6 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    pMem->n = iVar6;\n  }" { (expression_statement "pbVar9 = pbVar5;" (assignment_expression "pbVar9 = pbVar5" identifier = identifier) ;) (if_statement "if (pMem->enc == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar6 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar6 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                      (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar6 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar6 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar6 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) + (uVar4 * 0x400 & 0xffff)\n            ;\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar6 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar6 = (int)pbVar9 - (int)pbVar5;\n    }" if (parenthesized_expression "(pMem->enc == '\x02')" ( (binary_expression "pMem->enc == '\x02'" (field_expression "pMem->enc" identifier -> field_identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar6 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar6 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                      (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar6 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }" { (expression_statement "pbVar15 = pbVar5;" (assignment_expression "pbVar15 = pbVar5" identifier = identifier) ;) (if_statement "if (pbVar17 <= pbVar16) {\n        iVar6 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar6 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                      (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar6 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }" if (parenthesized_expression "(pbVar17 <= pbVar16)" ( (binary_expression "pbVar17 <= pbVar16" identifier <= identifier) )) (compound_statement "{\n        iVar6 = 0;\n      }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar6 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                      (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar6 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }" else (compound_statement "{\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar6 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                      (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar6 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }" { (do_statement "do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar6 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                      (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar6 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);" do (compound_statement "{\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar6 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                      (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar6 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        }" { (expression_statement "uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;" (assignment_expression "uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16" identifier = (binary_expression "(uint)pbVar16[1] * 0x100 + (uint)*pbVar16" (binary_expression "(uint)pbVar16[1] * 0x100" (cast_expression "(uint)pbVar16[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[1]" identifier [ number_literal ])) * number_literal) + (binary_expression "(uint)*pbVar16" (parenthesized_expression "(uint)" ( identifier )) * identifier))) ;) (expression_statement "pbVar11 = pbVar16 + 2;" (assignment_expression "pbVar11 = pbVar16 + 2" identifier = (binary_expression "pbVar16 + 2" identifier + number_literal)) ;) (expression_statement "bVar8 = (byte)uVar4;" (assignment_expression "bVar8 = (byte)uVar4" identifier = (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar6 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                      (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }" if (parenthesized_expression "(uVar4 - 0xd800 < 0x800)" ( (binary_expression "uVar4 - 0xd800 < 0x800" (binary_expression "uVar4 - 0xd800" identifier - number_literal) < number_literal) )) (compound_statement "{\n            if (pbVar11 < pbVar17) {\n              iVar6 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                      (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }" { (if_statement "if (pbVar11 < pbVar17) {\n              iVar6 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                      (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }" if (parenthesized_expression "(pbVar11 < pbVar17)" ( (binary_expression "pbVar11 < pbVar17" identifier < identifier) )) (compound_statement "{\n              iVar6 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                      (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }" { (expression_statement "iVar6 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                      (uVar4 * 0x400 & 0xffff);" (assignment_expression "iVar6 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                      (uVar4 * 0x400 & 0xffff)" identifier = (binary_expression "((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                      (uVar4 * 0x400 & 0xffff)" (parenthesized_expression "((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff)" ( (binary_expression "(uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff" (binary_expression "(uint)pbVar16[3] * 0x100 + (uint)pbVar16[2]" (binary_expression "(uint)pbVar16[3] * 0x100" (cast_expression "(uint)pbVar16[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[3]" identifier [ number_literal ])) * number_literal) + (cast_expression "(uint)pbVar16[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[2]" identifier [ number_literal ]))) & number_literal) )) + (parenthesized_expression "(uVar4 * 0x400 & 0xffff)" ( (binary_expression "uVar4 * 0x400 & 0xffff" (binary_expression "uVar4 * 0x400" identifier * number_literal) & number_literal) )))) ;) (expression_statement "pbVar9 = pbVar15 + 4;" (assignment_expression "pbVar9 = pbVar15 + 4" identifier = (binary_expression "pbVar15 + 4" identifier + number_literal)) ;) (expression_statement "uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;" (assignment_expression "uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400" identifier = (binary_expression "iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400" identifier + (binary_expression "((uVar4 & 0x3c0) + 0x40) * 0x400" (parenthesized_expression "((uVar4 & 0x3c0) + 0x40)" ( (binary_expression "(uVar4 & 0x3c0) + 0x40" (parenthesized_expression "(uVar4 & 0x3c0)" ( (binary_expression "uVar4 & 0x3c0" identifier & number_literal) )) + number_literal) )) * number_literal))) ;) (expression_statement "pbVar11 = pbVar16 + 4;" (assignment_expression "pbVar11 = pbVar16 + 4" identifier = (binary_expression "pbVar16 + 4" identifier + number_literal)) ;) (expression_statement "*pbVar15 = (char)(uVar4 >> 0x12) - 0x10;" (assignment_expression "*pbVar15 = (char)(uVar4 >> 0x12) - 0x10" (pointer_expression "*pbVar15" * identifier) = (binary_expression "(char)(uVar4 >> 0x12) - 0x10" (cast_expression "(char)(uVar4 >> 0x12)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar4 >> 0x12)" ( (binary_expression "uVar4 >> 0x12" identifier >> number_literal) ))) - number_literal)) ;) (expression_statement "pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;" (assignment_expression "pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80" (subscript_expression "pbVar15[1]" identifier [ number_literal ]) = (binary_expression "(byte)(uVar4 * 0x4000 >> 0x1a) + 0x80" (call_expression "(byte)(uVar4 * 0x4000 >> 0x1a)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar4 * 0x4000 >> 0x1a)" ( (binary_expression "uVar4 * 0x4000 >> 0x1a" (binary_expression "uVar4 * 0x4000" identifier * number_literal) >> number_literal) ))) + number_literal)) ;) (expression_statement "pbVar15[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;" (assignment_expression "pbVar15[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80" (subscript_expression "pbVar15[2]" identifier [ number_literal ]) = (binary_expression "(byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80" (call_expression "(byte)((uint)(iVar6 * 0x100000) >> 0x1a)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)(iVar6 * 0x100000) >> 0x1a)" ( (binary_expression "(uint)(iVar6 * 0x100000) >> 0x1a" (call_expression "(uint)(iVar6 * 0x100000)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar6 * 0x100000)" ( (binary_expression "iVar6 * 0x100000" identifier * number_literal) ))) >> number_literal) ))) + number_literal)) ;) (expression_statement "pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;" (assignment_expression "pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80" (subscript_expression "pbVar15[3]" identifier [ number_literal ]) = (binary_expression "((byte)uVar4 & 0x3f) + 0x80" (parenthesized_expression "((byte)uVar4 & 0x3f)" ( (binary_expression "(byte)uVar4 & 0x3f" (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) + number_literal)) ;) }) (else_clause "else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }" else (compound_statement "{\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }" { (labeled_statement "LAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;" statement_identifier : (expression_statement "*pbVar15 = (char)(uVar4 >> 0xc) - 0x20;" (assignment_expression "*pbVar15 = (char)(uVar4 >> 0xc) - 0x20" (pointer_expression "*pbVar15" * identifier) = (binary_expression "(char)(uVar4 >> 0xc) - 0x20" (cast_expression "(char)(uVar4 >> 0xc)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar4 >> 0xc)" ( (binary_expression "uVar4 >> 0xc" identifier >> number_literal) ))) - number_literal)) ;)) (expression_statement "pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;" (assignment_expression "pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80" (subscript_expression "pbVar15[1]" identifier [ number_literal ]) = (binary_expression "((byte)(uVar4 >> 6) & 0x3f) + 0x80" (parenthesized_expression "((byte)(uVar4 >> 6) & 0x3f)" ( (binary_expression "(byte)(uVar4 >> 6) & 0x3f" (call_expression "(byte)(uVar4 >> 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar4 >> 6)" ( (binary_expression "uVar4 >> 6" identifier >> number_literal) ))) & number_literal) )) + number_literal)) ;) (expression_statement "pbVar9 = pbVar15 + 3;" (assignment_expression "pbVar9 = pbVar15 + 3" identifier = (binary_expression "pbVar15 + 3" identifier + number_literal)) ;) (expression_statement "pbVar15[2] = (bVar8 & 0x3f) + 0x80;" (assignment_expression "pbVar15[2] = (bVar8 & 0x3f) + 0x80" (subscript_expression "pbVar15[2]" identifier [ number_literal ]) = (binary_expression "(bVar8 & 0x3f) + 0x80" (parenthesized_expression "(bVar8 & 0x3f)" ( (binary_expression "bVar8 & 0x3f" identifier & number_literal) )) + number_literal)) ;) }))) }) (else_clause "else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }" else (if_statement "if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }" if (parenthesized_expression "(uVar4 < 0x80)" ( (binary_expression "uVar4 < 0x80" identifier < number_literal) )) (compound_statement "{\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }" { (expression_statement "*pbVar15 = bVar8;" (assignment_expression "*pbVar15 = bVar8" (pointer_expression "*pbVar15" * identifier) = identifier) ;) (expression_statement "pbVar9 = pbVar15 + 1;" (assignment_expression "pbVar9 = pbVar15 + 1" identifier = (binary_expression "pbVar15 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }" else (compound_statement "{\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }" { (if_statement "if (0x7ff < uVar4) goto LAB_00080454;" if (parenthesized_expression "(0x7ff < uVar4)" ( (binary_expression "0x7ff < uVar4" number_literal < identifier) )) (goto_statement "goto LAB_00080454;" goto statement_identifier ;)) (expression_statement "pbVar15[1] = bVar8 & 0x3f | 0x80;" (assignment_expression "pbVar15[1] = bVar8 & 0x3f | 0x80" (subscript_expression "pbVar15[1]" identifier [ number_literal ]) = (binary_expression "bVar8 & 0x3f | 0x80" (binary_expression "bVar8 & 0x3f" identifier & number_literal) | number_literal)) ;) (expression_statement "*pbVar15 = (char)(uVar4 >> 6) - 0x40;" (assignment_expression "*pbVar15 = (char)(uVar4 >> 6) - 0x40" (pointer_expression "*pbVar15" * identifier) = (binary_expression "(char)(uVar4 >> 6) - 0x40" (cast_expression "(char)(uVar4 >> 6)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar4 >> 6)" ( (binary_expression "uVar4 >> 6" identifier >> number_literal) ))) - number_literal)) ;) (expression_statement "pbVar9 = pbVar15 + 2;" (assignment_expression "pbVar9 = pbVar15 + 2" identifier = (binary_expression "pbVar15 + 2" identifier + number_literal)) ;) }))))) (expression_statement "iVar6 = (int)pbVar9 - (int)pbVar5;" (assignment_expression "iVar6 = (int)pbVar9 - (int)pbVar5" identifier = (binary_expression "(int)pbVar9 - (int)pbVar5" (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pbVar15 = pbVar9;" (assignment_expression "pbVar15 = pbVar9" identifier = identifier) ;) (expression_statement "pbVar16 = pbVar11;" (assignment_expression "pbVar16 = pbVar11" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar11 < pbVar17)" ( (binary_expression "pbVar11 < pbVar17" identifier < identifier) )) ;) }))) }) (else_clause "else if (pbVar17 <= pbVar16) {\n      iVar6 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar6 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) + (uVar4 * 0x400 & 0xffff)\n            ;\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar6 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar6 = (int)pbVar9 - (int)pbVar5;\n    }" else (if_statement "if (pbVar17 <= pbVar16) {\n      iVar6 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar6 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) + (uVar4 * 0x400 & 0xffff)\n            ;\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar6 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar6 = (int)pbVar9 - (int)pbVar5;\n    }" if (parenthesized_expression "(pbVar17 <= pbVar16)" ( (binary_expression "pbVar17 <= pbVar16" identifier <= identifier) )) (compound_statement "{\n      iVar6 = 0;\n    }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar6 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) + (uVar4 * 0x400 & 0xffff)\n            ;\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar6 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar6 = (int)pbVar9 - (int)pbVar5;\n    }" else (compound_statement "{\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar6 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) + (uVar4 * 0x400 & 0xffff)\n            ;\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar6 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar6 = (int)pbVar9 - (int)pbVar5;\n    }" { (do_statement "do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar6 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) + (uVar4 * 0x400 & 0xffff)\n            ;\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar6 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);" do (compound_statement "{\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar6 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) + (uVar4 * 0x400 & 0xffff)\n            ;\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar6 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      }" { (while_statement "while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar6 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) + (uVar4 * 0x400 & 0xffff)\n            ;\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar6 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar6 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) + (uVar4 * 0x400 & 0xffff)\n            ;\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar6 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }" { (expression_statement "uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;" (assignment_expression "uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100" identifier = (binary_expression "(uint)pbVar16[1] + (uint)*pbVar16 * 0x100" (cast_expression "(uint)pbVar16[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[1]" identifier [ number_literal ])) + (binary_expression "(uint)*pbVar16 * 0x100" (binary_expression "(uint)*pbVar16" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal))) ;) (expression_statement "pbVar15 = pbVar16 + 2;" (assignment_expression "pbVar15 = pbVar16 + 2" identifier = (binary_expression "pbVar16 + 2" identifier + number_literal)) ;) (expression_statement "bVar8 = (byte)uVar4;" (assignment_expression "bVar8 = (byte)uVar4" identifier = (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (0x7ff < uVar4 - 0xd800) break;" if (parenthesized_expression "(0x7ff < uVar4 - 0xd800)" ( (binary_expression "0x7ff < uVar4 - 0xd800" number_literal < (binary_expression "uVar4 - 0xd800" identifier - number_literal)) )) (break_statement "break;" break ;)) (if_statement "if (pbVar15 < pbVar17) {\n            iVar6 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) + (uVar4 * 0x400 & 0xffff)\n            ;\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }" if (parenthesized_expression "(pbVar15 < pbVar17)" ( (binary_expression "pbVar15 < pbVar17" identifier < identifier) )) (compound_statement "{\n            iVar6 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) + (uVar4 * 0x400 & 0xffff)\n            ;\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }" { (expression_statement "iVar6 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) + (uVar4 * 0x400 & 0xffff)\n            ;" (assignment_expression "iVar6 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) + (uVar4 * 0x400 & 0xffff)" identifier = (binary_expression "((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) + (uVar4 * 0x400 & 0xffff)" (parenthesized_expression "((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff)" ( (binary_expression "(uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff" (binary_expression "(uint)pbVar16[3] + (uint)pbVar16[2] * 0x100" (cast_expression "(uint)pbVar16[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[3]" identifier [ number_literal ])) + (binary_expression "(uint)pbVar16[2] * 0x100" (cast_expression "(uint)pbVar16[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[2]" identifier [ number_literal ])) * number_literal)) & number_literal) )) + (parenthesized_expression "(uVar4 * 0x400 & 0xffff)" ( (binary_expression "uVar4 * 0x400 & 0xffff" (binary_expression "uVar4 * 0x400" identifier * number_literal) & number_literal) )))) ;) (expression_statement "pbVar11 = pbVar9 + 4;" (assignment_expression "pbVar11 = pbVar9 + 4" identifier = (binary_expression "pbVar9 + 4" identifier + number_literal)) ;) (expression_statement "uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400;" (assignment_expression "uVar4 = iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400" identifier = (binary_expression "iVar6 + ((uVar4 & 0x3c0) + 0x40) * 0x400" identifier + (binary_expression "((uVar4 & 0x3c0) + 0x40) * 0x400" (parenthesized_expression "((uVar4 & 0x3c0) + 0x40)" ( (binary_expression "(uVar4 & 0x3c0) + 0x40" (parenthesized_expression "(uVar4 & 0x3c0)" ( (binary_expression "uVar4 & 0x3c0" identifier & number_literal) )) + number_literal) )) * number_literal))) ;) (expression_statement "pbVar15 = pbVar16 + 4;" (assignment_expression "pbVar15 = pbVar16 + 4" identifier = (binary_expression "pbVar16 + 4" identifier + number_literal)) ;) (expression_statement "*pbVar9 = (char)(uVar4 >> 0x12) - 0x10;" (assignment_expression "*pbVar9 = (char)(uVar4 >> 0x12) - 0x10" (pointer_expression "*pbVar9" * identifier) = (binary_expression "(char)(uVar4 >> 0x12) - 0x10" (cast_expression "(char)(uVar4 >> 0x12)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar4 >> 0x12)" ( (binary_expression "uVar4 >> 0x12" identifier >> number_literal) ))) - number_literal)) ;) (expression_statement "pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;" (assignment_expression "pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) = (binary_expression "(byte)(uVar4 * 0x4000 >> 0x1a) + 0x80" (call_expression "(byte)(uVar4 * 0x4000 >> 0x1a)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar4 * 0x4000 >> 0x1a)" ( (binary_expression "uVar4 * 0x4000 >> 0x1a" (binary_expression "uVar4 * 0x4000" identifier * number_literal) >> number_literal) ))) + number_literal)) ;) (expression_statement "pbVar9[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80;" (assignment_expression "pbVar9[2] = (byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80" (subscript_expression "pbVar9[2]" identifier [ number_literal ]) = (binary_expression "(byte)((uint)(iVar6 * 0x100000) >> 0x1a) + 0x80" (call_expression "(byte)((uint)(iVar6 * 0x100000) >> 0x1a)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)(iVar6 * 0x100000) >> 0x1a)" ( (binary_expression "(uint)(iVar6 * 0x100000) >> 0x1a" (call_expression "(uint)(iVar6 * 0x100000)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar6 * 0x100000)" ( (binary_expression "iVar6 * 0x100000" identifier * number_literal) ))) >> number_literal) ))) + number_literal)) ;) (expression_statement "pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;" (assignment_expression "pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80" (subscript_expression "pbVar9[3]" identifier [ number_literal ]) = (binary_expression "((byte)uVar4 & 0x3f) + 0x80" (parenthesized_expression "((byte)uVar4 & 0x3f)" ( (binary_expression "(byte)uVar4 & 0x3f" (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) + number_literal)) ;) }) (else_clause "else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }" else (compound_statement "{\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }" { (labeled_statement "LAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;" statement_identifier : (expression_statement "*pbVar9 = (char)(uVar4 >> 0xc) - 0x20;" (assignment_expression "*pbVar9 = (char)(uVar4 >> 0xc) - 0x20" (pointer_expression "*pbVar9" * identifier) = (binary_expression "(char)(uVar4 >> 0xc) - 0x20" (cast_expression "(char)(uVar4 >> 0xc)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar4 >> 0xc)" ( (binary_expression "uVar4 >> 0xc" identifier >> number_literal) ))) - number_literal)) ;)) (expression_statement "pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;" (assignment_expression "pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) = (binary_expression "((byte)(uVar4 >> 6) & 0x3f) + 0x80" (parenthesized_expression "((byte)(uVar4 >> 6) & 0x3f)" ( (binary_expression "(byte)(uVar4 >> 6) & 0x3f" (call_expression "(byte)(uVar4 >> 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar4 >> 6)" ( (binary_expression "uVar4 >> 6" identifier >> number_literal) ))) & number_literal) )) + number_literal)) ;) (expression_statement "pbVar11 = pbVar9 + 3;" (assignment_expression "pbVar11 = pbVar9 + 3" identifier = (binary_expression "pbVar9 + 3" identifier + number_literal)) ;) (expression_statement "pbVar9[2] = (bVar8 & 0x3f) + 0x80;" (assignment_expression "pbVar9[2] = (bVar8 & 0x3f) + 0x80" (subscript_expression "pbVar9[2]" identifier [ number_literal ]) = (binary_expression "(bVar8 & 0x3f) + 0x80" (parenthesized_expression "(bVar8 & 0x3f)" ( (binary_expression "bVar8 & 0x3f" identifier & number_literal) )) + number_literal)) ;) }))) (labeled_statement "LAB_0007ffc4:\n          iVar6 = (int)pbVar11 - (int)pbVar5;" statement_identifier : (expression_statement "iVar6 = (int)pbVar11 - (int)pbVar5;" (assignment_expression "iVar6 = (int)pbVar11 - (int)pbVar5" identifier = (binary_expression "(int)pbVar11 - (int)pbVar5" (cast_expression "(int)pbVar11" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;)) (expression_statement "pbVar9 = pbVar11;" (assignment_expression "pbVar9 = pbVar11" identifier = identifier) ;) (expression_statement "pbVar16 = pbVar15;" (assignment_expression "pbVar16 = pbVar15" identifier = identifier) ;) (if_statement "if (pbVar17 <= pbVar15) goto LAB_00080014;" if (parenthesized_expression "(pbVar17 <= pbVar15)" ( (binary_expression "pbVar17 <= pbVar15" identifier <= identifier) )) (goto_statement "goto LAB_00080014;" goto statement_identifier ;)) })) (if_statement "if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }" if (parenthesized_expression "(0x7f < uVar4)" ( (binary_expression "0x7f < uVar4" number_literal < identifier) )) (compound_statement "{\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }" { (if_statement "if (0x7ff < uVar4) goto LAB_0007ff98;" if (parenthesized_expression "(0x7ff < uVar4)" ( (binary_expression "0x7ff < uVar4" number_literal < identifier) )) (goto_statement "goto LAB_0007ff98;" goto statement_identifier ;)) (expression_statement "pbVar9[1] = bVar8 & 0x3f | 0x80;" (assignment_expression "pbVar9[1] = bVar8 & 0x3f | 0x80" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) = (binary_expression "bVar8 & 0x3f | 0x80" (binary_expression "bVar8 & 0x3f" identifier & number_literal) | number_literal)) ;) (expression_statement "*pbVar9 = (char)(uVar4 >> 6) - 0x40;" (assignment_expression "*pbVar9 = (char)(uVar4 >> 6) - 0x40" (pointer_expression "*pbVar9" * identifier) = (binary_expression "(char)(uVar4 >> 6) - 0x40" (cast_expression "(char)(uVar4 >> 6)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar4 >> 6)" ( (binary_expression "uVar4 >> 6" identifier >> number_literal) ))) - number_literal)) ;) (expression_statement "pbVar11 = pbVar9 + 2;" (assignment_expression "pbVar11 = pbVar9 + 2" identifier = (binary_expression "pbVar9 + 2" identifier + number_literal)) ;) (goto_statement "goto LAB_0007ffc4;" goto statement_identifier ;) })) (expression_statement "*pbVar9 = bVar8;" (assignment_expression "*pbVar9 = bVar8" (pointer_expression "*pbVar9" * identifier) = identifier) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "pbVar16 = pbVar15;" (assignment_expression "pbVar16 = pbVar15" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar15 < pbVar17)" ( (binary_expression "pbVar15 < pbVar17" identifier < identifier) )) ;) (expression_statement "iVar6 = (int)pbVar9 - (int)pbVar5;" (assignment_expression "iVar6 = (int)pbVar9 - (int)pbVar5" identifier = (binary_expression "(int)pbVar9 - (int)pbVar5" (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))))) (labeled_statement "LAB_00080014:\n    pMem->n = iVar6;" statement_identifier : (expression_statement "pMem->n = iVar6;" (assignment_expression "pMem->n = iVar6" (field_expression "pMem->n" identifier -> field_identifier) = identifier) ;)) }))) (expression_statement "*pbVar9 = 0;" (assignment_expression "*pbVar9 = 0" (pointer_expression "*pbVar9" * identifier) = number_literal) ;) (expression_statement "uVar2 = pMem->flags;" (assignment_expression "uVar2 = pMem->flags" identifier = (field_expression "pMem->flags" identifier -> field_identifier)) ;) (if_statement "if (((uVar2 & 0x2400) != 0) || (pMem->szMalloc != 0)) {\n    (*(code *)(PTR_LAB_00190ba8 + -0x1e58))(pMem);\n  }" if (parenthesized_expression "(((uVar2 & 0x2400) != 0) || (pMem->szMalloc != 0))" ( (binary_expression "((uVar2 & 0x2400) != 0) || (pMem->szMalloc != 0)" (parenthesized_expression "((uVar2 & 0x2400) != 0)" ( (binary_expression "(uVar2 & 0x2400) != 0" (parenthesized_expression "(uVar2 & 0x2400)" ( (binary_expression "uVar2 & 0x2400" identifier & number_literal) )) != number_literal) )) || (parenthesized_expression "(pMem->szMalloc != 0)" ( (binary_expression "pMem->szMalloc != 0" (field_expression "pMem->szMalloc" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\n    (*(code *)(PTR_LAB_00190ba8 + -0x1e58))(pMem);\n  }" { (expression_statement "(*(code *)(PTR_LAB_00190ba8 + -0x1e58))(pMem);" (call_expression "(*(code *)(PTR_LAB_00190ba8 + -0x1e58))(pMem)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba8 + -0x1e58))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba8 + -0x1e58)" * (cast_expression "(code *)(PTR_LAB_00190ba8 + -0x1e58)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba8 + -0x1e58)" ( (binary_expression "PTR_LAB_00190ba8 + -0x1e58" identifier + number_literal) )))) )) (argument_list "(pMem)" ( identifier ))) ;) })) (expression_statement "puVar3 = PTR_aBuiltinFunc_29540_1408__00190948;" (assignment_expression "puVar3 = PTR_aBuiltinFunc_29540_1408__00190948" identifier = identifier) ;) (expression_statement "pMem->enc = desiredEnc;" (assignment_expression "pMem->enc = desiredEnc" (field_expression "pMem->enc" identifier -> field_identifier) = identifier) ;) (expression_statement "pMem->flags = uVar2 & 0x801d | 0x202;" (assignment_expression "pMem->flags = uVar2 & 0x801d | 0x202" (field_expression "pMem->flags" identifier -> field_identifier) = (binary_expression "uVar2 & 0x801d | 0x202" (binary_expression "uVar2 & 0x801d" identifier & number_literal) | number_literal)) ;) (expression_statement "pMem->z = (char *)pbVar5;" (assignment_expression "pMem->z = (char *)pbVar5" (field_expression "pMem->z" identifier -> field_identifier) = (cast_expression "(char *)pbVar5" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pMem->zMalloc = (char *)pbVar5;" (assignment_expression "pMem->zMalloc = (char *)pbVar5" (field_expression "pMem->zMalloc" identifier -> field_identifier) = (cast_expression "(char *)pbVar5" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar6 = (**(code **)(puVar3 + -0xb40))(pbVar5);" (assignment_expression "iVar6 = (**(code **)(puVar3 + -0xb40))(pbVar5)" identifier = (call_expression "(**(code **)(puVar3 + -0xb40))(pbVar5)" (parenthesized_expression "(**(code **)(puVar3 + -0xb40))" ( (pointer_expression "**(code **)(puVar3 + -0xb40)" * (pointer_expression "*(code **)(puVar3 + -0xb40)" * (cast_expression "(code **)(puVar3 + -0xb40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0xb40)" ( (binary_expression "puVar3 + -0xb40" identifier + number_literal) ))))) )) (argument_list "(pbVar5)" ( identifier )))) ;) (expression_statement "pMem->szMalloc = iVar6;" (assignment_expression "pMem->szMalloc = iVar6" (field_expression "pMem->szMalloc" identifier -> field_identifier) = identifier) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "undefined4 FUN_0007fed4(int param_1,int param_2)\n\n{\n  undefined1 uVar1;\n  ushort uVar2;\n  undefined *puVar3;\n  uint uVar4;\n  byte *pbVar5;\n  undefined4 uVar6;\n  undefined1 *puVar7;\n  byte bVar8;\n  byte *pbVar9;\n  uint uVar10;\n  byte *pbVar11;\n  undefined1 *puVar12;\n  byte bVar13;\n  int iVar14;\n  byte *pbVar15;\n  byte *pbVar16;\n  byte *pbVar17;\n  \n  if (*(char *)(param_1 + 10) == '\x01') {\n    uVar4 = *(uint *)(param_1 + 0xc);\n    if (param_2 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }\n  }\n  else {\n    if (param_2 != 1) {\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }\n    uVar4 = *(uint *)(param_1 + 0xc);\n  }\n  uVar4 = uVar4 & 0xfffffffe;\n  *(uint *)(param_1 + 0xc) = uVar4;\n  iVar14 = uVar4 * 2 + 1;\nLAB_0007ff34:\n  pbVar16 = *(byte **)(param_1 + 0x10);\n  pbVar5 = (byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))\n                             (*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f);\n  puVar3 = PTR_DAT_00190b94;\n  pbVar17 = pbVar16 + uVar4;\n  if (pbVar5 == (byte *)0x0) {\n    return 7;\n  }\n  if (*(char *)(param_1 + 10) == '\x01') {\n    pbVar15 = pbVar5;\n    if (param_2 == 2) {\n      iVar14 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }\n    *(int *)(param_1 + 0xc) = iVar14;\n    pbVar9 = pbVar15 + 1;\n    *pbVar15 = 0;\n  }\n  else {\n    pbVar9 = pbVar5;\n    if (*(char *)(param_1 + 10) == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    *(int *)(param_1 + 0xc) = iVar14;\n  }\n  *pbVar9 = 0;\n  uVar2 = *(ushort *)(param_1 + 8);\n  if (((uVar2 & 0x2400) != 0) || (*(int *)(param_1 + 0x18) != 0)) {\n    (*(code *)(PTR_LAB_00190ba8 + -0x1e58))(param_1);\n  }\n  puVar3 = PTR_DAT_00190948;\n  *(char *)(param_1 + 10) = (char)param_2;\n  *(ushort *)(param_1 + 8) = uVar2 & 0x801d | 0x202;\n  *(byte **)(param_1 + 0x10) = pbVar5;\n  *(byte **)(param_1 + 0x14) = pbVar5;\n  uVar6 = (**(code **)(puVar3 + -0xb40))(pbVar5);\n  *(undefined4 *)(param_1 + 0x18) = uVar6;\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_0007fed4(int param_1,int param_2)\n\n{\n  undefined1 uVar1;\n  ushort uVar2;\n  undefined *puVar3;\n  uint uVar4;\n  byte *pbVar5;\n  undefined4 uVar6;\n  undefined1 *puVar7;\n  byte bVar8;\n  byte *pbVar9;\n  uint uVar10;\n  byte *pbVar11;\n  undefined1 *puVar12;\n  byte bVar13;\n  int iVar14;\n  byte *pbVar15;\n  byte *pbVar16;\n  byte *pbVar17;\n  \n  if (*(char *)(param_1 + 10) == '\x01') {\n    uVar4 = *(uint *)(param_1 + 0xc);\n    if (param_2 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }\n  }\n  else {\n    if (param_2 != 1) {\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }\n    uVar4 = *(uint *)(param_1 + 0xc);\n  }\n  uVar4 = uVar4 & 0xfffffffe;\n  *(uint *)(param_1 + 0xc) = uVar4;\n  iVar14 = uVar4 * 2 + 1;\nLAB_0007ff34:\n  pbVar16 = *(byte **)(param_1 + 0x10);\n  pbVar5 = (byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))\n                             (*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f);\n  puVar3 = PTR_DAT_00190b94;\n  pbVar17 = pbVar16 + uVar4;\n  if (pbVar5 == (byte *)0x0) {\n    return 7;\n  }\n  if (*(char *)(param_1 + 10) == '\x01') {\n    pbVar15 = pbVar5;\n    if (param_2 == 2) {\n      iVar14 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }\n    *(int *)(param_1 + 0xc) = iVar14;\n    pbVar9 = pbVar15 + 1;\n    *pbVar15 = 0;\n  }\n  else {\n    pbVar9 = pbVar5;\n    if (*(char *)(param_1 + 10) == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    *(int *)(param_1 + 0xc) = iVar14;\n  }\n  *pbVar9 = 0;\n  uVar2 = *(ushort *)(param_1 + 8);\n  if (((uVar2 & 0x2400) != 0) || (*(int *)(param_1 + 0x18) != 0)) {\n    (*(code *)(PTR_LAB_00190ba8 + -0x1e58))(param_1);\n  }\n  puVar3 = PTR_DAT_00190948;\n  *(char *)(param_1 + 10) = (char)param_2;\n  *(ushort *)(param_1 + 8) = uVar2 & 0x801d | 0x202;\n  *(byte **)(param_1 + 0x10) = pbVar5;\n  *(byte **)(param_1 + 0x14) = pbVar5;\n  uVar6 = (**(code **)(puVar3 + -0xb40))(pbVar5);\n  *(undefined4 *)(param_1 + 0x18) = uVar6;\n  return 0;\n}" type_identifier (function_declarator "FUN_0007fed4(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  undefined1 uVar1;\n  ushort uVar2;\n  undefined *puVar3;\n  uint uVar4;\n  byte *pbVar5;\n  undefined4 uVar6;\n  undefined1 *puVar7;\n  byte bVar8;\n  byte *pbVar9;\n  uint uVar10;\n  byte *pbVar11;\n  undefined1 *puVar12;\n  byte bVar13;\n  int iVar14;\n  byte *pbVar15;\n  byte *pbVar16;\n  byte *pbVar17;\n  \n  if (*(char *)(param_1 + 10) == '\x01') {\n    uVar4 = *(uint *)(param_1 + 0xc);\n    if (param_2 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }\n  }\n  else {\n    if (param_2 != 1) {\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }\n    uVar4 = *(uint *)(param_1 + 0xc);\n  }\n  uVar4 = uVar4 & 0xfffffffe;\n  *(uint *)(param_1 + 0xc) = uVar4;\n  iVar14 = uVar4 * 2 + 1;\nLAB_0007ff34:\n  pbVar16 = *(byte **)(param_1 + 0x10);\n  pbVar5 = (byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))\n                             (*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f);\n  puVar3 = PTR_DAT_00190b94;\n  pbVar17 = pbVar16 + uVar4;\n  if (pbVar5 == (byte *)0x0) {\n    return 7;\n  }\n  if (*(char *)(param_1 + 10) == '\x01') {\n    pbVar15 = pbVar5;\n    if (param_2 == 2) {\n      iVar14 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }\n    *(int *)(param_1 + 0xc) = iVar14;\n    pbVar9 = pbVar15 + 1;\n    *pbVar15 = 0;\n  }\n  else {\n    pbVar9 = pbVar5;\n    if (*(char *)(param_1 + 10) == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    *(int *)(param_1 + 0xc) = iVar14;\n  }\n  *pbVar9 = 0;\n  uVar2 = *(ushort *)(param_1 + 8);\n  if (((uVar2 & 0x2400) != 0) || (*(int *)(param_1 + 0x18) != 0)) {\n    (*(code *)(PTR_LAB_00190ba8 + -0x1e58))(param_1);\n  }\n  puVar3 = PTR_DAT_00190948;\n  *(char *)(param_1 + 10) = (char)param_2;\n  *(ushort *)(param_1 + 8) = uVar2 & 0x801d | 0x202;\n  *(byte **)(param_1 + 0x10) = pbVar5;\n  *(byte **)(param_1 + 0x14) = pbVar5;\n  uVar6 = (**(code **)(puVar3 + -0xb40))(pbVar5);\n  *(undefined4 *)(param_1 + 0x18) = uVar6;\n  return 0;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "undefined1 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "byte *pbVar15;" type_identifier (pointer_declarator "*pbVar15" * identifier) ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (if_statement "if (*(char *)(param_1 + 10) == '\x01') {\n    uVar4 = *(uint *)(param_1 + 0xc);\n    if (param_2 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }\n  }\n  else {\n    if (param_2 != 1) {\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }\n    uVar4 = *(uint *)(param_1 + 0xc);\n  }" if (parenthesized_expression "(*(char *)(param_1 + 10) == '\x01')" ( (binary_expression "*(char *)(param_1 + 10) == '\x01'" (pointer_expression "*(char *)(param_1 + 10)" * (cast_expression "(char *)(param_1 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n    uVar4 = *(uint *)(param_1 + 0xc);\n    if (param_2 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }\n  }" { (expression_statement "uVar4 = *(uint *)(param_1 + 0xc);" (assignment_expression "uVar4 = *(uint *)(param_1 + 0xc)" identifier = (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (param_2 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }" if (parenthesized_expression "(param_2 != 1)" ( (binary_expression "param_2 != 1" identifier != number_literal) )) (compound_statement "{\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }" { (expression_statement "iVar14 = (uVar4 + 1) * 2;" (assignment_expression "iVar14 = (uVar4 + 1) * 2" identifier = (binary_expression "(uVar4 + 1) * 2" (parenthesized_expression "(uVar4 + 1)" ( (binary_expression "uVar4 + 1" identifier + number_literal) )) * number_literal)) ;) (goto_statement "goto LAB_0007ff34;" goto statement_identifier ;) })) }) (else_clause "else {\n    if (param_2 != 1) {\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }\n    uVar4 = *(uint *)(param_1 + 0xc);\n  }" else (compound_statement "{\n    if (param_2 != 1) {\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }\n    uVar4 = *(uint *)(param_1 + 0xc);\n  }" { (if_statement "if (param_2 != 1) {\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }" if (parenthesized_expression "(param_2 != 1)" ( (binary_expression "param_2 != 1" identifier != number_literal) )) (compound_statement "{\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }" { (expression_statement "iVar14 = FUN_0007d470();" (assignment_expression "iVar14 = FUN_0007d470()" identifier = (call_expression "FUN_0007d470()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar14 != 0) {\n        return 7;\n      }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\n        return 7;\n      }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "puVar7 = *(undefined1 **)(param_1 + 0x10);" (assignment_expression "puVar7 = *(undefined1 **)(param_1 + 0x10)" identifier = (pointer_expression "*(undefined1 **)(param_1 + 0x10)" * (cast_expression "(undefined1 **)(param_1 + 0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);" (assignment_expression "puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe)" identifier = (binary_expression "puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe)" identifier + (parenthesized_expression "(*(uint *)(param_1 + 0xc) & 0xfffffffe)" ( (binary_expression "*(uint *)(param_1 + 0xc) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) & number_literal) )))) ;) (for_statement "for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }" for ( ; (binary_expression "puVar7 < puVar12" identifier < identifier) ; (assignment_expression "puVar7 = puVar7 + 2" identifier = (binary_expression "puVar7 + 2" identifier + number_literal)) ) (compound_statement "{\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }" { (expression_statement "uVar1 = *puVar7;" (assignment_expression "uVar1 = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "*puVar7 = puVar7[1];" (assignment_expression "*puVar7 = puVar7[1]" (pointer_expression "*puVar7" * identifier) = (subscript_expression "puVar7[1]" identifier [ number_literal ])) ;) (expression_statement "puVar7[1] = uVar1;" (assignment_expression "puVar7[1] = uVar1" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "*(char *)(param_1 + 10) = (char)param_2;" (assignment_expression "*(char *)(param_1 + 10) = (char)param_2" (pointer_expression "*(char *)(param_1 + 10)" * (cast_expression "(char *)(param_1 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) = (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar4 = *(uint *)(param_1 + 0xc);" (assignment_expression "uVar4 = *(uint *)(param_1 + 0xc)" identifier = (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) }))) (expression_statement "uVar4 = uVar4 & 0xfffffffe;" (assignment_expression "uVar4 = uVar4 & 0xfffffffe" identifier = (binary_expression "uVar4 & 0xfffffffe" identifier & number_literal)) ;) (expression_statement "*(uint *)(param_1 + 0xc) = uVar4;" (assignment_expression "*(uint *)(param_1 + 0xc) = uVar4" (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar14 = uVar4 * 2 + 1;" (assignment_expression "iVar14 = uVar4 * 2 + 1" identifier = (binary_expression "uVar4 * 2 + 1" (binary_expression "uVar4 * 2" identifier * number_literal) + number_literal)) ;) (labeled_statement "LAB_0007ff34:\n  pbVar16 = *(byte **)(param_1 + 0x10);" statement_identifier : (expression_statement "pbVar16 = *(byte **)(param_1 + 0x10);" (assignment_expression "pbVar16 = *(byte **)(param_1 + 0x10)" identifier = (pointer_expression "*(byte **)(param_1 + 0x10)" * (cast_expression "(byte **)(param_1 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;)) (expression_statement "pbVar5 = (byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))\n                             (*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f);" (assignment_expression "pbVar5 = (byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))\n                             (*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f)" identifier = (cast_expression "(byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))\n                             (*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(PTR_LAB_00190ba8 + 0x8e0))\n                             (*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba8 + 0x8e0))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba8 + 0x8e0)" * (cast_expression "(code *)(PTR_LAB_00190ba8 + 0x8e0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba8 + 0x8e0)" ( (binary_expression "PTR_LAB_00190ba8 + 0x8e0" identifier + number_literal) )))) )) (argument_list "(*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x20)" * (cast_expression "(undefined4 *)(param_1 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) , identifier , (binary_expression "iVar14 >> 0x1f" identifier >> number_literal) ))))) ;) (expression_statement "puVar3 = PTR_DAT_00190b94;" (assignment_expression "puVar3 = PTR_DAT_00190b94" identifier = identifier) ;) (expression_statement "pbVar17 = pbVar16 + uVar4;" (assignment_expression "pbVar17 = pbVar16 + uVar4" identifier = (binary_expression "pbVar16 + uVar4" identifier + identifier)) ;) (if_statement "if (pbVar5 == (byte *)0x0) {\n    return 7;\n  }" if (parenthesized_expression "(pbVar5 == (byte *)0x0)" ( (binary_expression "pbVar5 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 7;\n  }" { (return_statement "return 7;" return number_literal ;) })) (if_statement "if (*(char *)(param_1 + 10) == '\x01') {\n    pbVar15 = pbVar5;\n    if (param_2 == 2) {\n      iVar14 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }\n    *(int *)(param_1 + 0xc) = iVar14;\n    pbVar9 = pbVar15 + 1;\n    *pbVar15 = 0;\n  }\n  else {\n    pbVar9 = pbVar5;\n    if (*(char *)(param_1 + 10) == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    *(int *)(param_1 + 0xc) = iVar14;\n  }" if (parenthesized_expression "(*(char *)(param_1 + 10) == '\x01')" ( (binary_expression "*(char *)(param_1 + 10) == '\x01'" (pointer_expression "*(char *)(param_1 + 10)" * (cast_expression "(char *)(param_1 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n    pbVar15 = pbVar5;\n    if (param_2 == 2) {\n      iVar14 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }\n    *(int *)(param_1 + 0xc) = iVar14;\n    pbVar9 = pbVar15 + 1;\n    *pbVar15 = 0;\n  }" { (expression_statement "pbVar15 = pbVar5;" (assignment_expression "pbVar15 = pbVar5" identifier = identifier) ;) (if_statement "if (param_2 == 2) {\n      iVar14 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }" if (parenthesized_expression "(param_2 == 2)" ( (binary_expression "param_2 == 2" identifier == number_literal) )) (compound_statement "{\n      iVar14 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "pbVar9 = pbVar5;" (assignment_expression "pbVar9 = pbVar5" identifier = identifier) ;) (if_statement "if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }" if (parenthesized_expression "(pbVar17 > pbVar16)" ( (binary_expression "pbVar17 > pbVar16" identifier > identifier) )) (compound_statement "{\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }" { (do_statement "do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);" do (compound_statement "{\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        }" { (expression_statement "bVar8 = *pbVar16;" (assignment_expression "bVar8 = *pbVar16" identifier = (pointer_expression "*pbVar16" * identifier)) ;) (expression_statement "pbVar11 = pbVar16 + 1;" (assignment_expression "pbVar11 = pbVar16 + 1" identifier = (binary_expression "pbVar16 + 1" identifier + number_literal)) ;) (if_statement "if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }" if (parenthesized_expression "(bVar8 < 0xc0)" ( (binary_expression "bVar8 < 0xc0" identifier < number_literal) )) (compound_statement "{\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }" { (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0008030c;" goto statement_identifier ;) })) (expression_statement "bVar8 = puVar3[bVar8 - 0x3f94];" (assignment_expression "bVar8 = puVar3[bVar8 - 0x3f94]" identifier = (subscript_expression "puVar3[bVar8 - 0x3f94]" identifier [ (binary_expression "bVar8 - 0x3f94" identifier - number_literal) ])) ;) (if_statement "if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }" if (parenthesized_expression "(pbVar17 == pbVar11)" ( (binary_expression "pbVar17 == pbVar11" identifier == identifier) )) (compound_statement "{\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }" { (labeled_statement "LAB_00080558:\n            bVar13 = 0xff;" statement_identifier : (expression_statement "bVar13 = 0xff;" (assignment_expression "bVar13 = 0xff" identifier = number_literal) ;)) (if_statement "if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }" if (parenthesized_expression "(bVar8 < 0x80)" ( (binary_expression "bVar8 < 0x80" identifier < number_literal) )) (compound_statement "{\n              bVar8 = 0xfd;\n            }" { (expression_statement "bVar8 = 0xfd;" (assignment_expression "bVar8 = 0xfd" identifier = number_literal) ;) }) (else_clause "else {\n              bVar13 = 0;\n            }" else (compound_statement "{\n              bVar13 = 0;\n            }" { (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) }))) (labeled_statement "LAB_0008030c:\n            *pbVar9 = bVar8;" statement_identifier : (expression_statement "*pbVar9 = bVar8;" (assignment_expression "*pbVar9 = bVar8" (pointer_expression "*pbVar9" * identifier) = identifier) ;)) (expression_statement "pbVar15 = pbVar9 + 2;" (assignment_expression "pbVar15 = pbVar9 + 2" identifier = (binary_expression "pbVar9 + 2" identifier + number_literal)) ;) (expression_statement "pbVar9[1] = bVar13;" (assignment_expression "pbVar9[1] = bVar13" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }" else (compound_statement "{\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }" { (expression_statement "uVar4 = (uint)pbVar16[1];" (assignment_expression "uVar4 = (uint)pbVar16[1]" identifier = (cast_expression "(uint)pbVar16[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar14 = (uint)bVar8 << 6;" (assignment_expression "iVar14 = (uint)bVar8 << 6" identifier = (binary_expression "(uint)bVar8 << 6" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal)) ;) (if_statement "if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;" if (parenthesized_expression "((uVar4 & 0xffffffc0) != 0x80)" ( (binary_expression "(uVar4 & 0xffffffc0) != 0x80" (parenthesized_expression "(uVar4 & 0xffffffc0)" ( (binary_expression "uVar4 & 0xffffffc0" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00080558;" goto statement_identifier ;)) (while_statement "while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }" { (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "uVar10 = (uVar4 & 0x3f) + iVar14;" (assignment_expression "uVar10 = (uVar4 & 0x3f) + iVar14" identifier = (binary_expression "(uVar4 & 0x3f) + iVar14" (parenthesized_expression "(uVar4 & 0x3f)" ( (binary_expression "uVar4 & 0x3f" identifier & number_literal) )) + identifier)) ;) (if_statement "if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;" if (parenthesized_expression "((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))" ( (binary_expression "(pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80)" (parenthesized_expression "(pbVar17 == pbVar11)" ( (binary_expression "pbVar17 == pbVar11" identifier == identifier) )) || (parenthesized_expression "(uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80)" ( (comma_expression "uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80" (assignment_expression "uVar4 = (uint)*pbVar11" identifier = (binary_expression "(uint)*pbVar11" (parenthesized_expression "(uint)" ( identifier )) * identifier)) , (binary_expression "(uVar4 & 0xffffffc0) != 0x80" (parenthesized_expression "(uVar4 & 0xffffffc0)" ( (binary_expression "uVar4 & 0xffffffc0" identifier & number_literal) )) != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar14 = uVar10 * 0x40;" (assignment_expression "iVar14 = uVar10 * 0x40" identifier = (binary_expression "uVar10 * 0x40" identifier * number_literal)) ;) })) (if_statement "if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }" if (parenthesized_expression "((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe))))" ( (binary_expression "(uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))" (parenthesized_expression "(uVar10 < 0x80)" ( (binary_expression "uVar10 < 0x80" identifier < number_literal) )) || (parenthesized_expression "(((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))" ( (parenthesized_expression "((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe))" ( (binary_expression "(uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)" (binary_expression "(uVar10 & 0xfffff800) == 0xd800" (parenthesized_expression "(uVar10 & 0xfffff800)" ( (binary_expression "uVar10 & 0xfffff800" identifier & number_literal) )) == number_literal) || (parenthesized_expression "((uVar10 & 0xfffffffe) == 0xfffe)" ( (binary_expression "(uVar10 & 0xfffffffe) == 0xfffe" (parenthesized_expression "(uVar10 & 0xfffffffe)" ( (binary_expression "uVar10 & 0xfffffffe" identifier & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }" { (expression_statement "bVar13 = 0xff;" (assignment_expression "bVar13 = 0xff" identifier = number_literal) ;) (expression_statement "bVar8 = 0xfd;" (assignment_expression "bVar8 = 0xfd" identifier = number_literal) ;) (goto_statement "goto LAB_0008030c;" goto statement_identifier ;) })) (expression_statement "bVar8 = (byte)uVar10;" (assignment_expression "bVar8 = (byte)uVar10" identifier = (cast_expression "(byte)uVar10" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar13 = (byte)(uVar10 >> 8);" (assignment_expression "bVar13 = (byte)(uVar10 >> 8)" identifier = (call_expression "(byte)(uVar10 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar10 >> 8)" ( (binary_expression "uVar10 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (uVar10 < 0x10000) goto LAB_0008030c;" if (parenthesized_expression "(uVar10 < 0x10000)" ( (binary_expression "uVar10 < 0x10000" identifier < number_literal) )) (goto_statement "goto LAB_0008030c;" goto statement_identifier ;)) (expression_statement "pbVar9[2] = bVar8;" (assignment_expression "pbVar9[2] = bVar8" (subscript_expression "pbVar9[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;" (assignment_expression "pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) = (binary_expression "(byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28" (call_expression "(byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar10 - 0x10000) * 0x1000 >> 0x1e)" ( (binary_expression "(uVar10 - 0x10000) * 0x1000 >> 0x1e" (binary_expression "(uVar10 - 0x10000) * 0x1000" (parenthesized_expression "(uVar10 - 0x10000)" ( (binary_expression "uVar10 - 0x10000" identifier - number_literal) )) * number_literal) >> number_literal) ))) - number_literal)) ;) (expression_statement "*pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;" (assignment_expression "*pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0" (pointer_expression "*pbVar9" * identifier) = (binary_expression "bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0" (binary_expression "bVar13 >> 2" identifier >> number_literal) | (binary_expression "(byte)(uVar10 - 0x10000 >> 10) & 0xc0" (call_expression "(byte)(uVar10 - 0x10000 >> 10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar10 - 0x10000 >> 10)" ( (binary_expression "uVar10 - 0x10000 >> 10" (binary_expression "uVar10 - 0x10000" identifier - number_literal) >> number_literal) ))) & number_literal))) ;) (expression_statement "pbVar15 = pbVar9 + 4;" (assignment_expression "pbVar15 = pbVar9 + 4" identifier = (binary_expression "pbVar9 + 4" identifier + number_literal)) ;) (expression_statement "pbVar9[3] = (bVar13 & 3) - 0x24;" (assignment_expression "pbVar9[3] = (bVar13 & 3) - 0x24" (subscript_expression "pbVar9[3]" identifier [ number_literal ]) = (binary_expression "(bVar13 & 3) - 0x24" (parenthesized_expression "(bVar13 & 3)" ( (binary_expression "bVar13 & 3" identifier & number_literal) )) - number_literal)) ;) }))) (expression_statement "iVar14 = (int)pbVar15 - (int)pbVar5;" (assignment_expression "iVar14 = (int)pbVar15 - (int)pbVar5" identifier = (binary_expression "(int)pbVar15 - (int)pbVar5" (cast_expression "(int)pbVar15" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pbVar9 = pbVar15;" (assignment_expression "pbVar9 = pbVar15" identifier = identifier) ;) (expression_statement "pbVar16 = pbVar11;" (assignment_expression "pbVar16 = pbVar11" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar11 < pbVar17)" ( (binary_expression "pbVar11 < pbVar17" identifier < identifier) )) ;) })) }) (else_clause "else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }" else (compound_statement "{\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }" { (expression_statement "pbVar9 = pbVar5;" (assignment_expression "pbVar9 = pbVar5" identifier = identifier) ;) (if_statement "if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }" if (parenthesized_expression "(pbVar17 <= pbVar16)" ( (binary_expression "pbVar17 <= pbVar16" identifier <= identifier) )) (compound_statement "{\n        iVar14 = 0;\n      }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }" else (compound_statement "{\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }" { (do_statement "do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);" do (compound_statement "{\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        }" { (while_statement "while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }" { (expression_statement "bVar8 = *pbVar16;" (assignment_expression "bVar8 = *pbVar16" identifier = (pointer_expression "*pbVar16" * identifier)) ;) (expression_statement "pbVar11 = pbVar16 + 1;" (assignment_expression "pbVar11 = pbVar16 + 1" identifier = (binary_expression "pbVar16 + 1" identifier + number_literal)) ;) (if_statement "if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }" if (parenthesized_expression "(bVar8 < 0xc0)" ( (binary_expression "bVar8 < 0xc0" identifier < number_literal) )) (compound_statement "{\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }" { (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000801d8;" goto statement_identifier ;) })) (expression_statement "bVar8 = puVar3[bVar8 - 0x3f94];" (assignment_expression "bVar8 = puVar3[bVar8 - 0x3f94]" identifier = (subscript_expression "puVar3[bVar8 - 0x3f94]" identifier [ (binary_expression "bVar8 - 0x3f94" identifier - number_literal) ])) ;) (if_statement "if (pbVar17 != pbVar11) break;" if (parenthesized_expression "(pbVar17 != pbVar11)" ( (binary_expression "pbVar17 != pbVar11" identifier != identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00080538:\n            bVar13 = 0xff;" statement_identifier : (expression_statement "bVar13 = 0xff;" (assignment_expression "bVar13 = 0xff" identifier = number_literal) ;)) (if_statement "if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }" if (parenthesized_expression "(bVar8 < 0x80)" ( (binary_expression "bVar8 < 0x80" identifier < number_literal) )) (compound_statement "{\n              bVar8 = 0xfd;\n            }" { (expression_statement "bVar8 = 0xfd;" (assignment_expression "bVar8 = 0xfd" identifier = number_literal) ;) }) (else_clause "else {\n              bVar13 = 0;\n            }" else (compound_statement "{\n              bVar13 = 0;\n            }" { (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) }))) (labeled_statement "LAB_000801d8:\n            *pbVar9 = bVar13;" statement_identifier : (expression_statement "*pbVar9 = bVar13;" (assignment_expression "*pbVar9 = bVar13" (pointer_expression "*pbVar9" * identifier) = identifier) ;)) (expression_statement "pbVar9[1] = bVar8;" (assignment_expression "pbVar9[1] = bVar8" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pbVar15 = pbVar9 + 2;" (assignment_expression "pbVar15 = pbVar9 + 2" identifier = (binary_expression "pbVar9 + 2" identifier + number_literal)) ;) (expression_statement "pbVar9 = pbVar15;" (assignment_expression "pbVar9 = pbVar15" identifier = identifier) ;) (expression_statement "pbVar16 = pbVar11;" (assignment_expression "pbVar16 = pbVar11" identifier = identifier) ;) (if_statement "if (pbVar17 <= pbVar11) goto LAB_000802c0;" if (parenthesized_expression "(pbVar17 <= pbVar11)" ( (binary_expression "pbVar17 <= pbVar11" identifier <= identifier) )) (goto_statement "goto LAB_000802c0;" goto statement_identifier ;)) })) (expression_statement "uVar4 = (uint)pbVar16[1];" (assignment_expression "uVar4 = (uint)pbVar16[1]" identifier = (cast_expression "(uint)pbVar16[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar14 = (uint)bVar8 << 6;" (assignment_expression "iVar14 = (uint)bVar8 << 6" identifier = (binary_expression "(uint)bVar8 << 6" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal)) ;) (if_statement "if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;" if (parenthesized_expression "((uVar4 & 0xffffffc0) != 0x80)" ( (binary_expression "(uVar4 & 0xffffffc0) != 0x80" (parenthesized_expression "(uVar4 & 0xffffffc0)" ( (binary_expression "uVar4 & 0xffffffc0" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00080538;" goto statement_identifier ;)) (while_statement "while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }" { (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "uVar10 = (uVar4 & 0x3f) + iVar14;" (assignment_expression "uVar10 = (uVar4 & 0x3f) + iVar14" identifier = (binary_expression "(uVar4 & 0x3f) + iVar14" (parenthesized_expression "(uVar4 & 0x3f)" ( (binary_expression "uVar4 & 0x3f" identifier & number_literal) )) + identifier)) ;) (if_statement "if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;" if (parenthesized_expression "((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))" ( (binary_expression "(pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80)" (parenthesized_expression "(pbVar17 == pbVar11)" ( (binary_expression "pbVar17 == pbVar11" identifier == identifier) )) || (parenthesized_expression "(uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80)" ( (comma_expression "uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80" (assignment_expression "uVar4 = (uint)*pbVar11" identifier = (binary_expression "(uint)*pbVar11" (parenthesized_expression "(uint)" ( identifier )) * identifier)) , (binary_expression "(uVar4 & 0xffffffc0) != 0x80" (parenthesized_expression "(uVar4 & 0xffffffc0)" ( (binary_expression "uVar4 & 0xffffffc0" identifier & number_literal) )) != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar14 = uVar10 * 0x40;" (assignment_expression "iVar14 = uVar10 * 0x40" identifier = (binary_expression "uVar10 * 0x40" identifier * number_literal)) ;) })) (if_statement "if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }" if (parenthesized_expression "((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe))))" ( (binary_expression "(uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))" (parenthesized_expression "(uVar10 < 0x80)" ( (binary_expression "uVar10 < 0x80" identifier < number_literal) )) || (parenthesized_expression "(((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))" ( (parenthesized_expression "((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe))" ( (binary_expression "(uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)" (binary_expression "(uVar10 & 0xfffff800) == 0xd800" (parenthesized_expression "(uVar10 & 0xfffff800)" ( (binary_expression "uVar10 & 0xfffff800" identifier & number_literal) )) == number_literal) || (parenthesized_expression "((uVar10 & 0xfffffffe) == 0xfffe)" ( (binary_expression "(uVar10 & 0xfffffffe) == 0xfffe" (parenthesized_expression "(uVar10 & 0xfffffffe)" ( (binary_expression "uVar10 & 0xfffffffe" identifier & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }" { (expression_statement "bVar8 = 0xfd;" (assignment_expression "bVar8 = 0xfd" identifier = number_literal) ;) (expression_statement "bVar13 = 0xff;" (assignment_expression "bVar13 = 0xff" identifier = number_literal) ;) (goto_statement "goto LAB_000801d8;" goto statement_identifier ;) })) (expression_statement "bVar13 = (byte)(uVar10 >> 8);" (assignment_expression "bVar13 = (byte)(uVar10 >> 8)" identifier = (call_expression "(byte)(uVar10 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar10 >> 8)" ( (binary_expression "uVar10 >> 8" identifier >> number_literal) )))) ;) (expression_statement "bVar8 = (byte)uVar10;" (assignment_expression "bVar8 = (byte)uVar10" identifier = (cast_expression "(byte)uVar10" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (uVar10 < 0x10000) goto LAB_000801d8;" if (parenthesized_expression "(uVar10 < 0x10000)" ( (binary_expression "uVar10 < 0x10000" identifier < number_literal) )) (goto_statement "goto LAB_000801d8;" goto statement_identifier ;)) (expression_statement "pbVar9[3] = bVar8;" (assignment_expression "pbVar9[3] = bVar8" (subscript_expression "pbVar9[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;" (assignment_expression "*pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28" (pointer_expression "*pbVar9" * identifier) = (binary_expression "(byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28" (call_expression "(byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar10 - 0x10000) * 0x1000 >> 0x1e)" ( (binary_expression "(uVar10 - 0x10000) * 0x1000 >> 0x1e" (binary_expression "(uVar10 - 0x10000) * 0x1000" (parenthesized_expression "(uVar10 - 0x10000)" ( (binary_expression "uVar10 - 0x10000" identifier - number_literal) )) * number_literal) >> number_literal) ))) - number_literal)) ;) (expression_statement "pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;" (assignment_expression "pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) = (binary_expression "bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0" (binary_expression "bVar13 >> 2" identifier >> number_literal) | (binary_expression "(byte)(uVar10 - 0x10000 >> 10) & 0xc0" (call_expression "(byte)(uVar10 - 0x10000 >> 10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar10 - 0x10000 >> 10)" ( (binary_expression "uVar10 - 0x10000 >> 10" (binary_expression "uVar10 - 0x10000" identifier - number_literal) >> number_literal) ))) & number_literal))) ;) (expression_statement "pbVar15 = pbVar9 + 4;" (assignment_expression "pbVar15 = pbVar9 + 4" identifier = (binary_expression "pbVar9 + 4" identifier + number_literal)) ;) (expression_statement "pbVar9[2] = (bVar13 & 3) - 0x24;" (assignment_expression "pbVar9[2] = (bVar13 & 3) - 0x24" (subscript_expression "pbVar9[2]" identifier [ number_literal ]) = (binary_expression "(bVar13 & 3) - 0x24" (parenthesized_expression "(bVar13 & 3)" ( (binary_expression "bVar13 & 3" identifier & number_literal) )) - number_literal)) ;) (expression_statement "pbVar9 = pbVar15;" (assignment_expression "pbVar9 = pbVar15" identifier = identifier) ;) (expression_statement "pbVar16 = pbVar11;" (assignment_expression "pbVar16 = pbVar11" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar11 < pbVar17)" ( (binary_expression "pbVar11 < pbVar17" identifier < identifier) )) ;) (labeled_statement "LAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;" statement_identifier : (expression_statement "iVar14 = (int)pbVar15 - (int)pbVar5;" (assignment_expression "iVar14 = (int)pbVar15 - (int)pbVar5" identifier = (binary_expression "(int)pbVar15 - (int)pbVar5" (cast_expression "(int)pbVar15" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;)) }))) }))) (expression_statement "*(int *)(param_1 + 0xc) = iVar14;" (assignment_expression "*(int *)(param_1 + 0xc) = iVar14" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar9 = pbVar15 + 1;" (assignment_expression "pbVar9 = pbVar15 + 1" identifier = (binary_expression "pbVar15 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar15 = 0;" (assignment_expression "*pbVar15 = 0" (pointer_expression "*pbVar15" * identifier) = number_literal) ;) }) (else_clause "else {\n    pbVar9 = pbVar5;\n    if (*(char *)(param_1 + 10) == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    *(int *)(param_1 + 0xc) = iVar14;\n  }" else (compound_statement "{\n    pbVar9 = pbVar5;\n    if (*(char *)(param_1 + 10) == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    *(int *)(param_1 + 0xc) = iVar14;\n  }" { (expression_statement "pbVar9 = pbVar5;" (assignment_expression "pbVar9 = pbVar5" identifier = identifier) ;) (if_statement "if (*(char *)(param_1 + 10) == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }" if (parenthesized_expression "(*(char *)(param_1 + 10) == '\x02')" ( (binary_expression "*(char *)(param_1 + 10) == '\x02'" (pointer_expression "*(char *)(param_1 + 10)" * (cast_expression "(char *)(param_1 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }" { (expression_statement "pbVar15 = pbVar5;" (assignment_expression "pbVar15 = pbVar5" identifier = identifier) ;) (if_statement "if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }" if (parenthesized_expression "(pbVar17 <= pbVar16)" ( (binary_expression "pbVar17 <= pbVar16" identifier <= identifier) )) (compound_statement "{\n        iVar14 = 0;\n      }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }" else (compound_statement "{\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }" { (do_statement "do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);" do (compound_statement "{\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        }" { (expression_statement "uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;" (assignment_expression "uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16" identifier = (binary_expression "(uint)pbVar16[1] * 0x100 + (uint)*pbVar16" (binary_expression "(uint)pbVar16[1] * 0x100" (cast_expression "(uint)pbVar16[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[1]" identifier [ number_literal ])) * number_literal) + (binary_expression "(uint)*pbVar16" (parenthesized_expression "(uint)" ( identifier )) * identifier))) ;) (expression_statement "pbVar11 = pbVar16 + 2;" (assignment_expression "pbVar11 = pbVar16 + 2" identifier = (binary_expression "pbVar16 + 2" identifier + number_literal)) ;) (expression_statement "bVar8 = (byte)uVar4;" (assignment_expression "bVar8 = (byte)uVar4" identifier = (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }" if (parenthesized_expression "(uVar4 - 0xd800 < 0x800)" ( (binary_expression "uVar4 - 0xd800 < 0x800" (binary_expression "uVar4 - 0xd800" identifier - number_literal) < number_literal) )) (compound_statement "{\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }" { (if_statement "if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }" if (parenthesized_expression "(pbVar11 < pbVar17)" ( (binary_expression "pbVar11 < pbVar17" identifier < identifier) )) (compound_statement "{\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }" { (expression_statement "iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);" (assignment_expression "iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff)" identifier = (binary_expression "((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff)" (parenthesized_expression "((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff)" ( (binary_expression "(uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff" (binary_expression "(uint)pbVar16[3] * 0x100 + (uint)pbVar16[2]" (binary_expression "(uint)pbVar16[3] * 0x100" (cast_expression "(uint)pbVar16[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[3]" identifier [ number_literal ])) * number_literal) + (cast_expression "(uint)pbVar16[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[2]" identifier [ number_literal ]))) & number_literal) )) + (parenthesized_expression "(uVar4 * 0x400 & 0xffff)" ( (binary_expression "uVar4 * 0x400 & 0xffff" (binary_expression "uVar4 * 0x400" identifier * number_literal) & number_literal) )))) ;) (expression_statement "pbVar9 = pbVar15 + 4;" (assignment_expression "pbVar9 = pbVar15 + 4" identifier = (binary_expression "pbVar15 + 4" identifier + number_literal)) ;) (expression_statement "uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;" (assignment_expression "uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400" identifier = (binary_expression "iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400" identifier + (binary_expression "((uVar4 & 0x3c0) + 0x40) * 0x400" (parenthesized_expression "((uVar4 & 0x3c0) + 0x40)" ( (binary_expression "(uVar4 & 0x3c0) + 0x40" (parenthesized_expression "(uVar4 & 0x3c0)" ( (binary_expression "uVar4 & 0x3c0" identifier & number_literal) )) + number_literal) )) * number_literal))) ;) (expression_statement "pbVar11 = pbVar16 + 4;" (assignment_expression "pbVar11 = pbVar16 + 4" identifier = (binary_expression "pbVar16 + 4" identifier + number_literal)) ;) (expression_statement "*pbVar15 = (char)(uVar4 >> 0x12) - 0x10;" (assignment_expression "*pbVar15 = (char)(uVar4 >> 0x12) - 0x10" (pointer_expression "*pbVar15" * identifier) = (binary_expression "(char)(uVar4 >> 0x12) - 0x10" (cast_expression "(char)(uVar4 >> 0x12)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar4 >> 0x12)" ( (binary_expression "uVar4 >> 0x12" identifier >> number_literal) ))) - number_literal)) ;) (expression_statement "pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;" (assignment_expression "pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80" (subscript_expression "pbVar15[1]" identifier [ number_literal ]) = (binary_expression "(byte)(uVar4 * 0x4000 >> 0x1a) + 0x80" (call_expression "(byte)(uVar4 * 0x4000 >> 0x1a)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar4 * 0x4000 >> 0x1a)" ( (binary_expression "uVar4 * 0x4000 >> 0x1a" (binary_expression "uVar4 * 0x4000" identifier * number_literal) >> number_literal) ))) + number_literal)) ;) (expression_statement "pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;" (assignment_expression "pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80" (subscript_expression "pbVar15[2]" identifier [ number_literal ]) = (binary_expression "(byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80" (call_expression "(byte)((uint)(iVar14 * 0x100000) >> 0x1a)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)(iVar14 * 0x100000) >> 0x1a)" ( (binary_expression "(uint)(iVar14 * 0x100000) >> 0x1a" (call_expression "(uint)(iVar14 * 0x100000)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar14 * 0x100000)" ( (binary_expression "iVar14 * 0x100000" identifier * number_literal) ))) >> number_literal) ))) + number_literal)) ;) (expression_statement "pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;" (assignment_expression "pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80" (subscript_expression "pbVar15[3]" identifier [ number_literal ]) = (binary_expression "((byte)uVar4 & 0x3f) + 0x80" (parenthesized_expression "((byte)uVar4 & 0x3f)" ( (binary_expression "(byte)uVar4 & 0x3f" (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) + number_literal)) ;) }) (else_clause "else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }" else (compound_statement "{\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }" { (labeled_statement "LAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;" statement_identifier : (expression_statement "*pbVar15 = (char)(uVar4 >> 0xc) - 0x20;" (assignment_expression "*pbVar15 = (char)(uVar4 >> 0xc) - 0x20" (pointer_expression "*pbVar15" * identifier) = (binary_expression "(char)(uVar4 >> 0xc) - 0x20" (cast_expression "(char)(uVar4 >> 0xc)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar4 >> 0xc)" ( (binary_expression "uVar4 >> 0xc" identifier >> number_literal) ))) - number_literal)) ;)) (expression_statement "pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;" (assignment_expression "pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80" (subscript_expression "pbVar15[1]" identifier [ number_literal ]) = (binary_expression "((byte)(uVar4 >> 6) & 0x3f) + 0x80" (parenthesized_expression "((byte)(uVar4 >> 6) & 0x3f)" ( (binary_expression "(byte)(uVar4 >> 6) & 0x3f" (call_expression "(byte)(uVar4 >> 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar4 >> 6)" ( (binary_expression "uVar4 >> 6" identifier >> number_literal) ))) & number_literal) )) + number_literal)) ;) (expression_statement "pbVar9 = pbVar15 + 3;" (assignment_expression "pbVar9 = pbVar15 + 3" identifier = (binary_expression "pbVar15 + 3" identifier + number_literal)) ;) (expression_statement "pbVar15[2] = (bVar8 & 0x3f) + 0x80;" (assignment_expression "pbVar15[2] = (bVar8 & 0x3f) + 0x80" (subscript_expression "pbVar15[2]" identifier [ number_literal ]) = (binary_expression "(bVar8 & 0x3f) + 0x80" (parenthesized_expression "(bVar8 & 0x3f)" ( (binary_expression "bVar8 & 0x3f" identifier & number_literal) )) + number_literal)) ;) }))) }) (else_clause "else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }" else (if_statement "if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }" if (parenthesized_expression "(uVar4 < 0x80)" ( (binary_expression "uVar4 < 0x80" identifier < number_literal) )) (compound_statement "{\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }" { (expression_statement "*pbVar15 = bVar8;" (assignment_expression "*pbVar15 = bVar8" (pointer_expression "*pbVar15" * identifier) = identifier) ;) (expression_statement "pbVar9 = pbVar15 + 1;" (assignment_expression "pbVar9 = pbVar15 + 1" identifier = (binary_expression "pbVar15 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }" else (compound_statement "{\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }" { (if_statement "if (0x7ff < uVar4) goto LAB_00080454;" if (parenthesized_expression "(0x7ff < uVar4)" ( (binary_expression "0x7ff < uVar4" number_literal < identifier) )) (goto_statement "goto LAB_00080454;" goto statement_identifier ;)) (expression_statement "pbVar15[1] = bVar8 & 0x3f | 0x80;" (assignment_expression "pbVar15[1] = bVar8 & 0x3f | 0x80" (subscript_expression "pbVar15[1]" identifier [ number_literal ]) = (binary_expression "bVar8 & 0x3f | 0x80" (binary_expression "bVar8 & 0x3f" identifier & number_literal) | number_literal)) ;) (expression_statement "*pbVar15 = (char)(uVar4 >> 6) - 0x40;" (assignment_expression "*pbVar15 = (char)(uVar4 >> 6) - 0x40" (pointer_expression "*pbVar15" * identifier) = (binary_expression "(char)(uVar4 >> 6) - 0x40" (cast_expression "(char)(uVar4 >> 6)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar4 >> 6)" ( (binary_expression "uVar4 >> 6" identifier >> number_literal) ))) - number_literal)) ;) (expression_statement "pbVar9 = pbVar15 + 2;" (assignment_expression "pbVar9 = pbVar15 + 2" identifier = (binary_expression "pbVar15 + 2" identifier + number_literal)) ;) }))))) (expression_statement "iVar14 = (int)pbVar9 - (int)pbVar5;" (assignment_expression "iVar14 = (int)pbVar9 - (int)pbVar5" identifier = (binary_expression "(int)pbVar9 - (int)pbVar5" (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pbVar15 = pbVar9;" (assignment_expression "pbVar15 = pbVar9" identifier = identifier) ;) (expression_statement "pbVar16 = pbVar11;" (assignment_expression "pbVar16 = pbVar11" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar11 < pbVar17)" ( (binary_expression "pbVar11 < pbVar17" identifier < identifier) )) ;) }))) }) (else_clause "else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }" else (if_statement "if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }" if (parenthesized_expression "(pbVar17 <= pbVar16)" ( (binary_expression "pbVar17 <= pbVar16" identifier <= identifier) )) (compound_statement "{\n      iVar14 = 0;\n    }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }" else (compound_statement "{\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }" { (do_statement "do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);" do (compound_statement "{\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      }" { (while_statement "while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }" { (expression_statement "uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;" (assignment_expression "uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100" identifier = (binary_expression "(uint)pbVar16[1] + (uint)*pbVar16 * 0x100" (cast_expression "(uint)pbVar16[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[1]" identifier [ number_literal ])) + (binary_expression "(uint)*pbVar16 * 0x100" (binary_expression "(uint)*pbVar16" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal))) ;) (expression_statement "pbVar15 = pbVar16 + 2;" (assignment_expression "pbVar15 = pbVar16 + 2" identifier = (binary_expression "pbVar16 + 2" identifier + number_literal)) ;) (expression_statement "bVar8 = (byte)uVar4;" (assignment_expression "bVar8 = (byte)uVar4" identifier = (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (0x7ff < uVar4 - 0xd800) break;" if (parenthesized_expression "(0x7ff < uVar4 - 0xd800)" ( (binary_expression "0x7ff < uVar4 - 0xd800" number_literal < (binary_expression "uVar4 - 0xd800" identifier - number_literal)) )) (break_statement "break;" break ;)) (if_statement "if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }" if (parenthesized_expression "(pbVar15 < pbVar17)" ( (binary_expression "pbVar15 < pbVar17" identifier < identifier) )) (compound_statement "{\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }" { (expression_statement "iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);" (assignment_expression "iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff)" identifier = (binary_expression "((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff)" (parenthesized_expression "((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff)" ( (binary_expression "(uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff" (binary_expression "(uint)pbVar16[3] + (uint)pbVar16[2] * 0x100" (cast_expression "(uint)pbVar16[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[3]" identifier [ number_literal ])) + (binary_expression "(uint)pbVar16[2] * 0x100" (cast_expression "(uint)pbVar16[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[2]" identifier [ number_literal ])) * number_literal)) & number_literal) )) + (parenthesized_expression "(uVar4 * 0x400 & 0xffff)" ( (binary_expression "uVar4 * 0x400 & 0xffff" (binary_expression "uVar4 * 0x400" identifier * number_literal) & number_literal) )))) ;) (expression_statement "pbVar11 = pbVar9 + 4;" (assignment_expression "pbVar11 = pbVar9 + 4" identifier = (binary_expression "pbVar9 + 4" identifier + number_literal)) ;) (expression_statement "uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;" (assignment_expression "uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400" identifier = (binary_expression "iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400" identifier + (binary_expression "((uVar4 & 0x3c0) + 0x40) * 0x400" (parenthesized_expression "((uVar4 & 0x3c0) + 0x40)" ( (binary_expression "(uVar4 & 0x3c0) + 0x40" (parenthesized_expression "(uVar4 & 0x3c0)" ( (binary_expression "uVar4 & 0x3c0" identifier & number_literal) )) + number_literal) )) * number_literal))) ;) (expression_statement "pbVar15 = pbVar16 + 4;" (assignment_expression "pbVar15 = pbVar16 + 4" identifier = (binary_expression "pbVar16 + 4" identifier + number_literal)) ;) (expression_statement "*pbVar9 = (char)(uVar4 >> 0x12) - 0x10;" (assignment_expression "*pbVar9 = (char)(uVar4 >> 0x12) - 0x10" (pointer_expression "*pbVar9" * identifier) = (binary_expression "(char)(uVar4 >> 0x12) - 0x10" (cast_expression "(char)(uVar4 >> 0x12)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar4 >> 0x12)" ( (binary_expression "uVar4 >> 0x12" identifier >> number_literal) ))) - number_literal)) ;) (expression_statement "pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;" (assignment_expression "pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) = (binary_expression "(byte)(uVar4 * 0x4000 >> 0x1a) + 0x80" (call_expression "(byte)(uVar4 * 0x4000 >> 0x1a)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar4 * 0x4000 >> 0x1a)" ( (binary_expression "uVar4 * 0x4000 >> 0x1a" (binary_expression "uVar4 * 0x4000" identifier * number_literal) >> number_literal) ))) + number_literal)) ;) (expression_statement "pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;" (assignment_expression "pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80" (subscript_expression "pbVar9[2]" identifier [ number_literal ]) = (binary_expression "(byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80" (call_expression "(byte)((uint)(iVar14 * 0x100000) >> 0x1a)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)(iVar14 * 0x100000) >> 0x1a)" ( (binary_expression "(uint)(iVar14 * 0x100000) >> 0x1a" (call_expression "(uint)(iVar14 * 0x100000)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar14 * 0x100000)" ( (binary_expression "iVar14 * 0x100000" identifier * number_literal) ))) >> number_literal) ))) + number_literal)) ;) (expression_statement "pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;" (assignment_expression "pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80" (subscript_expression "pbVar9[3]" identifier [ number_literal ]) = (binary_expression "((byte)uVar4 & 0x3f) + 0x80" (parenthesized_expression "((byte)uVar4 & 0x3f)" ( (binary_expression "(byte)uVar4 & 0x3f" (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) + number_literal)) ;) }) (else_clause "else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }" else (compound_statement "{\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }" { (labeled_statement "LAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;" statement_identifier : (expression_statement "*pbVar9 = (char)(uVar4 >> 0xc) - 0x20;" (assignment_expression "*pbVar9 = (char)(uVar4 >> 0xc) - 0x20" (pointer_expression "*pbVar9" * identifier) = (binary_expression "(char)(uVar4 >> 0xc) - 0x20" (cast_expression "(char)(uVar4 >> 0xc)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar4 >> 0xc)" ( (binary_expression "uVar4 >> 0xc" identifier >> number_literal) ))) - number_literal)) ;)) (expression_statement "pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;" (assignment_expression "pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) = (binary_expression "((byte)(uVar4 >> 6) & 0x3f) + 0x80" (parenthesized_expression "((byte)(uVar4 >> 6) & 0x3f)" ( (binary_expression "(byte)(uVar4 >> 6) & 0x3f" (call_expression "(byte)(uVar4 >> 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar4 >> 6)" ( (binary_expression "uVar4 >> 6" identifier >> number_literal) ))) & number_literal) )) + number_literal)) ;) (expression_statement "pbVar11 = pbVar9 + 3;" (assignment_expression "pbVar11 = pbVar9 + 3" identifier = (binary_expression "pbVar9 + 3" identifier + number_literal)) ;) (expression_statement "pbVar9[2] = (bVar8 & 0x3f) + 0x80;" (assignment_expression "pbVar9[2] = (bVar8 & 0x3f) + 0x80" (subscript_expression "pbVar9[2]" identifier [ number_literal ]) = (binary_expression "(bVar8 & 0x3f) + 0x80" (parenthesized_expression "(bVar8 & 0x3f)" ( (binary_expression "bVar8 & 0x3f" identifier & number_literal) )) + number_literal)) ;) }))) (labeled_statement "LAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;" statement_identifier : (expression_statement "iVar14 = (int)pbVar11 - (int)pbVar5;" (assignment_expression "iVar14 = (int)pbVar11 - (int)pbVar5" identifier = (binary_expression "(int)pbVar11 - (int)pbVar5" (cast_expression "(int)pbVar11" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;)) (expression_statement "pbVar9 = pbVar11;" (assignment_expression "pbVar9 = pbVar11" identifier = identifier) ;) (expression_statement "pbVar16 = pbVar15;" (assignment_expression "pbVar16 = pbVar15" identifier = identifier) ;) (if_statement "if (pbVar17 <= pbVar15) goto LAB_00080014;" if (parenthesized_expression "(pbVar17 <= pbVar15)" ( (binary_expression "pbVar17 <= pbVar15" identifier <= identifier) )) (goto_statement "goto LAB_00080014;" goto statement_identifier ;)) })) (if_statement "if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }" if (parenthesized_expression "(0x7f < uVar4)" ( (binary_expression "0x7f < uVar4" number_literal < identifier) )) (compound_statement "{\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }" { (if_statement "if (0x7ff < uVar4) goto LAB_0007ff98;" if (parenthesized_expression "(0x7ff < uVar4)" ( (binary_expression "0x7ff < uVar4" number_literal < identifier) )) (goto_statement "goto LAB_0007ff98;" goto statement_identifier ;)) (expression_statement "pbVar9[1] = bVar8 & 0x3f | 0x80;" (assignment_expression "pbVar9[1] = bVar8 & 0x3f | 0x80" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) = (binary_expression "bVar8 & 0x3f | 0x80" (binary_expression "bVar8 & 0x3f" identifier & number_literal) | number_literal)) ;) (expression_statement "*pbVar9 = (char)(uVar4 >> 6) - 0x40;" (assignment_expression "*pbVar9 = (char)(uVar4 >> 6) - 0x40" (pointer_expression "*pbVar9" * identifier) = (binary_expression "(char)(uVar4 >> 6) - 0x40" (cast_expression "(char)(uVar4 >> 6)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar4 >> 6)" ( (binary_expression "uVar4 >> 6" identifier >> number_literal) ))) - number_literal)) ;) (expression_statement "pbVar11 = pbVar9 + 2;" (assignment_expression "pbVar11 = pbVar9 + 2" identifier = (binary_expression "pbVar9 + 2" identifier + number_literal)) ;) (goto_statement "goto LAB_0007ffc4;" goto statement_identifier ;) })) (expression_statement "*pbVar9 = bVar8;" (assignment_expression "*pbVar9 = bVar8" (pointer_expression "*pbVar9" * identifier) = identifier) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "pbVar16 = pbVar15;" (assignment_expression "pbVar16 = pbVar15" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar15 < pbVar17)" ( (binary_expression "pbVar15 < pbVar17" identifier < identifier) )) ;) (expression_statement "iVar14 = (int)pbVar9 - (int)pbVar5;" (assignment_expression "iVar14 = (int)pbVar9 - (int)pbVar5" identifier = (binary_expression "(int)pbVar9 - (int)pbVar5" (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))))) (labeled_statement "LAB_00080014:\n    *(int *)(param_1 + 0xc) = iVar14;" statement_identifier : (expression_statement "*(int *)(param_1 + 0xc) = iVar14;" (assignment_expression "*(int *)(param_1 + 0xc) = iVar14" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;)) }))) (expression_statement "*pbVar9 = 0;" (assignment_expression "*pbVar9 = 0" (pointer_expression "*pbVar9" * identifier) = number_literal) ;) (expression_statement "uVar2 = *(ushort *)(param_1 + 8);" (assignment_expression "uVar2 = *(ushort *)(param_1 + 8)" identifier = (pointer_expression "*(ushort *)(param_1 + 8)" * (cast_expression "(ushort *)(param_1 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (((uVar2 & 0x2400) != 0) || (*(int *)(param_1 + 0x18) != 0)) {\n    (*(code *)(PTR_LAB_00190ba8 + -0x1e58))(param_1);\n  }" if (parenthesized_expression "(((uVar2 & 0x2400) != 0) || (*(int *)(param_1 + 0x18) != 0))" ( (binary_expression "((uVar2 & 0x2400) != 0) || (*(int *)(param_1 + 0x18) != 0)" (parenthesized_expression "((uVar2 & 0x2400) != 0)" ( (binary_expression "(uVar2 & 0x2400) != 0" (parenthesized_expression "(uVar2 & 0x2400)" ( (binary_expression "uVar2 & 0x2400" identifier & number_literal) )) != number_literal) )) || (parenthesized_expression "(*(int *)(param_1 + 0x18) != 0)" ( (binary_expression "*(int *)(param_1 + 0x18) != 0" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n    (*(code *)(PTR_LAB_00190ba8 + -0x1e58))(param_1);\n  }" { (expression_statement "(*(code *)(PTR_LAB_00190ba8 + -0x1e58))(param_1);" (call_expression "(*(code *)(PTR_LAB_00190ba8 + -0x1e58))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba8 + -0x1e58))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba8 + -0x1e58)" * (cast_expression "(code *)(PTR_LAB_00190ba8 + -0x1e58)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba8 + -0x1e58)" ( (binary_expression "PTR_LAB_00190ba8 + -0x1e58" identifier + number_literal) )))) )) (argument_list "(param_1)" ( identifier ))) ;) })) (expression_statement "puVar3 = PTR_DAT_00190948;" (assignment_expression "puVar3 = PTR_DAT_00190948" identifier = identifier) ;) (expression_statement "*(char *)(param_1 + 10) = (char)param_2;" (assignment_expression "*(char *)(param_1 + 10) = (char)param_2" (pointer_expression "*(char *)(param_1 + 10)" * (cast_expression "(char *)(param_1 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) = (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(ushort *)(param_1 + 8) = uVar2 & 0x801d | 0x202;" (assignment_expression "*(ushort *)(param_1 + 8) = uVar2 & 0x801d | 0x202" (pointer_expression "*(ushort *)(param_1 + 8)" * (cast_expression "(ushort *)(param_1 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "uVar2 & 0x801d | 0x202" (binary_expression "uVar2 & 0x801d" identifier & number_literal) | number_literal)) ;) (expression_statement "*(byte **)(param_1 + 0x10) = pbVar5;" (assignment_expression "*(byte **)(param_1 + 0x10) = pbVar5" (pointer_expression "*(byte **)(param_1 + 0x10)" * (cast_expression "(byte **)(param_1 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(param_1 + 0x14) = pbVar5;" (assignment_expression "*(byte **)(param_1 + 0x14) = pbVar5" (pointer_expression "*(byte **)(param_1 + 0x14)" * (cast_expression "(byte **)(param_1 + 0x14)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar6 = (**(code **)(puVar3 + -0xb40))(pbVar5);" (assignment_expression "uVar6 = (**(code **)(puVar3 + -0xb40))(pbVar5)" identifier = (call_expression "(**(code **)(puVar3 + -0xb40))(pbVar5)" (parenthesized_expression "(**(code **)(puVar3 + -0xb40))" ( (pointer_expression "**(code **)(puVar3 + -0xb40)" * (pointer_expression "*(code **)(puVar3 + -0xb40)" * (cast_expression "(code **)(puVar3 + -0xb40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0xb40)" ( (binary_expression "puVar3 + -0xb40" identifier + number_literal) ))))) )) (argument_list "(pbVar5)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x18) = uVar6;" (assignment_expression "*(undefined4 *)(param_1 + 0x18) = uVar6" (pointer_expression "*(undefined4 *)(param_1 + 0x18)" * (cast_expression "(undefined4 *)(param_1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = identifier) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )))) ;) (for_statement for ( ; (binary_expression IDENT < IDENT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , (binary_expression IDENT >> LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT > IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT - LIT) ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) , (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT)) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) * LIT) >> LIT) ))) - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT - LIT) >> LIT) ))) & LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) - LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT - LIT) ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) , (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT)) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) * LIT) >> LIT) ))) - LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT - LIT) >> LIT) ))) & LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) - LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;)) }))) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) * LIT) + (binary_expression (parenthesized_expression ( IDENT )) * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) * LIT) + (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) & LIT) )) + (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + LIT) )) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) - LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT * LIT) >> LIT) ))) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * LIT) ))) >> LIT) ))) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) + LIT)) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) - LIT)) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) & LIT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + LIT)) ;) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression IDENT & LIT) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))))) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) * LIT)) & LIT) )) + (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + LIT) )) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) - LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT * LIT) >> LIT) ))) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * LIT) ))) >> LIT) ))) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) + LIT)) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) - LIT)) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) & LIT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + LIT)) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression IDENT & LIT) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }))))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression IDENT & LIT) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_0007fed4(int param_1,int param_2)\n\n{\n  undefined1 uVar1;\n  ushort uVar2;\n  undefined *puVar3;\n  uint uVar4;\n  byte *pbVar5;\n  undefined4 uVar6;\n  undefined1 *puVar7;\n  byte bVar8;\n  byte *pbVar9;\n  uint uVar10;\n  byte *pbVar11;\n  undefined1 *puVar12;\n  byte bVar13;\n  int iVar14;\n  byte *pbVar15;\n  byte *pbVar16;\n  byte *pbVar17;\n  \n  if (*(char *)(param_1 + 10) == '\x01') {\n    uVar4 = *(uint *)(param_1 + 0xc);\n    if (param_2 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }\n  }\n  else {\n    if (param_2 != 1) {\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }\n    uVar4 = *(uint *)(param_1 + 0xc);\n  }\n  uVar4 = uVar4 & 0xfffffffe;\n  *(uint *)(param_1 + 0xc) = uVar4;\n  iVar14 = uVar4 * 2 + 1;\nLAB_0007ff34:\n  pbVar16 = *(byte **)(param_1 + 0x10);\n  pbVar5 = (byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))\n                             (*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f);\n  puVar3 = PTR_DAT_00190b94;\n  pbVar17 = pbVar16 + uVar4;\n  if (pbVar5 == (byte *)0x0) {\n    return 7;\n  }\n  if (*(char *)(param_1 + 10) == '\x01') {\n    pbVar15 = pbVar5;\n    if (param_2 == 2) {\n      iVar14 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }\n    *(int *)(param_1 + 0xc) = iVar14;\n    pbVar9 = pbVar15 + 1;\n    *pbVar15 = 0;\n  }\n  else {\n    pbVar9 = pbVar5;\n    if (*(char *)(param_1 + 10) == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    *(int *)(param_1 + 0xc) = iVar14;\n  }\n  *pbVar9 = 0;\n  uVar2 = *(ushort *)(param_1 + 8);\n  if (((uVar2 & 0x2400) != 0) || (*(int *)(param_1 + 0x18) != 0)) {\n    (*(code *)(PTR_LAB_00190ba8 + -0x1e58))(param_1);\n  }\n  puVar3 = PTR_DAT_00190948;\n  *(char *)(param_1 + 10) = (char)param_2;\n  *(ushort *)(param_1 + 8) = uVar2 & 0x801d | 0x202;\n  *(byte **)(param_1 + 0x10) = pbVar5;\n  *(byte **)(param_1 + 0x14) = pbVar5;\n  uVar6 = (**(code **)(puVar3 + -0xb40))(pbVar5);\n  *(undefined4 *)(param_1 + 0x18) = uVar6;\n  return 0;\n}" (type_identifier "undefined4") (function_declarator "FUN_0007fed4(int param_1,int param_2)" (identifier "FUN_0007fed4") (parameter_list "(int param_1,int param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  undefined1 uVar1;\n  ushort uVar2;\n  undefined *puVar3;\n  uint uVar4;\n  byte *pbVar5;\n  undefined4 uVar6;\n  undefined1 *puVar7;\n  byte bVar8;\n  byte *pbVar9;\n  uint uVar10;\n  byte *pbVar11;\n  undefined1 *puVar12;\n  byte bVar13;\n  int iVar14;\n  byte *pbVar15;\n  byte *pbVar16;\n  byte *pbVar17;\n  \n  if (*(char *)(param_1 + 10) == '\x01') {\n    uVar4 = *(uint *)(param_1 + 0xc);\n    if (param_2 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }\n  }\n  else {\n    if (param_2 != 1) {\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }\n    uVar4 = *(uint *)(param_1 + 0xc);\n  }\n  uVar4 = uVar4 & 0xfffffffe;\n  *(uint *)(param_1 + 0xc) = uVar4;\n  iVar14 = uVar4 * 2 + 1;\nLAB_0007ff34:\n  pbVar16 = *(byte **)(param_1 + 0x10);\n  pbVar5 = (byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))\n                             (*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f);\n  puVar3 = PTR_DAT_00190b94;\n  pbVar17 = pbVar16 + uVar4;\n  if (pbVar5 == (byte *)0x0) {\n    return 7;\n  }\n  if (*(char *)(param_1 + 10) == '\x01') {\n    pbVar15 = pbVar5;\n    if (param_2 == 2) {\n      iVar14 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }\n    *(int *)(param_1 + 0xc) = iVar14;\n    pbVar9 = pbVar15 + 1;\n    *pbVar15 = 0;\n  }\n  else {\n    pbVar9 = pbVar5;\n    if (*(char *)(param_1 + 10) == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    *(int *)(param_1 + 0xc) = iVar14;\n  }\n  *pbVar9 = 0;\n  uVar2 = *(ushort *)(param_1 + 8);\n  if (((uVar2 & 0x2400) != 0) || (*(int *)(param_1 + 0x18) != 0)) {\n    (*(code *)(PTR_LAB_00190ba8 + -0x1e58))(param_1);\n  }\n  puVar3 = PTR_DAT_00190948;\n  *(char *)(param_1 + 10) = (char)param_2;\n  *(ushort *)(param_1 + 8) = uVar2 & 0x801d | 0x202;\n  *(byte **)(param_1 + 0x10) = pbVar5;\n  *(byte **)(param_1 + 0x14) = pbVar5;\n  uVar6 = (**(code **)(puVar3 + -0xb40))(pbVar5);\n  *(undefined4 *)(param_1 + 0x18) = uVar6;\n  return 0;\n}" ({ "{") (declaration "undefined1 uVar1;" (type_identifier "undefined1") (identifier "uVar1") (; ";")) (declaration "ushort uVar2;" (type_identifier "ushort") (identifier "uVar2") (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "undefined1 *puVar7;" (type_identifier "undefined1") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "byte bVar8;" (type_identifier "byte") (identifier "bVar8") (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "byte *pbVar11;" (type_identifier "byte") (pointer_declarator "*pbVar11" (* "*") (identifier "pbVar11")) (; ";")) (declaration "undefined1 *puVar12;" (type_identifier "undefined1") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "byte bVar13;" (type_identifier "byte") (identifier "bVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "byte *pbVar15;" (type_identifier "byte") (pointer_declarator "*pbVar15" (* "*") (identifier "pbVar15")) (; ";")) (declaration "byte *pbVar16;" (type_identifier "byte") (pointer_declarator "*pbVar16" (* "*") (identifier "pbVar16")) (; ";")) (declaration "byte *pbVar17;" (type_identifier "byte") (pointer_declarator "*pbVar17" (* "*") (identifier "pbVar17")) (; ";")) (if_statement "if (*(char *)(param_1 + 10) == '\x01') {\n    uVar4 = *(uint *)(param_1 + 0xc);\n    if (param_2 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }\n  }\n  else {\n    if (param_2 != 1) {\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }\n    uVar4 = *(uint *)(param_1 + 0xc);\n  }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 10) == '\x01')" (( "(") (binary_expression "*(char *)(param_1 + 10) == '\x01'" (pointer_expression "*(char *)(param_1 + 10)" (* "*") (cast_expression "(char *)(param_1 + 10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")")))) (== "==") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (compound_statement "{\n    uVar4 = *(uint *)(param_1 + 0xc);\n    if (param_2 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }\n  }" ({ "{") (expression_statement "uVar4 = *(uint *)(param_1 + 0xc);" (assignment_expression "uVar4 = *(uint *)(param_1 + 0xc)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(param_1 + 0xc)" (* "*") (cast_expression "(uint *)(param_1 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (param_2 != 1) {\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }" (if "if") (parenthesized_expression "(param_2 != 1)" (( "(") (binary_expression "param_2 != 1" (identifier "param_2") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n      iVar14 = (uVar4 + 1) * 2;\n      goto LAB_0007ff34;\n    }" ({ "{") (expression_statement "iVar14 = (uVar4 + 1) * 2;" (assignment_expression "iVar14 = (uVar4 + 1) * 2" (identifier "iVar14") (= "=") (binary_expression "(uVar4 + 1) * 2" (parenthesized_expression "(uVar4 + 1)" (( "(") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "2"))) (; ";")) (goto_statement "goto LAB_0007ff34;" (goto "goto") (statement_identifier "LAB_0007ff34") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    if (param_2 != 1) {\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }\n    uVar4 = *(uint *)(param_1 + 0xc);\n  }" (else "else") (compound_statement "{\n    if (param_2 != 1) {\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }\n    uVar4 = *(uint *)(param_1 + 0xc);\n  }" ({ "{") (if_statement "if (param_2 != 1) {\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }" (if "if") (parenthesized_expression "(param_2 != 1)" (( "(") (binary_expression "param_2 != 1" (identifier "param_2") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n      iVar14 = FUN_0007d470();\n      if (iVar14 != 0) {\n        return 7;\n      }\n      puVar7 = *(undefined1 **)(param_1 + 0x10);\n      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);\n      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }\n      *(char *)(param_1 + 10) = (char)param_2;\n      return 0;\n    }" ({ "{") (expression_statement "iVar14 = FUN_0007d470();" (assignment_expression "iVar14 = FUN_0007d470()" (identifier "iVar14") (= "=") (call_expression "FUN_0007d470()" (identifier "FUN_0007d470") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar14 != 0) {\n        return 7;\n      }" (if "if") (parenthesized_expression "(iVar14 != 0)" (( "(") (binary_expression "iVar14 != 0" (identifier "iVar14") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        return 7;\n      }" ({ "{") (return_statement "return 7;" (return "return") (number_literal "7") (; ";")) (} "}"))) (expression_statement "puVar7 = *(undefined1 **)(param_1 + 0x10);" (assignment_expression "puVar7 = *(undefined1 **)(param_1 + 0x10)" (identifier "puVar7") (= "=") (pointer_expression "*(undefined1 **)(param_1 + 0x10)" (* "*") (cast_expression "(undefined1 **)(param_1 + 0x10)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);" (assignment_expression "puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe)" (identifier "puVar12") (= "=") (binary_expression "puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe)" (identifier "puVar7") (+ "+") (parenthesized_expression "(*(uint *)(param_1 + 0xc) & 0xfffffffe)" (( "(") (binary_expression "*(uint *)(param_1 + 0xc) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 0xc)" (* "*") (cast_expression "(uint *)(param_1 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (& "&") (number_literal "0xfffffffe")) () ")")))) (; ";")) (for_statement "for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }" (for "for") (( "(") (; ";") (binary_expression "puVar7 < puVar12" (identifier "puVar7") (< "<") (identifier "puVar12")) (; ";") (assignment_expression "puVar7 = puVar7 + 2" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 2" (identifier "puVar7") (+ "+") (number_literal "2"))) () ")") (compound_statement "{\n        uVar1 = *puVar7;\n        *puVar7 = puVar7[1];\n        puVar7[1] = uVar1;\n      }" ({ "{") (expression_statement "uVar1 = *puVar7;" (assignment_expression "uVar1 = *puVar7" (identifier "uVar1") (= "=") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (; ";")) (expression_statement "*puVar7 = puVar7[1];" (assignment_expression "*puVar7 = puVar7[1]" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar7[1] = uVar1;" (assignment_expression "puVar7[1] = uVar1" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (} "}"))) (expression_statement "*(char *)(param_1 + 10) = (char)param_2;" (assignment_expression "*(char *)(param_1 + 10) = (char)param_2" (pointer_expression "*(char *)(param_1 + 10)" (* "*") (cast_expression "(char *)(param_1 + 10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")")))) (= "=") (cast_expression "(char)param_2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_2"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "uVar4 = *(uint *)(param_1 + 0xc);" (assignment_expression "uVar4 = *(uint *)(param_1 + 0xc)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(param_1 + 0xc)" (* "*") (cast_expression "(uint *)(param_1 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (} "}")))) (expression_statement "uVar4 = uVar4 & 0xfffffffe;" (assignment_expression "uVar4 = uVar4 & 0xfffffffe" (identifier "uVar4") (= "=") (binary_expression "uVar4 & 0xfffffffe" (identifier "uVar4") (& "&") (number_literal "0xfffffffe"))) (; ";")) (expression_statement "*(uint *)(param_1 + 0xc) = uVar4;" (assignment_expression "*(uint *)(param_1 + 0xc) = uVar4" (pointer_expression "*(uint *)(param_1 + 0xc)" (* "*") (cast_expression "(uint *)(param_1 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "iVar14 = uVar4 * 2 + 1;" (assignment_expression "iVar14 = uVar4 * 2 + 1" (identifier "iVar14") (= "=") (binary_expression "uVar4 * 2 + 1" (binary_expression "uVar4 * 2" (identifier "uVar4") (* "*") (number_literal "2")) (+ "+") (number_literal "1"))) (; ";")) (labeled_statement "LAB_0007ff34:\n  pbVar16 = *(byte **)(param_1 + 0x10);" (statement_identifier "LAB_0007ff34") (: ":") (expression_statement "pbVar16 = *(byte **)(param_1 + 0x10);" (assignment_expression "pbVar16 = *(byte **)(param_1 + 0x10)" (identifier "pbVar16") (= "=") (pointer_expression "*(byte **)(param_1 + 0x10)" (* "*") (cast_expression "(byte **)(param_1 + 0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";"))) (expression_statement "pbVar5 = (byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))\n                             (*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f);" (assignment_expression "pbVar5 = (byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))\n                             (*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f)" (identifier "pbVar5") (= "=") (cast_expression "(byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))\n                             (*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)(PTR_LAB_00190ba8 + 0x8e0))\n                             (*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba8 + 0x8e0))" (( "(") (pointer_expression "*(code *)(PTR_LAB_00190ba8 + 0x8e0)" (* "*") (cast_expression "(code *)(PTR_LAB_00190ba8 + 0x8e0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190ba8 + 0x8e0)" (( "(") (binary_expression "PTR_LAB_00190ba8 + 0x8e0" (identifier "PTR_LAB_00190ba8") (+ "+") (number_literal "0x8e0")) () ")")))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x20)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (identifier "param_2") (, ",") (binary_expression "iVar14 >> 0x1f" (identifier "iVar14") (>> ">>") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "puVar3 = PTR_DAT_00190b94;" (assignment_expression "puVar3 = PTR_DAT_00190b94" (identifier "puVar3") (= "=") (identifier "PTR_DAT_00190b94")) (; ";")) (expression_statement "pbVar17 = pbVar16 + uVar4;" (assignment_expression "pbVar17 = pbVar16 + uVar4" (identifier "pbVar17") (= "=") (binary_expression "pbVar16 + uVar4" (identifier "pbVar16") (+ "+") (identifier "uVar4"))) (; ";")) (if_statement "if (pbVar5 == (byte *)0x0) {\n    return 7;\n  }" (if "if") (parenthesized_expression "(pbVar5 == (byte *)0x0)" (( "(") (binary_expression "pbVar5 == (byte *)0x0" (identifier "pbVar5") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return 7;\n  }" ({ "{") (return_statement "return 7;" (return "return") (number_literal "7") (; ";")) (} "}"))) (if_statement "if (*(char *)(param_1 + 10) == '\x01') {\n    pbVar15 = pbVar5;\n    if (param_2 == 2) {\n      iVar14 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }\n    *(int *)(param_1 + 0xc) = iVar14;\n    pbVar9 = pbVar15 + 1;\n    *pbVar15 = 0;\n  }\n  else {\n    pbVar9 = pbVar5;\n    if (*(char *)(param_1 + 10) == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    *(int *)(param_1 + 0xc) = iVar14;\n  }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 10) == '\x01')" (( "(") (binary_expression "*(char *)(param_1 + 10) == '\x01'" (pointer_expression "*(char *)(param_1 + 10)" (* "*") (cast_expression "(char *)(param_1 + 10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")")))) (== "==") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (compound_statement "{\n    pbVar15 = pbVar5;\n    if (param_2 == 2) {\n      iVar14 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }\n    *(int *)(param_1 + 0xc) = iVar14;\n    pbVar9 = pbVar15 + 1;\n    *pbVar15 = 0;\n  }" ({ "{") (expression_statement "pbVar15 = pbVar5;" (assignment_expression "pbVar15 = pbVar5" (identifier "pbVar15") (= "=") (identifier "pbVar5")) (; ";")) (if_statement "if (param_2 == 2) {\n      iVar14 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }" (if "if") (parenthesized_expression "(param_2 == 2)" (( "(") (binary_expression "param_2 == 2" (identifier "param_2") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n      iVar14 = 0;\n      pbVar9 = pbVar5;\n      if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }" ({ "{") (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" (identifier "iVar14") (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar9 = pbVar5;" (assignment_expression "pbVar9 = pbVar5" (identifier "pbVar9") (= "=") (identifier "pbVar5")) (; ";")) (if_statement "if (pbVar17 > pbVar16) {\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }" (if "if") (parenthesized_expression "(pbVar17 > pbVar16)" (( "(") (binary_expression "pbVar17 > pbVar16" (identifier "pbVar17") (> ">") (identifier "pbVar16")) () ")")) (compound_statement "{\n        do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }" ({ "{") (do_statement "do {\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);" (do "do") (compound_statement "{\n          bVar8 = *pbVar16;\n          pbVar11 = pbVar16 + 1;\n          if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }\n          bVar8 = puVar3[bVar8 - 0x3f94];\n          if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }\n          iVar14 = (int)pbVar15 - (int)pbVar5;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        }" ({ "{") (expression_statement "bVar8 = *pbVar16;" (assignment_expression "bVar8 = *pbVar16" (identifier "bVar8") (= "=") (pointer_expression "*pbVar16" (* "*") (identifier "pbVar16"))) (; ";")) (expression_statement "pbVar11 = pbVar16 + 1;" (assignment_expression "pbVar11 = pbVar16 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar16 + 1" (identifier "pbVar16") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (bVar8 < 0xc0) {\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }" (if "if") (parenthesized_expression "(bVar8 < 0xc0)" (( "(") (binary_expression "bVar8 < 0xc0" (identifier "bVar8") (< "<") (number_literal "0xc0")) () ")")) (compound_statement "{\n            bVar13 = 0;\n            goto LAB_0008030c;\n          }" ({ "{") (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" (identifier "bVar13") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0008030c;" (goto "goto") (statement_identifier "LAB_0008030c") (; ";")) (} "}"))) (expression_statement "bVar8 = puVar3[bVar8 - 0x3f94];" (assignment_expression "bVar8 = puVar3[bVar8 - 0x3f94]" (identifier "bVar8") (= "=") (subscript_expression "puVar3[bVar8 - 0x3f94]" (identifier "puVar3") ([ "[") (binary_expression "bVar8 - 0x3f94" (identifier "bVar8") (- "-") (number_literal "0x3f94")) (] "]"))) (; ";")) (if_statement "if (pbVar17 == pbVar11) {\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }\n          else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }" (if "if") (parenthesized_expression "(pbVar17 == pbVar11)" (( "(") (binary_expression "pbVar17 == pbVar11" (identifier "pbVar17") (== "==") (identifier "pbVar11")) () ")")) (compound_statement "{\nLAB_00080558:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_0008030c:\n            *pbVar9 = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9[1] = bVar13;\n          }" ({ "{") (labeled_statement "LAB_00080558:\n            bVar13 = 0xff;" (statement_identifier "LAB_00080558") (: ":") (expression_statement "bVar13 = 0xff;" (assignment_expression "bVar13 = 0xff" (identifier "bVar13") (= "=") (number_literal "0xff")) (; ";"))) (if_statement "if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }" (if "if") (parenthesized_expression "(bVar8 < 0x80)" (( "(") (binary_expression "bVar8 < 0x80" (identifier "bVar8") (< "<") (number_literal "0x80")) () ")")) (compound_statement "{\n              bVar8 = 0xfd;\n            }" ({ "{") (expression_statement "bVar8 = 0xfd;" (assignment_expression "bVar8 = 0xfd" (identifier "bVar8") (= "=") (number_literal "0xfd")) (; ";")) (} "}")) (else_clause "else {\n              bVar13 = 0;\n            }" (else "else") (compound_statement "{\n              bVar13 = 0;\n            }" ({ "{") (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" (identifier "bVar13") (= "=") (number_literal "0")) (; ";")) (} "}")))) (labeled_statement "LAB_0008030c:\n            *pbVar9 = bVar8;" (statement_identifier "LAB_0008030c") (: ":") (expression_statement "*pbVar9 = bVar8;" (assignment_expression "*pbVar9 = bVar8" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (= "=") (identifier "bVar8")) (; ";"))) (expression_statement "pbVar15 = pbVar9 + 2;" (assignment_expression "pbVar15 = pbVar9 + 2" (identifier "pbVar15") (= "=") (binary_expression "pbVar9 + 2" (identifier "pbVar9") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "pbVar9[1] = bVar13;" (assignment_expression "pbVar9[1] = bVar13" (subscript_expression "pbVar9[1]" (identifier "pbVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (} "}")) (else_clause "else {\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }" (else "else") (compound_statement "{\n            uVar4 = (uint)pbVar16[1];\n            iVar14 = (uint)bVar8 << 6;\n            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;\n            while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }\n            if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }\n            bVar8 = (byte)uVar10;\n            bVar13 = (byte)(uVar10 >> 8);\n            if (uVar10 < 0x10000) goto LAB_0008030c;\n            pbVar9[2] = bVar8;\n            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n            pbVar15 = pbVar9 + 4;\n            pbVar9[3] = (bVar13 & 3) - 0x24;\n          }" ({ "{") (expression_statement "uVar4 = (uint)pbVar16[1];" (assignment_expression "uVar4 = (uint)pbVar16[1]" (identifier "uVar4") (= "=") (cast_expression "(uint)pbVar16[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar16[1]" (identifier "pbVar16") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "iVar14 = (uint)bVar8 << 6;" (assignment_expression "iVar14 = (uint)bVar8 << 6" (identifier "iVar14") (= "=") (binary_expression "(uint)bVar8 << 6" (cast_expression "(uint)bVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar8")) (<< "<<") (number_literal "6"))) (; ";")) (if_statement "if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;" (if "if") (parenthesized_expression "((uVar4 & 0xffffffc0) != 0x80)" (( "(") (binary_expression "(uVar4 & 0xffffffc0) != 0x80" (parenthesized_expression "(uVar4 & 0xffffffc0)" (( "(") (binary_expression "uVar4 & 0xffffffc0" (identifier "uVar4") (& "&") (number_literal "0xffffffc0")) () ")")) (!= "!=") (number_literal "0x80")) () ")")) (goto_statement "goto LAB_00080558;" (goto "goto") (statement_identifier "LAB_00080558") (; ";"))) (while_statement "while( true ) {\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n              pbVar11 = pbVar11 + 1;\n              uVar10 = (uVar4 & 0x3f) + iVar14;\n              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;\n              iVar14 = uVar10 * 0x40;\n            }" ({ "{") (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + 1" (identifier "pbVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar10 = (uVar4 & 0x3f) + iVar14;" (assignment_expression "uVar10 = (uVar4 & 0x3f) + iVar14" (identifier "uVar10") (= "=") (binary_expression "(uVar4 & 0x3f) + iVar14" (parenthesized_expression "(uVar4 & 0x3f)" (( "(") (binary_expression "uVar4 & 0x3f" (identifier "uVar4") (& "&") (number_literal "0x3f")) () ")")) (+ "+") (identifier "iVar14"))) (; ";")) (if_statement "if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n              break;" (if "if") (parenthesized_expression "((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))" (( "(") (binary_expression "(pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80)" (parenthesized_expression "(pbVar17 == pbVar11)" (( "(") (binary_expression "pbVar17 == pbVar11" (identifier "pbVar17") (== "==") (identifier "pbVar11")) () ")")) (|| "||") (parenthesized_expression "(uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80)" (( "(") (comma_expression "uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80" (assignment_expression "uVar4 = (uint)*pbVar11" (identifier "uVar4") (= "=") (binary_expression "(uint)*pbVar11" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar11"))) (, ",") (binary_expression "(uVar4 & 0xffffffc0) != 0x80" (parenthesized_expression "(uVar4 & 0xffffffc0)" (( "(") (binary_expression "uVar4 & 0xffffffc0" (identifier "uVar4") (& "&") (number_literal "0xffffffc0")) () ")")) (!= "!=") (number_literal "0x80"))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar14 = uVar10 * 0x40;" (assignment_expression "iVar14 = uVar10 * 0x40" (identifier "iVar14") (= "=") (binary_expression "uVar10 * 0x40" (identifier "uVar10") (* "*") (number_literal "0x40"))) (; ";")) (} "}"))) (if_statement "if ((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }" (if "if") (parenthesized_expression "((uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe))))" (( "(") (binary_expression "(uVar10 < 0x80) ||\n               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))" (parenthesized_expression "(uVar10 < 0x80)" (( "(") (binary_expression "uVar10 < 0x80" (identifier "uVar10") (< "<") (number_literal "0x80")) () ")")) (|| "||") (parenthesized_expression "(((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))" (( "(") (parenthesized_expression "((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe))" (( "(") (binary_expression "(uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)" (binary_expression "(uVar10 & 0xfffff800) == 0xd800" (parenthesized_expression "(uVar10 & 0xfffff800)" (( "(") (binary_expression "uVar10 & 0xfffff800" (identifier "uVar10") (& "&") (number_literal "0xfffff800")) () ")")) (== "==") (number_literal "0xd800")) (|| "||") (parenthesized_expression "((uVar10 & 0xfffffffe) == 0xfffe)" (( "(") (binary_expression "(uVar10 & 0xfffffffe) == 0xfffe" (parenthesized_expression "(uVar10 & 0xfffffffe)" (( "(") (binary_expression "uVar10 & 0xfffffffe" (identifier "uVar10") (& "&") (number_literal "0xfffffffe")) () ")")) (== "==") (number_literal "0xfffe")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n              bVar13 = 0xff;\n              bVar8 = 0xfd;\n              goto LAB_0008030c;\n            }" ({ "{") (expression_statement "bVar13 = 0xff;" (assignment_expression "bVar13 = 0xff" (identifier "bVar13") (= "=") (number_literal "0xff")) (; ";")) (expression_statement "bVar8 = 0xfd;" (assignment_expression "bVar8 = 0xfd" (identifier "bVar8") (= "=") (number_literal "0xfd")) (; ";")) (goto_statement "goto LAB_0008030c;" (goto "goto") (statement_identifier "LAB_0008030c") (; ";")) (} "}"))) (expression_statement "bVar8 = (byte)uVar10;" (assignment_expression "bVar8 = (byte)uVar10" (identifier "bVar8") (= "=") (cast_expression "(byte)uVar10" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar10"))) (; ";")) (expression_statement "bVar13 = (byte)(uVar10 >> 8);" (assignment_expression "bVar13 = (byte)(uVar10 >> 8)" (identifier "bVar13") (= "=") (call_expression "(byte)(uVar10 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar10 >> 8)" (( "(") (binary_expression "uVar10 >> 8" (identifier "uVar10") (>> ">>") (number_literal "8")) () ")")))) (; ";")) (if_statement "if (uVar10 < 0x10000) goto LAB_0008030c;" (if "if") (parenthesized_expression "(uVar10 < 0x10000)" (( "(") (binary_expression "uVar10 < 0x10000" (identifier "uVar10") (< "<") (number_literal "0x10000")) () ")")) (goto_statement "goto LAB_0008030c;" (goto "goto") (statement_identifier "LAB_0008030c") (; ";"))) (expression_statement "pbVar9[2] = bVar8;" (assignment_expression "pbVar9[2] = bVar8" (subscript_expression "pbVar9[2]" (identifier "pbVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar8")) (; ";")) (expression_statement "pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;" (assignment_expression "pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28" (subscript_expression "pbVar9[1]" (identifier "pbVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "(byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28" (call_expression "(byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uVar10 - 0x10000) * 0x1000 >> 0x1e)" (( "(") (binary_expression "(uVar10 - 0x10000) * 0x1000 >> 0x1e" (binary_expression "(uVar10 - 0x10000) * 0x1000" (parenthesized_expression "(uVar10 - 0x10000)" (( "(") (binary_expression "uVar10 - 0x10000" (identifier "uVar10") (- "-") (number_literal "0x10000")) () ")")) (* "*") (number_literal "0x1000")) (>> ">>") (number_literal "0x1e")) () ")"))) (- "-") (number_literal "0x28"))) (; ";")) (expression_statement "*pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;" (assignment_expression "*pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (= "=") (binary_expression "bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0" (binary_expression "bVar13 >> 2" (identifier "bVar13") (>> ">>") (number_literal "2")) (| "|") (binary_expression "(byte)(uVar10 - 0x10000 >> 10) & 0xc0" (call_expression "(byte)(uVar10 - 0x10000 >> 10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar10 - 0x10000 >> 10)" (( "(") (binary_expression "uVar10 - 0x10000 >> 10" (binary_expression "uVar10 - 0x10000" (identifier "uVar10") (- "-") (number_literal "0x10000")) (>> ">>") (number_literal "10")) () ")"))) (& "&") (number_literal "0xc0")))) (; ";")) (expression_statement "pbVar15 = pbVar9 + 4;" (assignment_expression "pbVar15 = pbVar9 + 4" (identifier "pbVar15") (= "=") (binary_expression "pbVar9 + 4" (identifier "pbVar9") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "pbVar9[3] = (bVar13 & 3) - 0x24;" (assignment_expression "pbVar9[3] = (bVar13 & 3) - 0x24" (subscript_expression "pbVar9[3]" (identifier "pbVar9") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "(bVar13 & 3) - 0x24" (parenthesized_expression "(bVar13 & 3)" (( "(") (binary_expression "bVar13 & 3" (identifier "bVar13") (& "&") (number_literal "3")) () ")")) (- "-") (number_literal "0x24"))) (; ";")) (} "}")))) (expression_statement "iVar14 = (int)pbVar15 - (int)pbVar5;" (assignment_expression "iVar14 = (int)pbVar15 - (int)pbVar5" (identifier "iVar14") (= "=") (binary_expression "(int)pbVar15 - (int)pbVar5" (cast_expression "(int)pbVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar15")) (- "-") (cast_expression "(int)pbVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar5")))) (; ";")) (expression_statement "pbVar9 = pbVar15;" (assignment_expression "pbVar9 = pbVar15" (identifier "pbVar9") (= "=") (identifier "pbVar15")) (; ";")) (expression_statement "pbVar16 = pbVar11;" (assignment_expression "pbVar16 = pbVar11" (identifier "pbVar16") (= "=") (identifier "pbVar11")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar11 < pbVar17)" (( "(") (binary_expression "pbVar11 < pbVar17" (identifier "pbVar11") (< "<") (identifier "pbVar17")) () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }" (else "else") (compound_statement "{\n      pbVar9 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }\n    }" ({ "{") (expression_statement "pbVar9 = pbVar5;" (assignment_expression "pbVar9 = pbVar5" (identifier "pbVar9") (= "=") (identifier "pbVar5")) (; ";")) (if_statement "if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }" (if "if") (parenthesized_expression "(pbVar17 <= pbVar16)" (( "(") (binary_expression "pbVar17 <= pbVar16" (identifier "pbVar17") (<= "<=") (identifier "pbVar16")) () ")")) (compound_statement "{\n        iVar14 = 0;\n      }" ({ "{") (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" (identifier "iVar14") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }" (else "else") (compound_statement "{\n        do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\nLAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;\n      }" ({ "{") (do_statement "do {\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);" (do "do") (compound_statement "{\n          while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }\n          uVar4 = (uint)pbVar16[1];\n          iVar14 = (uint)bVar8 << 6;\n          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;\n          while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }\n          if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }\n          bVar13 = (byte)(uVar10 >> 8);\n          bVar8 = (byte)uVar10;\n          if (uVar10 < 0x10000) goto LAB_000801d8;\n          pbVar9[3] = bVar8;\n          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;\n          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;\n          pbVar15 = pbVar9 + 4;\n          pbVar9[2] = (bVar13 & 3) - 0x24;\n          pbVar9 = pbVar15;\n          pbVar16 = pbVar11;\n        }" ({ "{") (while_statement "while( true ) {\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            bVar8 = *pbVar16;\n            pbVar11 = pbVar16 + 1;\n            if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }\n            bVar8 = puVar3[bVar8 - 0x3f94];\n            if (pbVar17 != pbVar11) break;\nLAB_00080538:\n            bVar13 = 0xff;\n            if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }\nLAB_000801d8:\n            *pbVar9 = bVar13;\n            pbVar9[1] = bVar8;\n            pbVar15 = pbVar9 + 2;\n            pbVar9 = pbVar15;\n            pbVar16 = pbVar11;\n            if (pbVar17 <= pbVar11) goto LAB_000802c0;\n          }" ({ "{") (expression_statement "bVar8 = *pbVar16;" (assignment_expression "bVar8 = *pbVar16" (identifier "bVar8") (= "=") (pointer_expression "*pbVar16" (* "*") (identifier "pbVar16"))) (; ";")) (expression_statement "pbVar11 = pbVar16 + 1;" (assignment_expression "pbVar11 = pbVar16 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar16 + 1" (identifier "pbVar16") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (bVar8 < 0xc0) {\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }" (if "if") (parenthesized_expression "(bVar8 < 0xc0)" (( "(") (binary_expression "bVar8 < 0xc0" (identifier "bVar8") (< "<") (number_literal "0xc0")) () ")")) (compound_statement "{\n              bVar13 = 0;\n              goto LAB_000801d8;\n            }" ({ "{") (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" (identifier "bVar13") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_000801d8;" (goto "goto") (statement_identifier "LAB_000801d8") (; ";")) (} "}"))) (expression_statement "bVar8 = puVar3[bVar8 - 0x3f94];" (assignment_expression "bVar8 = puVar3[bVar8 - 0x3f94]" (identifier "bVar8") (= "=") (subscript_expression "puVar3[bVar8 - 0x3f94]" (identifier "puVar3") ([ "[") (binary_expression "bVar8 - 0x3f94" (identifier "bVar8") (- "-") (number_literal "0x3f94")) (] "]"))) (; ";")) (if_statement "if (pbVar17 != pbVar11) break;" (if "if") (parenthesized_expression "(pbVar17 != pbVar11)" (( "(") (binary_expression "pbVar17 != pbVar11" (identifier "pbVar17") (!= "!=") (identifier "pbVar11")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00080538:\n            bVar13 = 0xff;" (statement_identifier "LAB_00080538") (: ":") (expression_statement "bVar13 = 0xff;" (assignment_expression "bVar13 = 0xff" (identifier "bVar13") (= "=") (number_literal "0xff")) (; ";"))) (if_statement "if (bVar8 < 0x80) {\n              bVar8 = 0xfd;\n            }\n            else {\n              bVar13 = 0;\n            }" (if "if") (parenthesized_expression "(bVar8 < 0x80)" (( "(") (binary_expression "bVar8 < 0x80" (identifier "bVar8") (< "<") (number_literal "0x80")) () ")")) (compound_statement "{\n              bVar8 = 0xfd;\n            }" ({ "{") (expression_statement "bVar8 = 0xfd;" (assignment_expression "bVar8 = 0xfd" (identifier "bVar8") (= "=") (number_literal "0xfd")) (; ";")) (} "}")) (else_clause "else {\n              bVar13 = 0;\n            }" (else "else") (compound_statement "{\n              bVar13 = 0;\n            }" ({ "{") (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" (identifier "bVar13") (= "=") (number_literal "0")) (; ";")) (} "}")))) (labeled_statement "LAB_000801d8:\n            *pbVar9 = bVar13;" (statement_identifier "LAB_000801d8") (: ":") (expression_statement "*pbVar9 = bVar13;" (assignment_expression "*pbVar9 = bVar13" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (= "=") (identifier "bVar13")) (; ";"))) (expression_statement "pbVar9[1] = bVar8;" (assignment_expression "pbVar9[1] = bVar8" (subscript_expression "pbVar9[1]" (identifier "pbVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar8")) (; ";")) (expression_statement "pbVar15 = pbVar9 + 2;" (assignment_expression "pbVar15 = pbVar9 + 2" (identifier "pbVar15") (= "=") (binary_expression "pbVar9 + 2" (identifier "pbVar9") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "pbVar9 = pbVar15;" (assignment_expression "pbVar9 = pbVar15" (identifier "pbVar9") (= "=") (identifier "pbVar15")) (; ";")) (expression_statement "pbVar16 = pbVar11;" (assignment_expression "pbVar16 = pbVar11" (identifier "pbVar16") (= "=") (identifier "pbVar11")) (; ";")) (if_statement "if (pbVar17 <= pbVar11) goto LAB_000802c0;" (if "if") (parenthesized_expression "(pbVar17 <= pbVar11)" (( "(") (binary_expression "pbVar17 <= pbVar11" (identifier "pbVar17") (<= "<=") (identifier "pbVar11")) () ")")) (goto_statement "goto LAB_000802c0;" (goto "goto") (statement_identifier "LAB_000802c0") (; ";"))) (} "}"))) (expression_statement "uVar4 = (uint)pbVar16[1];" (assignment_expression "uVar4 = (uint)pbVar16[1]" (identifier "uVar4") (= "=") (cast_expression "(uint)pbVar16[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar16[1]" (identifier "pbVar16") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "iVar14 = (uint)bVar8 << 6;" (assignment_expression "iVar14 = (uint)bVar8 << 6" (identifier "iVar14") (= "=") (binary_expression "(uint)bVar8 << 6" (cast_expression "(uint)bVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar8")) (<< "<<") (number_literal "6"))) (; ";")) (if_statement "if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;" (if "if") (parenthesized_expression "((uVar4 & 0xffffffc0) != 0x80)" (( "(") (binary_expression "(uVar4 & 0xffffffc0) != 0x80" (parenthesized_expression "(uVar4 & 0xffffffc0)" (( "(") (binary_expression "uVar4 & 0xffffffc0" (identifier "uVar4") (& "&") (number_literal "0xffffffc0")) () ")")) (!= "!=") (number_literal "0x80")) () ")")) (goto_statement "goto LAB_00080538;" (goto "goto") (statement_identifier "LAB_00080538") (; ";"))) (while_statement "while( true ) {\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            pbVar11 = pbVar11 + 1;\n            uVar10 = (uVar4 & 0x3f) + iVar14;\n            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;\n            iVar14 = uVar10 * 0x40;\n          }" ({ "{") (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + 1" (identifier "pbVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar10 = (uVar4 & 0x3f) + iVar14;" (assignment_expression "uVar10 = (uVar4 & 0x3f) + iVar14" (identifier "uVar10") (= "=") (binary_expression "(uVar4 & 0x3f) + iVar14" (parenthesized_expression "(uVar4 & 0x3f)" (( "(") (binary_expression "uVar4 & 0x3f" (identifier "uVar4") (& "&") (number_literal "0x3f")) () ")")) (+ "+") (identifier "iVar14"))) (; ";")) (if_statement "if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))\n            break;" (if "if") (parenthesized_expression "((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))" (( "(") (binary_expression "(pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80)" (parenthesized_expression "(pbVar17 == pbVar11)" (( "(") (binary_expression "pbVar17 == pbVar11" (identifier "pbVar17") (== "==") (identifier "pbVar11")) () ")")) (|| "||") (parenthesized_expression "(uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80)" (( "(") (comma_expression "uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80" (assignment_expression "uVar4 = (uint)*pbVar11" (identifier "uVar4") (= "=") (binary_expression "(uint)*pbVar11" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar11"))) (, ",") (binary_expression "(uVar4 & 0xffffffc0) != 0x80" (parenthesized_expression "(uVar4 & 0xffffffc0)" (( "(") (binary_expression "uVar4 & 0xffffffc0" (identifier "uVar4") (& "&") (number_literal "0xffffffc0")) () ")")) (!= "!=") (number_literal "0x80"))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar14 = uVar10 * 0x40;" (assignment_expression "iVar14 = uVar10 * 0x40" (identifier "iVar14") (= "=") (binary_expression "uVar10 * 0x40" (identifier "uVar10") (* "*") (number_literal "0x40"))) (; ";")) (} "}"))) (if_statement "if ((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }" (if "if") (parenthesized_expression "((uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe))))" (( "(") (binary_expression "(uVar10 < 0x80) ||\n             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))" (parenthesized_expression "(uVar10 < 0x80)" (( "(") (binary_expression "uVar10 < 0x80" (identifier "uVar10") (< "<") (number_literal "0x80")) () ")")) (|| "||") (parenthesized_expression "(((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))" (( "(") (parenthesized_expression "((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe))" (( "(") (binary_expression "(uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)" (binary_expression "(uVar10 & 0xfffff800) == 0xd800" (parenthesized_expression "(uVar10 & 0xfffff800)" (( "(") (binary_expression "uVar10 & 0xfffff800" (identifier "uVar10") (& "&") (number_literal "0xfffff800")) () ")")) (== "==") (number_literal "0xd800")) (|| "||") (parenthesized_expression "((uVar10 & 0xfffffffe) == 0xfffe)" (( "(") (binary_expression "(uVar10 & 0xfffffffe) == 0xfffe" (parenthesized_expression "(uVar10 & 0xfffffffe)" (( "(") (binary_expression "uVar10 & 0xfffffffe" (identifier "uVar10") (& "&") (number_literal "0xfffffffe")) () ")")) (== "==") (number_literal "0xfffe")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n            bVar8 = 0xfd;\n            bVar13 = 0xff;\n            goto LAB_000801d8;\n          }" ({ "{") (expression_statement "bVar8 = 0xfd;" (assignment_expression "bVar8 = 0xfd" (identifier "bVar8") (= "=") (number_literal "0xfd")) (; ";")) (expression_statement "bVar13 = 0xff;" (assignment_expression "bVar13 = 0xff" (identifier "bVar13") (= "=") (number_literal "0xff")) (; ";")) (goto_statement "goto LAB_000801d8;" (goto "goto") (statement_identifier "LAB_000801d8") (; ";")) (} "}"))) (expression_statement "bVar13 = (byte)(uVar10 >> 8);" (assignment_expression "bVar13 = (byte)(uVar10 >> 8)" (identifier "bVar13") (= "=") (call_expression "(byte)(uVar10 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar10 >> 8)" (( "(") (binary_expression "uVar10 >> 8" (identifier "uVar10") (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "bVar8 = (byte)uVar10;" (assignment_expression "bVar8 = (byte)uVar10" (identifier "bVar8") (= "=") (cast_expression "(byte)uVar10" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar10"))) (; ";")) (if_statement "if (uVar10 < 0x10000) goto LAB_000801d8;" (if "if") (parenthesized_expression "(uVar10 < 0x10000)" (( "(") (binary_expression "uVar10 < 0x10000" (identifier "uVar10") (< "<") (number_literal "0x10000")) () ")")) (goto_statement "goto LAB_000801d8;" (goto "goto") (statement_identifier "LAB_000801d8") (; ";"))) (expression_statement "pbVar9[3] = bVar8;" (assignment_expression "pbVar9[3] = bVar8" (subscript_expression "pbVar9[3]" (identifier "pbVar9") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "bVar8")) (; ";")) (expression_statement "*pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;" (assignment_expression "*pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (= "=") (binary_expression "(byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28" (call_expression "(byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uVar10 - 0x10000) * 0x1000 >> 0x1e)" (( "(") (binary_expression "(uVar10 - 0x10000) * 0x1000 >> 0x1e" (binary_expression "(uVar10 - 0x10000) * 0x1000" (parenthesized_expression "(uVar10 - 0x10000)" (( "(") (binary_expression "uVar10 - 0x10000" (identifier "uVar10") (- "-") (number_literal "0x10000")) () ")")) (* "*") (number_literal "0x1000")) (>> ">>") (number_literal "0x1e")) () ")"))) (- "-") (number_literal "0x28"))) (; ";")) (expression_statement "pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;" (assignment_expression "pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0" (subscript_expression "pbVar9[1]" (identifier "pbVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0" (binary_expression "bVar13 >> 2" (identifier "bVar13") (>> ">>") (number_literal "2")) (| "|") (binary_expression "(byte)(uVar10 - 0x10000 >> 10) & 0xc0" (call_expression "(byte)(uVar10 - 0x10000 >> 10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar10 - 0x10000 >> 10)" (( "(") (binary_expression "uVar10 - 0x10000 >> 10" (binary_expression "uVar10 - 0x10000" (identifier "uVar10") (- "-") (number_literal "0x10000")) (>> ">>") (number_literal "10")) () ")"))) (& "&") (number_literal "0xc0")))) (; ";")) (expression_statement "pbVar15 = pbVar9 + 4;" (assignment_expression "pbVar15 = pbVar9 + 4" (identifier "pbVar15") (= "=") (binary_expression "pbVar9 + 4" (identifier "pbVar9") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "pbVar9[2] = (bVar13 & 3) - 0x24;" (assignment_expression "pbVar9[2] = (bVar13 & 3) - 0x24" (subscript_expression "pbVar9[2]" (identifier "pbVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "(bVar13 & 3) - 0x24" (parenthesized_expression "(bVar13 & 3)" (( "(") (binary_expression "bVar13 & 3" (identifier "bVar13") (& "&") (number_literal "3")) () ")")) (- "-") (number_literal "0x24"))) (; ";")) (expression_statement "pbVar9 = pbVar15;" (assignment_expression "pbVar9 = pbVar15" (identifier "pbVar9") (= "=") (identifier "pbVar15")) (; ";")) (expression_statement "pbVar16 = pbVar11;" (assignment_expression "pbVar16 = pbVar11" (identifier "pbVar16") (= "=") (identifier "pbVar11")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar11 < pbVar17)" (( "(") (binary_expression "pbVar11 < pbVar17" (identifier "pbVar11") (< "<") (identifier "pbVar17")) () ")")) (; ";")) (labeled_statement "LAB_000802c0:\n        iVar14 = (int)pbVar15 - (int)pbVar5;" (statement_identifier "LAB_000802c0") (: ":") (expression_statement "iVar14 = (int)pbVar15 - (int)pbVar5;" (assignment_expression "iVar14 = (int)pbVar15 - (int)pbVar5" (identifier "iVar14") (= "=") (binary_expression "(int)pbVar15 - (int)pbVar5" (cast_expression "(int)pbVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar15")) (- "-") (cast_expression "(int)pbVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar5")))) (; ";"))) (} "}")))) (} "}")))) (expression_statement "*(int *)(param_1 + 0xc) = iVar14;" (assignment_expression "*(int *)(param_1 + 0xc) = iVar14" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "iVar14")) (; ";")) (expression_statement "pbVar9 = pbVar15 + 1;" (assignment_expression "pbVar9 = pbVar15 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar15 + 1" (identifier "pbVar15") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pbVar15 = 0;" (assignment_expression "*pbVar15 = 0" (pointer_expression "*pbVar15" (* "*") (identifier "pbVar15")) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    pbVar9 = pbVar5;\n    if (*(char *)(param_1 + 10) == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    *(int *)(param_1 + 0xc) = iVar14;\n  }" (else "else") (compound_statement "{\n    pbVar9 = pbVar5;\n    if (*(char *)(param_1 + 10) == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }\nLAB_00080014:\n    *(int *)(param_1 + 0xc) = iVar14;\n  }" ({ "{") (expression_statement "pbVar9 = pbVar5;" (assignment_expression "pbVar9 = pbVar5" (identifier "pbVar9") (= "=") (identifier "pbVar5")) (; ";")) (if_statement "if (*(char *)(param_1 + 10) == '\x02') {\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }\n    else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 10) == '\x02')" (( "(") (binary_expression "*(char *)(param_1 + 10) == '\x02'" (pointer_expression "*(char *)(param_1 + 10)" (* "*") (cast_expression "(char *)(param_1 + 10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")")))) (== "==") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (compound_statement "{\n      pbVar15 = pbVar5;\n      if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }\n    }" ({ "{") (expression_statement "pbVar15 = pbVar5;" (assignment_expression "pbVar15 = pbVar5" (identifier "pbVar15") (= "=") (identifier "pbVar5")) (; ";")) (if_statement "if (pbVar17 <= pbVar16) {\n        iVar14 = 0;\n      }\n      else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }" (if "if") (parenthesized_expression "(pbVar17 <= pbVar16)" (( "(") (binary_expression "pbVar17 <= pbVar16" (identifier "pbVar17") (<= "<=") (identifier "pbVar16")) () ")")) (compound_statement "{\n        iVar14 = 0;\n      }" ({ "{") (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" (identifier "iVar14") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }" (else "else") (compound_statement "{\n        do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);\n      }" ({ "{") (do_statement "do {\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        } while (pbVar11 < pbVar17);" (do "do") (compound_statement "{\n          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;\n          pbVar11 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }\n          iVar14 = (int)pbVar9 - (int)pbVar5;\n          pbVar15 = pbVar9;\n          pbVar16 = pbVar11;\n        }" ({ "{") (expression_statement "uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;" (assignment_expression "uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16" (identifier "uVar4") (= "=") (binary_expression "(uint)pbVar16[1] * 0x100 + (uint)*pbVar16" (binary_expression "(uint)pbVar16[1] * 0x100" (cast_expression "(uint)pbVar16[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar16[1]" (identifier "pbVar16") ([ "[") (number_literal "1") (] "]"))) (* "*") (number_literal "0x100")) (+ "+") (binary_expression "(uint)*pbVar16" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar16")))) (; ";")) (expression_statement "pbVar11 = pbVar16 + 2;" (assignment_expression "pbVar11 = pbVar16 + 2" (identifier "pbVar11") (= "=") (binary_expression "pbVar16 + 2" (identifier "pbVar16") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "bVar8 = (byte)uVar4;" (assignment_expression "bVar8 = (byte)uVar4" (identifier "bVar8") (= "=") (cast_expression "(byte)uVar4" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar4"))) (; ";")) (if_statement "if (uVar4 - 0xd800 < 0x800) {\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }\n          else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }" (if "if") (parenthesized_expression "(uVar4 - 0xd800 < 0x800)" (( "(") (binary_expression "uVar4 - 0xd800 < 0x800" (binary_expression "uVar4 - 0xd800" (identifier "uVar4") (- "-") (number_literal "0xd800")) (< "<") (number_literal "0x800")) () ")")) (compound_statement "{\n            if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }\n          }" ({ "{") (if_statement "if (pbVar11 < pbVar17) {\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }\n            else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }" (if "if") (parenthesized_expression "(pbVar11 < pbVar17)" (( "(") (binary_expression "pbVar11 < pbVar17" (identifier "pbVar11") (< "<") (identifier "pbVar17")) () ")")) (compound_statement "{\n              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);\n              pbVar9 = pbVar15 + 4;\n              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n              pbVar11 = pbVar16 + 4;\n              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;\n              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;\n            }" ({ "{") (expression_statement "iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff);" (assignment_expression "iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff)" (identifier "iVar14") (= "=") (binary_expression "((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +\n                       (uVar4 * 0x400 & 0xffff)" (parenthesized_expression "((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff)" (( "(") (binary_expression "(uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff" (binary_expression "(uint)pbVar16[3] * 0x100 + (uint)pbVar16[2]" (binary_expression "(uint)pbVar16[3] * 0x100" (cast_expression "(uint)pbVar16[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar16[3]" (identifier "pbVar16") ([ "[") (number_literal "3") (] "]"))) (* "*") (number_literal "0x100")) (+ "+") (cast_expression "(uint)pbVar16[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar16[2]" (identifier "pbVar16") ([ "[") (number_literal "2") (] "]")))) (& "&") (number_literal "0x3ff")) () ")")) (+ "+") (parenthesized_expression "(uVar4 * 0x400 & 0xffff)" (( "(") (binary_expression "uVar4 * 0x400 & 0xffff" (binary_expression "uVar4 * 0x400" (identifier "uVar4") (* "*") (number_literal "0x400")) (& "&") (number_literal "0xffff")) () ")")))) (; ";")) (expression_statement "pbVar9 = pbVar15 + 4;" (assignment_expression "pbVar9 = pbVar15 + 4" (identifier "pbVar9") (= "=") (binary_expression "pbVar15 + 4" (identifier "pbVar15") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;" (assignment_expression "uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400" (identifier "uVar4") (= "=") (binary_expression "iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400" (identifier "iVar14") (+ "+") (binary_expression "((uVar4 & 0x3c0) + 0x40) * 0x400" (parenthesized_expression "((uVar4 & 0x3c0) + 0x40)" (( "(") (binary_expression "(uVar4 & 0x3c0) + 0x40" (parenthesized_expression "(uVar4 & 0x3c0)" (( "(") (binary_expression "uVar4 & 0x3c0" (identifier "uVar4") (& "&") (number_literal "0x3c0")) () ")")) (+ "+") (number_literal "0x40")) () ")")) (* "*") (number_literal "0x400")))) (; ";")) (expression_statement "pbVar11 = pbVar16 + 4;" (assignment_expression "pbVar11 = pbVar16 + 4" (identifier "pbVar11") (= "=") (binary_expression "pbVar16 + 4" (identifier "pbVar16") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*pbVar15 = (char)(uVar4 >> 0x12) - 0x10;" (assignment_expression "*pbVar15 = (char)(uVar4 >> 0x12) - 0x10" (pointer_expression "*pbVar15" (* "*") (identifier "pbVar15")) (= "=") (binary_expression "(char)(uVar4 >> 0x12) - 0x10" (cast_expression "(char)(uVar4 >> 0x12)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar4 >> 0x12)" (( "(") (binary_expression "uVar4 >> 0x12" (identifier "uVar4") (>> ">>") (number_literal "0x12")) () ")"))) (- "-") (number_literal "0x10"))) (; ";")) (expression_statement "pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;" (assignment_expression "pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80" (subscript_expression "pbVar15[1]" (identifier "pbVar15") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "(byte)(uVar4 * 0x4000 >> 0x1a) + 0x80" (call_expression "(byte)(uVar4 * 0x4000 >> 0x1a)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar4 * 0x4000 >> 0x1a)" (( "(") (binary_expression "uVar4 * 0x4000 >> 0x1a" (binary_expression "uVar4 * 0x4000" (identifier "uVar4") (* "*") (number_literal "0x4000")) (>> ">>") (number_literal "0x1a")) () ")"))) (+ "+") (number_literal "0x80"))) (; ";")) (expression_statement "pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;" (assignment_expression "pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80" (subscript_expression "pbVar15[2]" (identifier "pbVar15") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "(byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80" (call_expression "(byte)((uint)(iVar14 * 0x100000) >> 0x1a)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)(iVar14 * 0x100000) >> 0x1a)" (( "(") (binary_expression "(uint)(iVar14 * 0x100000) >> 0x1a" (call_expression "(uint)(iVar14 * 0x100000)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar14 * 0x100000)" (( "(") (binary_expression "iVar14 * 0x100000" (identifier "iVar14") (* "*") (number_literal "0x100000")) () ")"))) (>> ">>") (number_literal "0x1a")) () ")"))) (+ "+") (number_literal "0x80"))) (; ";")) (expression_statement "pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;" (assignment_expression "pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80" (subscript_expression "pbVar15[3]" (identifier "pbVar15") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "((byte)uVar4 & 0x3f) + 0x80" (parenthesized_expression "((byte)uVar4 & 0x3f)" (( "(") (binary_expression "(byte)uVar4 & 0x3f" (cast_expression "(byte)uVar4" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar4")) (& "&") (number_literal "0x3f")) () ")")) (+ "+") (number_literal "0x80"))) (; ";")) (} "}")) (else_clause "else {\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }" (else "else") (compound_statement "{\nLAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;\n              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n              pbVar9 = pbVar15 + 3;\n              pbVar15[2] = (bVar8 & 0x3f) + 0x80;\n            }" ({ "{") (labeled_statement "LAB_00080454:\n              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;" (statement_identifier "LAB_00080454") (: ":") (expression_statement "*pbVar15 = (char)(uVar4 >> 0xc) - 0x20;" (assignment_expression "*pbVar15 = (char)(uVar4 >> 0xc) - 0x20" (pointer_expression "*pbVar15" (* "*") (identifier "pbVar15")) (= "=") (binary_expression "(char)(uVar4 >> 0xc) - 0x20" (cast_expression "(char)(uVar4 >> 0xc)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar4 >> 0xc)" (( "(") (binary_expression "uVar4 >> 0xc" (identifier "uVar4") (>> ">>") (number_literal "0xc")) () ")"))) (- "-") (number_literal "0x20"))) (; ";"))) (expression_statement "pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;" (assignment_expression "pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80" (subscript_expression "pbVar15[1]" (identifier "pbVar15") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "((byte)(uVar4 >> 6) & 0x3f) + 0x80" (parenthesized_expression "((byte)(uVar4 >> 6) & 0x3f)" (( "(") (binary_expression "(byte)(uVar4 >> 6) & 0x3f" (call_expression "(byte)(uVar4 >> 6)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar4 >> 6)" (( "(") (binary_expression "uVar4 >> 6" (identifier "uVar4") (>> ">>") (number_literal "6")) () ")"))) (& "&") (number_literal "0x3f")) () ")")) (+ "+") (number_literal "0x80"))) (; ";")) (expression_statement "pbVar9 = pbVar15 + 3;" (assignment_expression "pbVar9 = pbVar15 + 3" (identifier "pbVar9") (= "=") (binary_expression "pbVar15 + 3" (identifier "pbVar15") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "pbVar15[2] = (bVar8 & 0x3f) + 0x80;" (assignment_expression "pbVar15[2] = (bVar8 & 0x3f) + 0x80" (subscript_expression "pbVar15[2]" (identifier "pbVar15") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "(bVar8 & 0x3f) + 0x80" (parenthesized_expression "(bVar8 & 0x3f)" (( "(") (binary_expression "bVar8 & 0x3f" (identifier "bVar8") (& "&") (number_literal "0x3f")) () ")")) (+ "+") (number_literal "0x80"))) (; ";")) (} "}")))) (} "}")) (else_clause "else if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }" (else "else") (if_statement "if (uVar4 < 0x80) {\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }\n          else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }" (if "if") (parenthesized_expression "(uVar4 < 0x80)" (( "(") (binary_expression "uVar4 < 0x80" (identifier "uVar4") (< "<") (number_literal "0x80")) () ")")) (compound_statement "{\n            *pbVar15 = bVar8;\n            pbVar9 = pbVar15 + 1;\n          }" ({ "{") (expression_statement "*pbVar15 = bVar8;" (assignment_expression "*pbVar15 = bVar8" (pointer_expression "*pbVar15" (* "*") (identifier "pbVar15")) (= "=") (identifier "bVar8")) (; ";")) (expression_statement "pbVar9 = pbVar15 + 1;" (assignment_expression "pbVar9 = pbVar15 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar15 + 1" (identifier "pbVar15") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }" (else "else") (compound_statement "{\n            if (0x7ff < uVar4) goto LAB_00080454;\n            pbVar15[1] = bVar8 & 0x3f | 0x80;\n            *pbVar15 = (char)(uVar4 >> 6) - 0x40;\n            pbVar9 = pbVar15 + 2;\n          }" ({ "{") (if_statement "if (0x7ff < uVar4) goto LAB_00080454;" (if "if") (parenthesized_expression "(0x7ff < uVar4)" (( "(") (binary_expression "0x7ff < uVar4" (number_literal "0x7ff") (< "<") (identifier "uVar4")) () ")")) (goto_statement "goto LAB_00080454;" (goto "goto") (statement_identifier "LAB_00080454") (; ";"))) (expression_statement "pbVar15[1] = bVar8 & 0x3f | 0x80;" (assignment_expression "pbVar15[1] = bVar8 & 0x3f | 0x80" (subscript_expression "pbVar15[1]" (identifier "pbVar15") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "bVar8 & 0x3f | 0x80" (binary_expression "bVar8 & 0x3f" (identifier "bVar8") (& "&") (number_literal "0x3f")) (| "|") (number_literal "0x80"))) (; ";")) (expression_statement "*pbVar15 = (char)(uVar4 >> 6) - 0x40;" (assignment_expression "*pbVar15 = (char)(uVar4 >> 6) - 0x40" (pointer_expression "*pbVar15" (* "*") (identifier "pbVar15")) (= "=") (binary_expression "(char)(uVar4 >> 6) - 0x40" (cast_expression "(char)(uVar4 >> 6)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar4 >> 6)" (( "(") (binary_expression "uVar4 >> 6" (identifier "uVar4") (>> ">>") (number_literal "6")) () ")"))) (- "-") (number_literal "0x40"))) (; ";")) (expression_statement "pbVar9 = pbVar15 + 2;" (assignment_expression "pbVar9 = pbVar15 + 2" (identifier "pbVar9") (= "=") (binary_expression "pbVar15 + 2" (identifier "pbVar15") (+ "+") (number_literal "2"))) (; ";")) (} "}")))))) (expression_statement "iVar14 = (int)pbVar9 - (int)pbVar5;" (assignment_expression "iVar14 = (int)pbVar9 - (int)pbVar5" (identifier "iVar14") (= "=") (binary_expression "(int)pbVar9 - (int)pbVar5" (cast_expression "(int)pbVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar9")) (- "-") (cast_expression "(int)pbVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar5")))) (; ";")) (expression_statement "pbVar15 = pbVar9;" (assignment_expression "pbVar15 = pbVar9" (identifier "pbVar15") (= "=") (identifier "pbVar9")) (; ";")) (expression_statement "pbVar16 = pbVar11;" (assignment_expression "pbVar16 = pbVar11" (identifier "pbVar16") (= "=") (identifier "pbVar11")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar11 < pbVar17)" (( "(") (binary_expression "pbVar11 < pbVar17" (identifier "pbVar11") (< "<") (identifier "pbVar17")) () ")")) (; ";")) (} "}")))) (} "}")) (else_clause "else if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }" (else "else") (if_statement "if (pbVar17 <= pbVar16) {\n      iVar14 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }" (if "if") (parenthesized_expression "(pbVar17 <= pbVar16)" (( "(") (binary_expression "pbVar17 <= pbVar16" (identifier "pbVar17") (<= "<=") (identifier "pbVar16")) () ")")) (compound_statement "{\n      iVar14 = 0;\n    }" ({ "{") (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" (identifier "iVar14") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }" (else "else") (compound_statement "{\n      do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);\n      iVar14 = (int)pbVar9 - (int)pbVar5;\n    }" ({ "{") (do_statement "do {\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      } while (pbVar15 < pbVar17);" (do "do") (compound_statement "{\n        while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }\n        if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }\n        *pbVar9 = bVar8;\n        pbVar9 = pbVar9 + 1;\n        pbVar16 = pbVar15;\n      }" ({ "{") (while_statement "while( true ) {\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;\n          pbVar15 = pbVar16 + 2;\n          bVar8 = (byte)uVar4;\n          if (0x7ff < uVar4 - 0xd800) break;\n          if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }\nLAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;\n          pbVar9 = pbVar11;\n          pbVar16 = pbVar15;\n          if (pbVar17 <= pbVar15) goto LAB_00080014;\n        }" ({ "{") (expression_statement "uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;" (assignment_expression "uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100" (identifier "uVar4") (= "=") (binary_expression "(uint)pbVar16[1] + (uint)*pbVar16 * 0x100" (cast_expression "(uint)pbVar16[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar16[1]" (identifier "pbVar16") ([ "[") (number_literal "1") (] "]"))) (+ "+") (binary_expression "(uint)*pbVar16 * 0x100" (binary_expression "(uint)*pbVar16" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar16")) (* "*") (number_literal "0x100")))) (; ";")) (expression_statement "pbVar15 = pbVar16 + 2;" (assignment_expression "pbVar15 = pbVar16 + 2" (identifier "pbVar15") (= "=") (binary_expression "pbVar16 + 2" (identifier "pbVar16") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "bVar8 = (byte)uVar4;" (assignment_expression "bVar8 = (byte)uVar4" (identifier "bVar8") (= "=") (cast_expression "(byte)uVar4" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar4"))) (; ";")) (if_statement "if (0x7ff < uVar4 - 0xd800) break;" (if "if") (parenthesized_expression "(0x7ff < uVar4 - 0xd800)" (( "(") (binary_expression "0x7ff < uVar4 - 0xd800" (number_literal "0x7ff") (< "<") (binary_expression "uVar4 - 0xd800" (identifier "uVar4") (- "-") (number_literal "0xd800"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (pbVar15 < pbVar17) {\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }\n          else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }" (if "if") (parenthesized_expression "(pbVar15 < pbVar17)" (( "(") (binary_expression "pbVar15 < pbVar17" (identifier "pbVar15") (< "<") (identifier "pbVar17")) () ")")) (compound_statement "{\n            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);\n            pbVar11 = pbVar9 + 4;\n            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;\n            pbVar15 = pbVar16 + 4;\n            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;\n            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;\n            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;\n            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;\n          }" ({ "{") (expression_statement "iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff);" (assignment_expression "iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff)" (identifier "iVar14") (= "=") (binary_expression "((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +\n                     (uVar4 * 0x400 & 0xffff)" (parenthesized_expression "((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff)" (( "(") (binary_expression "(uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff" (binary_expression "(uint)pbVar16[3] + (uint)pbVar16[2] * 0x100" (cast_expression "(uint)pbVar16[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar16[3]" (identifier "pbVar16") ([ "[") (number_literal "3") (] "]"))) (+ "+") (binary_expression "(uint)pbVar16[2] * 0x100" (cast_expression "(uint)pbVar16[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar16[2]" (identifier "pbVar16") ([ "[") (number_literal "2") (] "]"))) (* "*") (number_literal "0x100"))) (& "&") (number_literal "0x3ff")) () ")")) (+ "+") (parenthesized_expression "(uVar4 * 0x400 & 0xffff)" (( "(") (binary_expression "uVar4 * 0x400 & 0xffff" (binary_expression "uVar4 * 0x400" (identifier "uVar4") (* "*") (number_literal "0x400")) (& "&") (number_literal "0xffff")) () ")")))) (; ";")) (expression_statement "pbVar11 = pbVar9 + 4;" (assignment_expression "pbVar11 = pbVar9 + 4" (identifier "pbVar11") (= "=") (binary_expression "pbVar9 + 4" (identifier "pbVar9") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;" (assignment_expression "uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400" (identifier "uVar4") (= "=") (binary_expression "iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400" (identifier "iVar14") (+ "+") (binary_expression "((uVar4 & 0x3c0) + 0x40) * 0x400" (parenthesized_expression "((uVar4 & 0x3c0) + 0x40)" (( "(") (binary_expression "(uVar4 & 0x3c0) + 0x40" (parenthesized_expression "(uVar4 & 0x3c0)" (( "(") (binary_expression "uVar4 & 0x3c0" (identifier "uVar4") (& "&") (number_literal "0x3c0")) () ")")) (+ "+") (number_literal "0x40")) () ")")) (* "*") (number_literal "0x400")))) (; ";")) (expression_statement "pbVar15 = pbVar16 + 4;" (assignment_expression "pbVar15 = pbVar16 + 4" (identifier "pbVar15") (= "=") (binary_expression "pbVar16 + 4" (identifier "pbVar16") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*pbVar9 = (char)(uVar4 >> 0x12) - 0x10;" (assignment_expression "*pbVar9 = (char)(uVar4 >> 0x12) - 0x10" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (= "=") (binary_expression "(char)(uVar4 >> 0x12) - 0x10" (cast_expression "(char)(uVar4 >> 0x12)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar4 >> 0x12)" (( "(") (binary_expression "uVar4 >> 0x12" (identifier "uVar4") (>> ">>") (number_literal "0x12")) () ")"))) (- "-") (number_literal "0x10"))) (; ";")) (expression_statement "pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;" (assignment_expression "pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80" (subscript_expression "pbVar9[1]" (identifier "pbVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "(byte)(uVar4 * 0x4000 >> 0x1a) + 0x80" (call_expression "(byte)(uVar4 * 0x4000 >> 0x1a)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar4 * 0x4000 >> 0x1a)" (( "(") (binary_expression "uVar4 * 0x4000 >> 0x1a" (binary_expression "uVar4 * 0x4000" (identifier "uVar4") (* "*") (number_literal "0x4000")) (>> ">>") (number_literal "0x1a")) () ")"))) (+ "+") (number_literal "0x80"))) (; ";")) (expression_statement "pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;" (assignment_expression "pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80" (subscript_expression "pbVar9[2]" (identifier "pbVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "(byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80" (call_expression "(byte)((uint)(iVar14 * 0x100000) >> 0x1a)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)(iVar14 * 0x100000) >> 0x1a)" (( "(") (binary_expression "(uint)(iVar14 * 0x100000) >> 0x1a" (call_expression "(uint)(iVar14 * 0x100000)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar14 * 0x100000)" (( "(") (binary_expression "iVar14 * 0x100000" (identifier "iVar14") (* "*") (number_literal "0x100000")) () ")"))) (>> ">>") (number_literal "0x1a")) () ")"))) (+ "+") (number_literal "0x80"))) (; ";")) (expression_statement "pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;" (assignment_expression "pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80" (subscript_expression "pbVar9[3]" (identifier "pbVar9") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "((byte)uVar4 & 0x3f) + 0x80" (parenthesized_expression "((byte)uVar4 & 0x3f)" (( "(") (binary_expression "(byte)uVar4 & 0x3f" (cast_expression "(byte)uVar4" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar4")) (& "&") (number_literal "0x3f")) () ")")) (+ "+") (number_literal "0x80"))) (; ";")) (} "}")) (else_clause "else {\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }" (else "else") (compound_statement "{\nLAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;\n            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;\n            pbVar11 = pbVar9 + 3;\n            pbVar9[2] = (bVar8 & 0x3f) + 0x80;\n          }" ({ "{") (labeled_statement "LAB_0007ff98:\n            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;" (statement_identifier "LAB_0007ff98") (: ":") (expression_statement "*pbVar9 = (char)(uVar4 >> 0xc) - 0x20;" (assignment_expression "*pbVar9 = (char)(uVar4 >> 0xc) - 0x20" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (= "=") (binary_expression "(char)(uVar4 >> 0xc) - 0x20" (cast_expression "(char)(uVar4 >> 0xc)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar4 >> 0xc)" (( "(") (binary_expression "uVar4 >> 0xc" (identifier "uVar4") (>> ">>") (number_literal "0xc")) () ")"))) (- "-") (number_literal "0x20"))) (; ";"))) (expression_statement "pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;" (assignment_expression "pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80" (subscript_expression "pbVar9[1]" (identifier "pbVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "((byte)(uVar4 >> 6) & 0x3f) + 0x80" (parenthesized_expression "((byte)(uVar4 >> 6) & 0x3f)" (( "(") (binary_expression "(byte)(uVar4 >> 6) & 0x3f" (call_expression "(byte)(uVar4 >> 6)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar4 >> 6)" (( "(") (binary_expression "uVar4 >> 6" (identifier "uVar4") (>> ">>") (number_literal "6")) () ")"))) (& "&") (number_literal "0x3f")) () ")")) (+ "+") (number_literal "0x80"))) (; ";")) (expression_statement "pbVar11 = pbVar9 + 3;" (assignment_expression "pbVar11 = pbVar9 + 3" (identifier "pbVar11") (= "=") (binary_expression "pbVar9 + 3" (identifier "pbVar9") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "pbVar9[2] = (bVar8 & 0x3f) + 0x80;" (assignment_expression "pbVar9[2] = (bVar8 & 0x3f) + 0x80" (subscript_expression "pbVar9[2]" (identifier "pbVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "(bVar8 & 0x3f) + 0x80" (parenthesized_expression "(bVar8 & 0x3f)" (( "(") (binary_expression "bVar8 & 0x3f" (identifier "bVar8") (& "&") (number_literal "0x3f")) () ")")) (+ "+") (number_literal "0x80"))) (; ";")) (} "}")))) (labeled_statement "LAB_0007ffc4:\n          iVar14 = (int)pbVar11 - (int)pbVar5;" (statement_identifier "LAB_0007ffc4") (: ":") (expression_statement "iVar14 = (int)pbVar11 - (int)pbVar5;" (assignment_expression "iVar14 = (int)pbVar11 - (int)pbVar5" (identifier "iVar14") (= "=") (binary_expression "(int)pbVar11 - (int)pbVar5" (cast_expression "(int)pbVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar11")) (- "-") (cast_expression "(int)pbVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar5")))) (; ";"))) (expression_statement "pbVar9 = pbVar11;" (assignment_expression "pbVar9 = pbVar11" (identifier "pbVar9") (= "=") (identifier "pbVar11")) (; ";")) (expression_statement "pbVar16 = pbVar15;" (assignment_expression "pbVar16 = pbVar15" (identifier "pbVar16") (= "=") (identifier "pbVar15")) (; ";")) (if_statement "if (pbVar17 <= pbVar15) goto LAB_00080014;" (if "if") (parenthesized_expression "(pbVar17 <= pbVar15)" (( "(") (binary_expression "pbVar17 <= pbVar15" (identifier "pbVar17") (<= "<=") (identifier "pbVar15")) () ")")) (goto_statement "goto LAB_00080014;" (goto "goto") (statement_identifier "LAB_00080014") (; ";"))) (} "}"))) (if_statement "if (0x7f < uVar4) {\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }" (if "if") (parenthesized_expression "(0x7f < uVar4)" (( "(") (binary_expression "0x7f < uVar4" (number_literal "0x7f") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\n          if (0x7ff < uVar4) goto LAB_0007ff98;\n          pbVar9[1] = bVar8 & 0x3f | 0x80;\n          *pbVar9 = (char)(uVar4 >> 6) - 0x40;\n          pbVar11 = pbVar9 + 2;\n          goto LAB_0007ffc4;\n        }" ({ "{") (if_statement "if (0x7ff < uVar4) goto LAB_0007ff98;" (if "if") (parenthesized_expression "(0x7ff < uVar4)" (( "(") (binary_expression "0x7ff < uVar4" (number_literal "0x7ff") (< "<") (identifier "uVar4")) () ")")) (goto_statement "goto LAB_0007ff98;" (goto "goto") (statement_identifier "LAB_0007ff98") (; ";"))) (expression_statement "pbVar9[1] = bVar8 & 0x3f | 0x80;" (assignment_expression "pbVar9[1] = bVar8 & 0x3f | 0x80" (subscript_expression "pbVar9[1]" (identifier "pbVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "bVar8 & 0x3f | 0x80" (binary_expression "bVar8 & 0x3f" (identifier "bVar8") (& "&") (number_literal "0x3f")) (| "|") (number_literal "0x80"))) (; ";")) (expression_statement "*pbVar9 = (char)(uVar4 >> 6) - 0x40;" (assignment_expression "*pbVar9 = (char)(uVar4 >> 6) - 0x40" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (= "=") (binary_expression "(char)(uVar4 >> 6) - 0x40" (cast_expression "(char)(uVar4 >> 6)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar4 >> 6)" (( "(") (binary_expression "uVar4 >> 6" (identifier "uVar4") (>> ">>") (number_literal "6")) () ")"))) (- "-") (number_literal "0x40"))) (; ";")) (expression_statement "pbVar11 = pbVar9 + 2;" (assignment_expression "pbVar11 = pbVar9 + 2" (identifier "pbVar11") (= "=") (binary_expression "pbVar9 + 2" (identifier "pbVar9") (+ "+") (number_literal "2"))) (; ";")) (goto_statement "goto LAB_0007ffc4;" (goto "goto") (statement_identifier "LAB_0007ffc4") (; ";")) (} "}"))) (expression_statement "*pbVar9 = bVar8;" (assignment_expression "*pbVar9 = bVar8" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (= "=") (identifier "bVar8")) (; ";")) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + 1" (identifier "pbVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar16 = pbVar15;" (assignment_expression "pbVar16 = pbVar15" (identifier "pbVar16") (= "=") (identifier "pbVar15")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar15 < pbVar17)" (( "(") (binary_expression "pbVar15 < pbVar17" (identifier "pbVar15") (< "<") (identifier "pbVar17")) () ")")) (; ";")) (expression_statement "iVar14 = (int)pbVar9 - (int)pbVar5;" (assignment_expression "iVar14 = (int)pbVar9 - (int)pbVar5" (identifier "iVar14") (= "=") (binary_expression "(int)pbVar9 - (int)pbVar5" (cast_expression "(int)pbVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar9")) (- "-") (cast_expression "(int)pbVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar5")))) (; ";")) (} "}")))))) (labeled_statement "LAB_00080014:\n    *(int *)(param_1 + 0xc) = iVar14;" (statement_identifier "LAB_00080014") (: ":") (expression_statement "*(int *)(param_1 + 0xc) = iVar14;" (assignment_expression "*(int *)(param_1 + 0xc) = iVar14" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "iVar14")) (; ";"))) (} "}")))) (expression_statement "*pbVar9 = 0;" (assignment_expression "*pbVar9 = 0" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar2 = *(ushort *)(param_1 + 8);" (assignment_expression "uVar2 = *(ushort *)(param_1 + 8)" (identifier "uVar2") (= "=") (pointer_expression "*(ushort *)(param_1 + 8)" (* "*") (cast_expression "(ushort *)(param_1 + 8)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (((uVar2 & 0x2400) != 0) || (*(int *)(param_1 + 0x18) != 0)) {\n    (*(code *)(PTR_LAB_00190ba8 + -0x1e58))(param_1);\n  }" (if "if") (parenthesized_expression "(((uVar2 & 0x2400) != 0) || (*(int *)(param_1 + 0x18) != 0))" (( "(") (binary_expression "((uVar2 & 0x2400) != 0) || (*(int *)(param_1 + 0x18) != 0)" (parenthesized_expression "((uVar2 & 0x2400) != 0)" (( "(") (binary_expression "(uVar2 & 0x2400) != 0" (parenthesized_expression "(uVar2 & 0x2400)" (( "(") (binary_expression "uVar2 & 0x2400" (identifier "uVar2") (& "&") (number_literal "0x2400")) () ")")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(param_1 + 0x18) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x18) != 0" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    (*(code *)(PTR_LAB_00190ba8 + -0x1e58))(param_1);\n  }" ({ "{") (expression_statement "(*(code *)(PTR_LAB_00190ba8 + -0x1e58))(param_1);" (call_expression "(*(code *)(PTR_LAB_00190ba8 + -0x1e58))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba8 + -0x1e58))" (( "(") (pointer_expression "*(code *)(PTR_LAB_00190ba8 + -0x1e58)" (* "*") (cast_expression "(code *)(PTR_LAB_00190ba8 + -0x1e58)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190ba8 + -0x1e58)" (( "(") (binary_expression "PTR_LAB_00190ba8 + -0x1e58" (identifier "PTR_LAB_00190ba8") (+ "+") (number_literal "-0x1e58")) () ")")))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar3 = PTR_DAT_00190948;" (assignment_expression "puVar3 = PTR_DAT_00190948" (identifier "puVar3") (= "=") (identifier "PTR_DAT_00190948")) (; ";")) (expression_statement "*(char *)(param_1 + 10) = (char)param_2;" (assignment_expression "*(char *)(param_1 + 10) = (char)param_2" (pointer_expression "*(char *)(param_1 + 10)" (* "*") (cast_expression "(char *)(param_1 + 10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")")))) (= "=") (cast_expression "(char)param_2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_2"))) (; ";")) (expression_statement "*(ushort *)(param_1 + 8) = uVar2 & 0x801d | 0x202;" (assignment_expression "*(ushort *)(param_1 + 8) = uVar2 & 0x801d | 0x202" (pointer_expression "*(ushort *)(param_1 + 8)" (* "*") (cast_expression "(ushort *)(param_1 + 8)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "uVar2 & 0x801d | 0x202" (binary_expression "uVar2 & 0x801d" (identifier "uVar2") (& "&") (number_literal "0x801d")) (| "|") (number_literal "0x202"))) (; ";")) (expression_statement "*(byte **)(param_1 + 0x10) = pbVar5;" (assignment_expression "*(byte **)(param_1 + 0x10) = pbVar5" (pointer_expression "*(byte **)(param_1 + 0x10)" (* "*") (cast_expression "(byte **)(param_1 + 0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "pbVar5")) (; ";")) (expression_statement "*(byte **)(param_1 + 0x14) = pbVar5;" (assignment_expression "*(byte **)(param_1 + 0x14) = pbVar5" (pointer_expression "*(byte **)(param_1 + 0x14)" (* "*") (cast_expression "(byte **)(param_1 + 0x14)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "pbVar5")) (; ";")) (expression_statement "uVar6 = (**(code **)(puVar3 + -0xb40))(pbVar5);" (assignment_expression "uVar6 = (**(code **)(puVar3 + -0xb40))(pbVar5)" (identifier "uVar6") (= "=") (call_expression "(**(code **)(puVar3 + -0xb40))(pbVar5)" (parenthesized_expression "(**(code **)(puVar3 + -0xb40))" (( "(") (pointer_expression "**(code **)(puVar3 + -0xb40)" (* "*") (pointer_expression "*(code **)(puVar3 + -0xb40)" (* "*") (cast_expression "(code **)(puVar3 + -0xb40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + -0xb40)" (( "(") (binary_expression "puVar3 + -0xb40" (identifier "puVar3") (+ "+") (number_literal "-0xb40")) () ")"))))) () ")")) (argument_list "(pbVar5)" (( "(") (identifier "pbVar5") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x18) = uVar6;" (assignment_expression "*(undefined4 *)(param_1 + 0x18) = uVar6" (pointer_expression "*(undefined4 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

int function_1(type_1 *pMem,type_2 desiredEnc)

{
  char cVar1;
  type_3 var_18;
  type_4 *var_19;
  type_5 var_3;
  type_6 *var_10;
  int var_2;
  char *var_5;
  type_6 var_12;
  type_6 *var_14;
  type_5 var_15;
  type_6 *var_13;
  type_7 in_register_00000014;
  char *var_6;
  type_6 var_16;
  int var_8;
  type_6 *var_17;
  type_6 *var_9;
  type_6 *var_11;
  
  var_2 = var_1(in_register_00000014,desiredEnc);
  if (pMem->enc == '\x01') {
    var_3 = pMem->n;
    if (var_2 != 1) {
      var_8 = (var_3 + 1) * 2;
      goto LAB_0007ff34;
    }
  }
  else {
    if (var_2 != 1) {
      var_2 = var_4(pMem);
      if (var_2 != 0) {
        return 7;
      }
      var_5 = pMem->z;
      var_6 = var_5 + (pMem->n & 0xfffffffe);
      for (; var_5 < var_6; var_5 = var_5 + 2) {
        cVar1 = *var_5;
        *var_5 = var_5[1];
        var_5[1] = cVar1;
      }
      pMem->enc = desiredEnc;
      return 0;
    }
    var_3 = pMem->n;
  }
  var_3 = var_3 & 0xfffffffe;
  pMem->n = var_3;
  var_8 = var_3 * 2 + 1;
LAB_0007ff34:
  var_9 = (type_6 *)pMem->z;
  var_10 = (type_6 *)(*(type_8 *)(var_7 + 0x8e0))(pMem->db,var_2,var_8 >> 0x1f);
  var_19 = PTR_DAT_00190b94;
  var_11 = var_9 + var_3;
  if (var_10 == (type_6 *)0x0) {
    return 7;
  }
  if (pMem->enc == '\x01') {
    var_17 = var_10;
    if (var_2 == 2) {
      var_2 = 0;
      var_14 = var_10;
      if (var_11 > var_9) {
        do {
          var_12 = *var_9;
          var_13 = var_9 + 1;
          if (var_12 < 0xc0) {
            var_16 = 0;
            goto LAB_0008030c;
          }
          var_12 = var_19[var_12 - 0x3f94];
          if (var_11 == var_13) {
LAB_00080558:
            var_16 = 0xff;
            if (var_12 < 0x80) {
              var_12 = 0xfd;
            }
            else {
              var_16 = 0;
            }
LAB_0008030c:
            *var_14 = var_12;
            var_17 = var_14 + 2;
            var_14[1] = var_16;
          }
          else {
            var_3 = (type_5)var_9[1];
            var_2 = (type_5)var_12 << 6;
            if ((var_3 & 0xffffffc0) != 0x80) goto LAB_00080558;
            while( true ) {
              var_13 = var_13 + 1;
              var_15 = (var_3 & 0x3f) + var_2;
              if ((var_11 == var_13) || (var_3 = (type_5)*var_13, (var_3 & 0xffffffc0) != 0x80))
              break;
              var_2 = var_15 * 0x40;
            }
            if ((var_15 < 0x80) ||
               (((var_15 & 0xfffff800) == 0xd800 || ((var_15 & 0xfffffffe) == 0xfffe)))) {
              var_16 = 0xff;
              var_12 = 0xfd;
              goto LAB_0008030c;
            }
            var_12 = (type_6)var_15;
            var_16 = (type_6)(var_15 >> 8);
            if (var_15 < 0x10000) goto LAB_0008030c;
            var_14[2] = var_12;
            var_14[1] = (type_6)((var_15 - 0x10000) * 0x1000 >> 0x1e) - 0x28;
            *var_14 = var_16 >> 2 | (type_6)(var_15 - 0x10000 >> 10) & 0xc0;
            var_17 = var_14 + 4;
            var_14[3] = (var_16 & 3) - 0x24;
          }
          var_2 = (int)var_17 - (int)var_10;
          var_14 = var_17;
          var_9 = var_13;
        } while (var_13 < var_11);
      }
    }
    else {
      var_14 = var_10;
      if (var_11 <= var_9) {
        var_2 = 0;
      }
      else {
        do {
          while( true ) {
            var_12 = *var_9;
            var_13 = var_9 + 1;
            if (var_12 < 0xc0) {
              var_16 = 0;
              goto LAB_000801d8;
            }
            var_12 = var_19[var_12 - 0x3f94];
            if (var_11 != var_13) break;
LAB_00080538:
            var_16 = 0xff;
            if (var_12 < 0x80) {
              var_12 = 0xfd;
            }
            else {
              var_16 = 0;
            }
LAB_000801d8:
            *var_14 = var_16;
            var_14[1] = var_12;
            var_17 = var_14 + 2;
            var_14 = var_17;
            var_9 = var_13;
            if (var_11 <= var_13) goto LAB_000802c0;
          }
          var_3 = (type_5)var_9[1];
          var_2 = (type_5)var_12 << 6;
          if ((var_3 & 0xffffffc0) != 0x80) goto LAB_00080538;
          while( true ) {
            var_13 = var_13 + 1;
            var_15 = (var_3 & 0x3f) + var_2;
            if ((var_11 == var_13) || (var_3 = (type_5)*var_13, (var_3 & 0xffffffc0) != 0x80))
            break;
            var_2 = var_15 * 0x40;
          }
          if ((var_15 < 0x80) ||
             (((var_15 & 0xfffff800) == 0xd800 || ((var_15 & 0xfffffffe) == 0xfffe)))) {
            var_12 = 0xfd;
            var_16 = 0xff;
            goto LAB_000801d8;
          }
          var_16 = (type_6)(var_15 >> 8);
          var_12 = (type_6)var_15;
          if (var_15 < 0x10000) goto LAB_000801d8;
          var_14[3] = var_12;
          *var_14 = (type_6)((var_15 - 0x10000) * 0x1000 >> 0x1e) - 0x28;
          var_14[1] = var_16 >> 2 | (type_6)(var_15 - 0x10000 >> 10) & 0xc0;
          var_17 = var_14 + 4;
          var_14[2] = (var_16 & 3) - 0x24;
          var_14 = var_17;
          var_9 = var_13;
        } while (var_13 < var_11);
LAB_000802c0:
        var_2 = (int)var_17 - (int)var_10;
      }
    }
    pMem->n = var_2;
    var_14 = var_17 + 1;
    *var_17 = 0;
  }
  else {
    var_14 = var_10;
    if (pMem->enc == '\x02') {
      var_17 = var_10;
      if (var_11 <= var_9) {
        var_2 = 0;
      }
      else {
        do {
          var_3 = (type_5)var_9[1] * 0x100 + (type_5)*var_9;
          var_13 = var_9 + 2;
          var_12 = (type_6)var_3;
          if (var_3 - 0xd800 < 0x800) {
            if (var_13 < var_11) {
              var_2 = ((type_5)var_9[3] * 0x100 + (type_5)var_9[2] & 0x3ff) +
                      (var_3 * 0x400 & 0xffff);
              var_14 = var_17 + 4;
              var_3 = var_2 + ((var_3 & 0x3c0) + 0x40) * 0x400;
              var_13 = var_9 + 4;
              *var_17 = (char)(var_3 >> 0x12) - 0x10;
              var_17[1] = (type_6)(var_3 * 0x4000 >> 0x1a) + 0x80;
              var_17[2] = (type_6)((type_5)(var_2 * 0x100000) >> 0x1a) + 0x80;
              var_17[3] = ((type_6)var_3 & 0x3f) + 0x80;
            }
            else {
LAB_00080454:
              *var_17 = (char)(var_3 >> 0xc) - 0x20;
              var_17[1] = ((type_6)(var_3 >> 6) & 0x3f) + 0x80;
              var_14 = var_17 + 3;
              var_17[2] = (var_12 & 0x3f) + 0x80;
            }
          }
          else if (var_3 < 0x80) {
            *var_17 = var_12;
            var_14 = var_17 + 1;
          }
          else {
            if (0x7ff < var_3) goto LAB_00080454;
            var_17[1] = var_12 & 0x3f | 0x80;
            *var_17 = (char)(var_3 >> 6) - 0x40;
            var_14 = var_17 + 2;
          }
          var_2 = (int)var_14 - (int)var_10;
          var_17 = var_14;
          var_9 = var_13;
        } while (var_13 < var_11);
      }
    }
    else if (var_11 <= var_9) {
      var_2 = 0;
    }
    else {
      do {
        while( true ) {
          var_3 = (type_5)var_9[1] + (type_5)*var_9 * 0x100;
          var_17 = var_9 + 2;
          var_12 = (type_6)var_3;
          if (0x7ff < var_3 - 0xd800) break;
          if (var_17 < var_11) {
            var_2 = ((type_5)var_9[3] + (type_5)var_9[2] * 0x100 & 0x3ff) + (var_3 * 0x400 & 0xffff)
            ;
            var_13 = var_14 + 4;
            var_3 = var_2 + ((var_3 & 0x3c0) + 0x40) * 0x400;
            var_17 = var_9 + 4;
            *var_14 = (char)(var_3 >> 0x12) - 0x10;
            var_14[1] = (type_6)(var_3 * 0x4000 >> 0x1a) + 0x80;
            var_14[2] = (type_6)((type_5)(var_2 * 0x100000) >> 0x1a) + 0x80;
            var_14[3] = ((type_6)var_3 & 0x3f) + 0x80;
          }
          else {
LAB_0007ff98:
            *var_14 = (char)(var_3 >> 0xc) - 0x20;
            var_14[1] = ((type_6)(var_3 >> 6) & 0x3f) + 0x80;
            var_13 = var_14 + 3;
            var_14[2] = (var_12 & 0x3f) + 0x80;
          }
LAB_0007ffc4:
          var_2 = (int)var_13 - (int)var_10;
          var_14 = var_13;
          var_9 = var_17;
          if (var_11 <= var_17) goto LAB_00080014;
        }
        if (0x7f < var_3) {
          if (0x7ff < var_3) goto LAB_0007ff98;
          var_14[1] = var_12 & 0x3f | 0x80;
          *var_14 = (char)(var_3 >> 6) - 0x40;
          var_13 = var_14 + 2;
          goto LAB_0007ffc4;
        }
        *var_14 = var_12;
        var_14 = var_14 + 1;
        var_9 = var_17;
      } while (var_17 < var_11);
      var_2 = (int)var_14 - (int)var_10;
    }
LAB_00080014:
    pMem->n = var_2;
  }
  *var_14 = 0;
  var_18 = pMem->flags;
  if (((var_18 & 0x2400) != 0) || (pMem->szMalloc != 0)) {
    (*(type_8 *)(var_7 + -0x1e58))(pMem);
  }
  var_19 = PTR_aBuiltinFunc_29540_1408__00190948;
  pMem->enc = desiredEnc;
  pMem->flags = var_18 & 0x801d | 0x202;
  pMem->z = (char *)var_10;
  pMem->zMalloc = (char *)var_10;
  var_2 = (**(type_8 **)(var_19 + -0xb40))(var_10);
  pMem->szMalloc = var_2;
  return 0;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (for_statement condition: (binary_expression left: (identifier) right: (identifier)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier) (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (number_literal)))) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (number_literal)))) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (return_statement (number_literal)))))

undefined4 MASKED(int param_1,int param_2)

{
  undefined1 uVar1;
  ushort uVar2;
  undefined *puVar3;
  uint uVar4;
  byte *pbVar5;
  undefined4 uVar6;
  undefined1 *puVar7;
  byte bVar8;
  byte *pbVar9;
  uint uVar10;
  byte *pbVar11;
  undefined1 *puVar12;
  byte bVar13;
  int iVar14;
  byte *pbVar15;
  byte *pbVar16;
  byte *pbVar17;
  
  if (*(char *)(param_1 + 10) == '\x01') {
    uVar4 = *(uint *)(param_1 + 0xc);
    if (param_2 != 1) {
      iVar14 = (uVar4 + 1) * 2;
      goto LAB_0007ff34;
    }
  }
  else {
    if (param_2 != 1) {
      iVar14 = FUN_0007d470();
      if (iVar14 != 0) {
        return 7;
      }
      puVar7 = *(undefined1 **)(param_1 + 0x10);
      puVar12 = puVar7 + (*(uint *)(param_1 + 0xc) & 0xfffffffe);
      for (; puVar7 < puVar12; puVar7 = puVar7 + 2) {
        uVar1 = *puVar7;
        *puVar7 = puVar7[1];
        puVar7[1] = uVar1;
      }
      *(char *)(param_1 + 10) = (char)param_2;
      return 0;
    }
    uVar4 = *(uint *)(param_1 + 0xc);
  }
  uVar4 = uVar4 & 0xfffffffe;
  *(uint *)(param_1 + 0xc) = uVar4;
  iVar14 = uVar4 * 2 + 1;
LAB_0007ff34:
  pbVar16 = *(byte **)(param_1 + 0x10);
  pbVar5 = (byte *)(*(code *)(PTR_LAB_00190ba8 + 0x8e0))
                             (*(undefined4 *)(param_1 + 0x20),param_2,iVar14 >> 0x1f);
  puVar3 = PTR_DAT_00190b94;
  pbVar17 = pbVar16 + uVar4;
  if (pbVar5 == (byte *)0x0) {
    return 7;
  }
  if (*(char *)(param_1 + 10) == '\x01') {
    pbVar15 = pbVar5;
    if (param_2 == 2) {
      iVar14 = 0;
      pbVar9 = pbVar5;
      if (pbVar17 > pbVar16) {
        do {
          bVar8 = *pbVar16;
          pbVar11 = pbVar16 + 1;
          if (bVar8 < 0xc0) {
            bVar13 = 0;
            goto LAB_0008030c;
          }
          bVar8 = puVar3[bVar8 - 0x3f94];
          if (pbVar17 == pbVar11) {
LAB_00080558:
            bVar13 = 0xff;
            if (bVar8 < 0x80) {
              bVar8 = 0xfd;
            }
            else {
              bVar13 = 0;
            }
LAB_0008030c:
            *pbVar9 = bVar8;
            pbVar15 = pbVar9 + 2;
            pbVar9[1] = bVar13;
          }
          else {
            uVar4 = (uint)pbVar16[1];
            iVar14 = (uint)bVar8 << 6;
            if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080558;
            while( true ) {
              pbVar11 = pbVar11 + 1;
              uVar10 = (uVar4 & 0x3f) + iVar14;
              if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))
              break;
              iVar14 = uVar10 * 0x40;
            }
            if ((uVar10 < 0x80) ||
               (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {
              bVar13 = 0xff;
              bVar8 = 0xfd;
              goto LAB_0008030c;
            }
            bVar8 = (byte)uVar10;
            bVar13 = (byte)(uVar10 >> 8);
            if (uVar10 < 0x10000) goto LAB_0008030c;
            pbVar9[2] = bVar8;
            pbVar9[1] = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;
            *pbVar9 = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;
            pbVar15 = pbVar9 + 4;
            pbVar9[3] = (bVar13 & 3) - 0x24;
          }
          iVar14 = (int)pbVar15 - (int)pbVar5;
          pbVar9 = pbVar15;
          pbVar16 = pbVar11;
        } while (pbVar11 < pbVar17);
      }
    }
    else {
      pbVar9 = pbVar5;
      if (pbVar17 <= pbVar16) {
        iVar14 = 0;
      }
      else {
        do {
          while( true ) {
            bVar8 = *pbVar16;
            pbVar11 = pbVar16 + 1;
            if (bVar8 < 0xc0) {
              bVar13 = 0;
              goto LAB_000801d8;
            }
            bVar8 = puVar3[bVar8 - 0x3f94];
            if (pbVar17 != pbVar11) break;
LAB_00080538:
            bVar13 = 0xff;
            if (bVar8 < 0x80) {
              bVar8 = 0xfd;
            }
            else {
              bVar13 = 0;
            }
LAB_000801d8:
            *pbVar9 = bVar13;
            pbVar9[1] = bVar8;
            pbVar15 = pbVar9 + 2;
            pbVar9 = pbVar15;
            pbVar16 = pbVar11;
            if (pbVar17 <= pbVar11) goto LAB_000802c0;
          }
          uVar4 = (uint)pbVar16[1];
          iVar14 = (uint)bVar8 << 6;
          if ((uVar4 & 0xffffffc0) != 0x80) goto LAB_00080538;
          while( true ) {
            pbVar11 = pbVar11 + 1;
            uVar10 = (uVar4 & 0x3f) + iVar14;
            if ((pbVar17 == pbVar11) || (uVar4 = (uint)*pbVar11, (uVar4 & 0xffffffc0) != 0x80))
            break;
            iVar14 = uVar10 * 0x40;
          }
          if ((uVar10 < 0x80) ||
             (((uVar10 & 0xfffff800) == 0xd800 || ((uVar10 & 0xfffffffe) == 0xfffe)))) {
            bVar8 = 0xfd;
            bVar13 = 0xff;
            goto LAB_000801d8;
          }
          bVar13 = (byte)(uVar10 >> 8);
          bVar8 = (byte)uVar10;
          if (uVar10 < 0x10000) goto LAB_000801d8;
          pbVar9[3] = bVar8;
          *pbVar9 = (byte)((uVar10 - 0x10000) * 0x1000 >> 0x1e) - 0x28;
          pbVar9[1] = bVar13 >> 2 | (byte)(uVar10 - 0x10000 >> 10) & 0xc0;
          pbVar15 = pbVar9 + 4;
          pbVar9[2] = (bVar13 & 3) - 0x24;
          pbVar9 = pbVar15;
          pbVar16 = pbVar11;
        } while (pbVar11 < pbVar17);
LAB_000802c0:
        iVar14 = (int)pbVar15 - (int)pbVar5;
      }
    }
    *(int *)(param_1 + 0xc) = iVar14;
    pbVar9 = pbVar15 + 1;
    *pbVar15 = 0;
  }
  else {
    pbVar9 = pbVar5;
    if (*(char *)(param_1 + 10) == '\x02') {
      pbVar15 = pbVar5;
      if (pbVar17 <= pbVar16) {
        iVar14 = 0;
      }
      else {
        do {
          uVar4 = (uint)pbVar16[1] * 0x100 + (uint)*pbVar16;
          pbVar11 = pbVar16 + 2;
          bVar8 = (byte)uVar4;
          if (uVar4 - 0xd800 < 0x800) {
            if (pbVar11 < pbVar17) {
              iVar14 = ((uint)pbVar16[3] * 0x100 + (uint)pbVar16[2] & 0x3ff) +
                       (uVar4 * 0x400 & 0xffff);
              pbVar9 = pbVar15 + 4;
              uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;
              pbVar11 = pbVar16 + 4;
              *pbVar15 = (char)(uVar4 >> 0x12) - 0x10;
              pbVar15[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;
              pbVar15[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;
              pbVar15[3] = ((byte)uVar4 & 0x3f) + 0x80;
            }
            else {
LAB_00080454:
              *pbVar15 = (char)(uVar4 >> 0xc) - 0x20;
              pbVar15[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;
              pbVar9 = pbVar15 + 3;
              pbVar15[2] = (bVar8 & 0x3f) + 0x80;
            }
          }
          else if (uVar4 < 0x80) {
            *pbVar15 = bVar8;
            pbVar9 = pbVar15 + 1;
          }
          else {
            if (0x7ff < uVar4) goto LAB_00080454;
            pbVar15[1] = bVar8 & 0x3f | 0x80;
            *pbVar15 = (char)(uVar4 >> 6) - 0x40;
            pbVar9 = pbVar15 + 2;
          }
          iVar14 = (int)pbVar9 - (int)pbVar5;
          pbVar15 = pbVar9;
          pbVar16 = pbVar11;
        } while (pbVar11 < pbVar17);
      }
    }
    else if (pbVar17 <= pbVar16) {
      iVar14 = 0;
    }
    else {
      do {
        while( true ) {
          uVar4 = (uint)pbVar16[1] + (uint)*pbVar16 * 0x100;
          pbVar15 = pbVar16 + 2;
          bVar8 = (byte)uVar4;
          if (0x7ff < uVar4 - 0xd800) break;
          if (pbVar15 < pbVar17) {
            iVar14 = ((uint)pbVar16[3] + (uint)pbVar16[2] * 0x100 & 0x3ff) +
                     (uVar4 * 0x400 & 0xffff);
            pbVar11 = pbVar9 + 4;
            uVar4 = iVar14 + ((uVar4 & 0x3c0) + 0x40) * 0x400;
            pbVar15 = pbVar16 + 4;
            *pbVar9 = (char)(uVar4 >> 0x12) - 0x10;
            pbVar9[1] = (byte)(uVar4 * 0x4000 >> 0x1a) + 0x80;
            pbVar9[2] = (byte)((uint)(iVar14 * 0x100000) >> 0x1a) + 0x80;
            pbVar9[3] = ((byte)uVar4 & 0x3f) + 0x80;
          }
          else {
LAB_0007ff98:
            *pbVar9 = (char)(uVar4 >> 0xc) - 0x20;
            pbVar9[1] = ((byte)(uVar4 >> 6) & 0x3f) + 0x80;
            pbVar11 = pbVar9 + 3;
            pbVar9[2] = (bVar8 & 0x3f) + 0x80;
          }
LAB_0007ffc4:
          iVar14 = (int)pbVar11 - (int)pbVar5;
          pbVar9 = pbVar11;
          pbVar16 = pbVar15;
          if (pbVar17 <= pbVar15) goto LAB_00080014;
        }
        if (0x7f < uVar4) {
          if (0x7ff < uVar4) goto LAB_0007ff98;
          pbVar9[1] = bVar8 & 0x3f | 0x80;
          *pbVar9 = (char)(uVar4 >> 6) - 0x40;
          pbVar11 = pbVar9 + 2;
          goto LAB_0007ffc4;
        }
        *pbVar9 = bVar8;
        pbVar9 = pbVar9 + 1;
        pbVar16 = pbVar15;
      } while (pbVar15 < pbVar17);
      iVar14 = (int)pbVar9 - (int)pbVar5;
    }
LAB_00080014:
    *(int *)(param_1 + 0xc) = iVar14;
  }
  *pbVar9 = 0;
  uVar2 = *(ushort *)(param_1 + 8);
  if (((uVar2 & 0x2400) != 0) || (*(int *)(param_1 + 0x18) != 0)) {
    (*(code *)(PTR_LAB_00190ba8 + -0x1e58))(param_1);
  }
  puVar3 = PTR_DAT_00190948;
  *(char *)(param_1 + 10) = (char)param_2;
  *(ushort *)(param_1 + 8) = uVar2 & 0x801d | 0x202;
  *(byte **)(param_1 + 0x10) = pbVar5;
  *(byte **)(param_1 + 0x14) = pbVar5;
  uVar6 = (**(code **)(puVar3 + -0xb40))(pbVar5);
  *(undefined4 *)(param_1 + 0x18) = uVar6;
  return 0;
}

