
int sha3_process(hash_state *md,uchar *in,ulong inlen)

{
  ulong *puVar1;
  byte bVar2;
  ulong uVar3;
  int iVar4;
  byte *pbVar5;
  byte *pbVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  ulong uVar10;
  ulong *puVar11;
  ulong *puVar12;
  uint uVar13;
  ushort uVar14;
  
  if (inlen == 0) {
    return 0;
  }
  if (in == (uchar *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);
  }
  uVar14 = (md->sha3).byte_index;
  uVar8 = (uint)uVar14;
  uVar13 = (uint)uVar14;
  uVar7 = -uVar13 & 7;
  if (inlen < uVar7) {
    uVar10 = (md->chc).length;
    uVar9 = ~(uint)in + (int)(in + inlen) & 3;
    pbVar5 = in;
    uVar7 = uVar13;
    if (uVar9 == 0) goto LAB_00153dc2;
    pbVar5 = in + 1;
    bVar2 = *in;
    uVar7 = uVar13 + 1;
    (md->sha3).byte_index = (ushort)uVar7;
    uVar8 = uVar7 & 0xffff;
    uVar10 = uVar10 | (ulong)bVar2 << (((byte)uVar14 & 7) << 3);
    (md->chc).length = uVar10;
    if (uVar9 == 1) goto LAB_00153dc2;
    if (uVar9 != 2) {
      bVar2 = *pbVar5;
      iVar4 = uVar8 << 3;
      uVar7 = uVar13 + 2;
      pbVar5 = in + 2;
      (md->sha3).byte_index = (ushort)uVar7;
      uVar8 = uVar7 & 0xffff;
      uVar10 = uVar10 | (ulong)bVar2 << ((byte)iVar4 & 0x3f);
      (md->chc).length = uVar10;
    }
    pbVar6 = pbVar5 + 1;
    bVar2 = *pbVar5;
    uVar7 = uVar7 + 1;
    while( true ) {
      iVar4 = uVar8 << 3;
      (md->sha3).byte_index = (ushort)uVar7;
      uVar8 = uVar7 & 0xffff;
      uVar10 = uVar10 | (ulong)bVar2 << ((byte)iVar4 & 0x3f);
      (md->chc).length = uVar10;
      pbVar5 = pbVar6;
LAB_00153dc2:
      bVar2 = *pbVar5;
      uVar13 = uVar7 + 1;
      (md->sha3).byte_index = (ushort)uVar13;
      uVar10 = uVar10 | (ulong)bVar2 << ((byte)(uVar8 << 3) & 0x3f);
      (md->chc).length = uVar10;
      if (pbVar5 + 1 == in + inlen) break;
      bVar2 = pbVar5[1];
      uVar9 = uVar7 + 2;
      uVar8 = uVar7 + 3;
      (md->sha3).byte_index = (ushort)uVar9;
      pbVar6 = pbVar5 + 4;
      uVar7 = uVar7 + 4;
      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f);
      (md->chc).length = uVar10;
      bVar2 = pbVar5[2];
      (md->sha3).byte_index = (ushort)uVar8;
      uVar8 = uVar8 & 0xffff;
      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f);
      (md->chc).length = uVar10;
      bVar2 = pbVar5[3];
    }
    return 0;
  }
  if (uVar7 != 0) {
    bVar2 = *in;
    inlen = inlen - uVar7;
    (md->sha3).byte_index = (ushort)(uVar14 + 1);
    uVar10 = (ulong)bVar2 << (((byte)uVar14 & 7) << 3) | (md->chc).length;
    (md->chc).length = uVar10;
    if (uVar7 - 1 != 0) {
      bVar2 = in[1];
      (md->sha3).byte_index = (ushort)(uVar13 + 2);
      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar14 + 1 & 0xffff) << 3) & 0x3f);
      (md->chc).length = uVar10;
      if (uVar7 != 2) {
        bVar2 = in[2];
        (md->sha3).byte_index = (ushort)(uVar13 + 3);
        uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 2 & 0xffff) << 3) & 0x3f);
        (md->chc).length = uVar10;
        if (uVar7 != 3) {
          bVar2 = in[3];
          (md->sha3).byte_index = (ushort)(uVar13 + 4);
          uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 3 & 0xffff) << 3) & 0x3f);
          (md->chc).length = uVar10;
          if (uVar7 != 4) {
            bVar2 = in[4];
            (md->sha3).byte_index = (ushort)(uVar13 + 5);
            uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 4 & 0xffff) << 3) & 0x3f);
            (md->chc).length = uVar10;
            if (uVar7 != 5) {
              bVar2 = in[5];
              (md->sha3).byte_index = (ushort)(uVar13 + 6);
              uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 5 & 0xffff) << 3) & 0x3f);
              (md->chc).length = uVar10;
              if (uVar7 != 6) {
                bVar2 = in[6];
                (md->sha3).byte_index = uVar14 + 7;
                uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f);
                (md->chc).length = uVar10;
              }
            }
          }
        }
      }
    }
    uVar14 = (md->sha3).word_index;
    in = in + (ulong)(uVar7 - 1) + 1;
    puVar11 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);
    *puVar11 = *puVar11 ^ uVar10;
    uVar14 = uVar14 + 1;
    (md->sha3).byte_index = 0;
    (md->chc).length = 0;
    (md->sha3).word_index = uVar14;
    if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {
      keccakf((md->whirlpool).state);
      (md->sha3).word_index = 0;
    }
  }
  uVar10 = inlen >> 3;
  uVar13 = (int)inlen + (int)uVar10 * -8;
  puVar11 = (ulong *)in;
  if (uVar10 != 0) {
    puVar11 = (ulong *)((long)in + uVar10 * 8);
    uVar8 = (int)(uVar10 * 8 - 8 >> 3) + 1U & 3;
    if (uVar8 != 0) {
      if (uVar8 != 1) {
        if (uVar8 != 2) {
          uVar14 = (md->sha3).word_index;
          puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);
          *puVar1 = *puVar1 ^ *(ulong *)in;
          uVar14 = uVar14 + 1;
          (md->sha3).word_index = uVar14;
          if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {
            keccakf((md->whirlpool).state);
            (md->sha3).word_index = 0;
          }
          in = (uchar *)((long)in + 8);
        }
        uVar14 = (md->sha3).word_index;
        puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);
        *puVar1 = *puVar1 ^ *(ulong *)in;
        uVar14 = uVar14 + 1;
        (md->sha3).word_index = uVar14;
        if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {
          keccakf((md->whirlpool).state);
          (md->sha3).word_index = 0;
        }
        in = (uchar *)((long)in + 8);
      }
      uVar14 = (md->sha3).word_index;
      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);
      *puVar1 = *puVar1 ^ *(ulong *)in;
      uVar14 = uVar14 + 1;
      (md->sha3).word_index = uVar14;
      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {
        keccakf((md->whirlpool).state);
        (md->sha3).word_index = 0;
      }
      in = (uchar *)((long)in + 8);
      if ((ulong *)in == puVar11) goto LAB_00153b88;
    }
    do {
      uVar14 = (md->sha3).word_index;
      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);
      *puVar1 = *puVar1 ^ *(ulong *)in;
      uVar14 = uVar14 + 1;
      (md->sha3).word_index = uVar14;
      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {
        keccakf((md->whirlpool).state);
        (md->sha3).word_index = 0;
      }
      uVar14 = (md->sha3).word_index;
      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);
      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 8);
      uVar14 = uVar14 + 1;
      (md->sha3).word_index = uVar14;
      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {
        keccakf((md->whirlpool).state);
        (md->sha3).word_index = 0;
      }
      uVar14 = (md->sha3).word_index;
      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);
      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 0x10);
      uVar14 = uVar14 + 1;
      (md->sha3).word_index = uVar14;
      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {
        keccakf((md->whirlpool).state);
        (md->sha3).word_index = 0;
      }
      uVar14 = (md->sha3).word_index;
      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);
      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 0x18);
      uVar14 = uVar14 + 1;
      (md->sha3).word_index = uVar14;
      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {
        keccakf((md->whirlpool).state);
        (md->sha3).word_index = 0;
      }
      in = (uchar *)((long)in + 0x20);
    } while ((ulong *)in != puVar11);
  }
LAB_00153b88:
  if (uVar13 != 0) {
    puVar1 = (ulong *)((long)puVar11 + (ulong)(uVar13 - 1) + 1);
    uVar14 = (md->sha3).byte_index;
    uVar9 = (uint)uVar14;
    uVar7 = (uint)uVar14;
    uVar8 = (uint)uVar14;
    uVar10 = (md->chc).length;
    uVar13 = uVar13 & 3;
    puVar12 = puVar11;
    if (uVar13 != 0) {
      if (uVar13 != 1) {
        if (uVar13 != 2) {
          uVar3 = *puVar11;
          puVar11 = (ulong *)((long)puVar11 + 1);
          (md->sha3).byte_index = (ushort)(uVar14 + 1);
          uVar8 = uVar14 + 1 & 0xffff;
          uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar14 * '\b' & 0x3fU);
          (md->chc).length = uVar10;
        }
        uVar3 = *puVar11;
        uVar7 = uVar8 + 1;
        puVar11 = (ulong *)((long)puVar11 + 1);
        (md->sha3).byte_index = (ushort)uVar7;
        uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar8 * '\b' & 0x3fU);
        (md->chc).length = uVar10;
      }
      uVar3 = *puVar11;
      uVar9 = uVar7 + 1;
      (md->sha3).byte_index = (ushort)uVar9;
      uVar10 = uVar10 | (ulong)(byte)uVar3 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);
      (md->chc).length = uVar10;
      puVar12 = (ulong *)((long)puVar11 + 1);
      if ((ulong *)((long)puVar11 + 1) == puVar1) {
        return 0;
      }
    }
    do {
      uVar3 = *puVar12;
      uVar13 = uVar9 + 1;
      uVar7 = uVar9 + 3;
      (md->sha3).byte_index = (ushort)uVar13;
      puVar11 = (ulong *)((long)puVar12 + 4);
      uVar10 = (ulong)(byte)uVar3 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f) | uVar10;
      uVar8 = uVar9 + 2;
      uVar9 = uVar9 + 4;
      (md->chc).length = uVar10;
      bVar2 = *(byte *)((long)puVar12 + 1);
      (md->sha3).byte_index = (ushort)uVar8;
      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f);
      (md->chc).length = uVar10;
      bVar2 = *(byte *)((long)puVar12 + 2);
      (md->sha3).byte_index = (ushort)uVar7;
      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar8 & 0xffff) << 3) & 0x3f);
      (md->chc).length = uVar10;
      bVar2 = *(byte *)((long)puVar12 + 3);
      (md->sha3).byte_index = (ushort)uVar9;
      uVar10 = (ulong)bVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar10;
      (md->chc).length = uVar10;
      puVar12 = puVar11;
    } while (puVar11 != puVar1);
  }
  return 0;
}



undefined8 sha3_process(ulong *param_1,ulong *param_2,ulong param_3)

{
  byte bVar1;
  ulong uVar2;
  int iVar3;
  ulong *puVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  ulong uVar8;
  ulong *puVar9;
  ulong *puVar10;
  uint uVar11;
  ushort uVar12;
  
  if (param_3 == 0) {
    return 0;
  }
  if (param_2 == (ulong *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);
  }
  uVar12 = (ushort)param_1[0x33];
  uVar6 = (uint)uVar12;
  uVar11 = (uint)uVar12;
  uVar5 = -uVar11 & 7;
  if (param_3 < uVar5) {
    uVar8 = *param_1;
    uVar7 = ~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3;
    puVar9 = param_2;
    uVar5 = uVar11;
    if (uVar7 == 0) goto LAB_00153dc2;
    puVar9 = (ulong *)((long)param_2 + 1);
    uVar2 = *param_2;
    uVar5 = uVar11 + 1;
    *(short *)(param_1 + 0x33) = (short)uVar5;
    uVar6 = uVar5 & 0xffff;
    uVar8 = uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3);
    *param_1 = uVar8;
    if (uVar7 == 1) goto LAB_00153dc2;
    if (uVar7 != 2) {
      bVar1 = *(byte *)puVar9;
      iVar3 = uVar6 << 3;
      uVar5 = uVar11 + 2;
      puVar9 = (ulong *)((long)param_2 + 2);
      *(short *)(param_1 + 0x33) = (short)uVar5;
      uVar6 = uVar5 & 0xffff;
      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);
      *param_1 = uVar8;
    }
    puVar4 = (ulong *)((long)puVar9 + 1);
    bVar1 = (byte)*puVar9;
    uVar5 = uVar5 + 1;
    while( true ) {
      iVar3 = uVar6 << 3;
      *(short *)(param_1 + 0x33) = (short)uVar5;
      uVar6 = uVar5 & 0xffff;
      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);
      *param_1 = uVar8;
      puVar9 = puVar4;
LAB_00153dc2:
      uVar2 = *puVar9;
      uVar11 = uVar5 + 1;
      *(short *)(param_1 + 0x33) = (short)uVar11;
      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);
      *param_1 = uVar8;
      if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;
      bVar1 = *(byte *)((long)puVar9 + 1);
      uVar7 = uVar5 + 2;
      uVar6 = uVar5 + 3;
      *(short *)(param_1 + 0x33) = (short)uVar7;
      puVar4 = (ulong *)((long)puVar9 + 4);
      uVar5 = uVar5 + 4;
      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);
      *param_1 = uVar8;
      bVar1 = *(byte *)((long)puVar9 + 2);
      *(short *)(param_1 + 0x33) = (short)uVar6;
      uVar6 = uVar6 & 0xffff;
      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);
      *param_1 = uVar8;
      bVar1 = *(byte *)((long)puVar9 + 3);
    }
    return 0;
  }
  if (uVar5 != 0) {
    uVar8 = *param_2;
    param_3 = param_3 - uVar5;
    *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);
    uVar8 = (ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1;
    *param_1 = uVar8;
    if (uVar5 - 1 != 0) {
      bVar1 = *(byte *)((long)param_2 + 1);
      *(short *)(param_1 + 0x33) = (short)(uVar11 + 2);
      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);
      *param_1 = uVar8;
      if (uVar5 != 2) {
        bVar1 = *(byte *)((long)param_2 + 2);
        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);
        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);
        *param_1 = uVar8;
        if (uVar5 != 3) {
          bVar1 = *(byte *)((long)param_2 + 3);
          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);
          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);
          *param_1 = uVar8;
          if (uVar5 != 4) {
            bVar1 = *(byte *)((long)param_2 + 4);
            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);
            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);
            *param_1 = uVar8;
            if (uVar5 != 5) {
              bVar1 = *(byte *)((long)param_2 + 5);
              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);
              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);
              *param_1 = uVar8;
              if (uVar5 != 6) {
                bVar1 = *(byte *)((long)param_2 + 6);
                *(ushort *)(param_1 + 0x33) = uVar12 + 7;
                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);
                *param_1 = uVar8;
              }
            }
          }
        }
      }
    }
    uVar12 = *(ushort *)((long)param_1 + 0x19a);
    param_2 = (ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1);
    param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ uVar8;
    uVar12 = uVar12 + 1;
    *(undefined2 *)(param_1 + 0x33) = 0;
    *param_1 = 0;
    *(ushort *)((long)param_1 + 0x19a) = uVar12;
    if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {
      FUN_001534a0(param_1 + 1);
      *(undefined2 *)((long)param_1 + 0x19a) = 0;
    }
  }
  uVar8 = param_3 >> 3;
  uVar11 = (int)param_3 + (int)uVar8 * -8;
  puVar9 = param_2;
  if (uVar8 != 0) {
    puVar9 = param_2 + uVar8;
    uVar6 = (int)(uVar8 * 8 - 8 >> 3) + 1U & 3;
    if (uVar6 != 0) {
      if (uVar6 != 1) {
        if (uVar6 != 2) {
          uVar12 = *(ushort *)((long)param_1 + 0x19a);
          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;
          uVar12 = uVar12 + 1;
          *(ushort *)((long)param_1 + 0x19a) = uVar12;
          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {
            FUN_001534a0(param_1 + 1);
            *(undefined2 *)((long)param_1 + 0x19a) = 0;
          }
          param_2 = param_2 + 1;
        }
        uVar12 = *(ushort *)((long)param_1 + 0x19a);
        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;
        uVar12 = uVar12 + 1;
        *(ushort *)((long)param_1 + 0x19a) = uVar12;
        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {
          FUN_001534a0(param_1 + 1);
          *(undefined2 *)((long)param_1 + 0x19a) = 0;
        }
        param_2 = param_2 + 1;
      }
      uVar12 = *(ushort *)((long)param_1 + 0x19a);
      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;
      uVar12 = uVar12 + 1;
      *(ushort *)((long)param_1 + 0x19a) = uVar12;
      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {
        FUN_001534a0(param_1 + 1);
        *(undefined2 *)((long)param_1 + 0x19a) = 0;
      }
      param_2 = param_2 + 1;
      if (param_2 == puVar9) goto LAB_00153b88;
    }
    do {
      uVar12 = *(ushort *)((long)param_1 + 0x19a);
      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;
      uVar12 = uVar12 + 1;
      *(ushort *)((long)param_1 + 0x19a) = uVar12;
      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {
        FUN_001534a0(param_1 + 1);
        *(undefined2 *)((long)param_1 + 0x19a) = 0;
      }
      uVar12 = *(ushort *)((long)param_1 + 0x19a);
      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];
      uVar12 = uVar12 + 1;
      *(ushort *)((long)param_1 + 0x19a) = uVar12;
      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {
        FUN_001534a0(param_1 + 1);
        *(undefined2 *)((long)param_1 + 0x19a) = 0;
      }
      uVar12 = *(ushort *)((long)param_1 + 0x19a);
      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];
      uVar12 = uVar12 + 1;
      *(ushort *)((long)param_1 + 0x19a) = uVar12;
      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {
        FUN_001534a0();
        *(undefined2 *)((long)param_1 + 0x19a) = 0;
      }
      uVar12 = *(ushort *)((long)param_1 + 0x19a);
      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];
      uVar12 = uVar12 + 1;
      *(ushort *)((long)param_1 + 0x19a) = uVar12;
      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {
        FUN_001534a0(param_1 + 1);
        *(undefined2 *)((long)param_1 + 0x19a) = 0;
      }
      param_2 = param_2 + 4;
    } while (param_2 != puVar9);
  }
LAB_00153b88:
  if (uVar11 != 0) {
    puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1);
    uVar12 = (ushort)param_1[0x33];
    uVar7 = (uint)uVar12;
    uVar5 = (uint)uVar12;
    uVar6 = (uint)uVar12;
    uVar8 = *param_1;
    uVar11 = uVar11 & 3;
    puVar10 = puVar9;
    if (uVar11 != 0) {
      if (uVar11 != 1) {
        if (uVar11 != 2) {
          uVar2 = *puVar9;
          puVar9 = (ulong *)((long)puVar9 + 1);
          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);
          uVar6 = uVar12 + 1 & 0xffff;
          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);
          *param_1 = uVar8;
        }
        uVar2 = *puVar9;
        uVar5 = uVar6 + 1;
        puVar9 = (ulong *)((long)puVar9 + 1);
        *(short *)(param_1 + 0x33) = (short)uVar5;
        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);
        *param_1 = uVar8;
      }
      uVar2 = *puVar9;
      uVar7 = uVar5 + 1;
      *(short *)(param_1 + 0x33) = (short)uVar7;
      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);
      *param_1 = uVar8;
      puVar10 = (ulong *)((long)puVar9 + 1);
      if ((ulong *)((long)puVar9 + 1) == puVar4) {
        return 0;
      }
    }
    do {
      uVar2 = *puVar10;
      uVar11 = uVar7 + 1;
      uVar5 = uVar7 + 3;
      *(short *)(param_1 + 0x33) = (short)uVar11;
      puVar9 = (ulong *)((long)puVar10 + 4);
      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;
      uVar6 = uVar7 + 2;
      uVar7 = uVar7 + 4;
      *param_1 = uVar8;
      bVar1 = *(byte *)((long)puVar10 + 1);
      *(short *)(param_1 + 0x33) = (short)uVar6;
      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);
      *param_1 = uVar8;
      bVar1 = *(byte *)((long)puVar10 + 2);
      *(short *)(param_1 + 0x33) = (short)uVar5;
      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);
      *param_1 = uVar8;
      bVar1 = *(byte *)((long)puVar10 + 3);
      *(short *)(param_1 + 0x33) = (short)uVar7;
      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;
      *param_1 = uVar8;
      puVar10 = puVar9;
    } while (puVar9 != puVar4);
  }
  return 0;
}


TEST RDX,RDX
JZ 0x00153f00
PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
MOV RBP,RSI
PUSH RBX
SUB RSP,0x18
TEST RSI,RSI
JZ 0x00153fe2
MOVZX ECX,word ptr [RDI + 0x198]
MOV RBX,RDI
MOV ESI,ECX
MOV EAX,ECX
NEG ESI
AND ESI,0x7
MOV EDI,ESI
CMP RDI,RDX
JA 0x00153ce0
TEST ESI,ESI
JZ 0x00153a7a
MOVZX R12D,byte ptr [RBP]
LEA R8D,[RCX + 0x1]
SHL ECX,0x3
MOV R10D,ESI
SUB RDX,RDI
MOV word ptr [RBX + 0x198],R8W
SHL R12,CL
OR R12,qword ptr [RBX]
MOV qword ptr [RBX],R12
SUB R10D,0x1
JZ 0x00153a27
MOVZX R11D,byte ptr [RBP + 0x1]
MOVZX ECX,R8W
LEA R9D,[RAX + 0x2]
SHL ECX,0x3
MOV word ptr [RBX + 0x198],R9W
SHL R11,CL
OR R12,R11
MOV qword ptr [RBX],R12
CMP ESI,0x2
JZ 0x00153a27
MOVZX R13D,byte ptr [RBP + 0x2]
MOVZX ECX,R9W
LEA R14D,[RAX + 0x3]
SHL ECX,0x3
MOV word ptr [RBX + 0x198],R14W
SHL R13,CL
OR R12,R13
MOV qword ptr [RBX],R12
CMP ESI,0x3
JZ 0x00153a27
MOVZX R15D,byte ptr [RBP + 0x3]
MOVZX ECX,R14W
LEA EDI,[RAX + 0x4]
SHL ECX,0x3
MOV word ptr [RBX + 0x198],DI
SHL R15,CL
OR R12,R15
MOV qword ptr [RBX],R12
CMP ESI,0x4
JZ 0x00153a27
MOVZX R11D,byte ptr [RBP + 0x4]
MOVZX ECX,DI
LEA R8D,[RAX + 0x5]
SHL ECX,0x3
MOV word ptr [RBX + 0x198],R8W
SHL R11,CL
OR R12,R11
MOV qword ptr [RBX],R12
CMP ESI,0x5
JZ 0x00153a27
MOVZX R13D,byte ptr [RBP + 0x5]
MOVZX ECX,R8W
LEA R9D,[RAX + 0x6]
SHL ECX,0x3
MOV word ptr [RBX + 0x198],R9W
SHL R13,CL
OR R12,R13
MOV qword ptr [RBX],R12
CMP ESI,0x6
JZ 0x00153a27
MOVZX ESI,byte ptr [RBP + 0x6]
MOVZX ECX,R9W
ADD EAX,0x7
SHL ECX,0x3
MOV word ptr [RBX + 0x198],AX
SHL RSI,CL
OR R12,RSI
MOV qword ptr [RBX],R12
MOV EAX,R10D
MOVZX R10D,word ptr [RBX + 0x19a]
MOV R11D,0x19
LEA RBP,[RBP + RAX*0x1 + 0x1]
XOR qword ptr [RBX + R10*0x8 + 0x8],R12
MOV R14,R10
MOVZX EDI,word ptr [RBX + 0x19c]
XOR R12D,R12D
ADD R14D,0x1
MOV word ptr [RBX + 0x198],R12W
MOVZX R15D,R14W
SUB R11D,EDI
MOV qword ptr [RBX],0x0
MOV word ptr [RBX + 0x19a],R14W
CMP R15D,R11D
JZ 0x00153f80
MOV R8,RDX
MOV R13D,EDX
SHR R8,0x3
LEA R9D,[R8*0x8]
SUB R13D,R9D
TEST R8,R8
JZ 0x00153fa8
LEA RSI,[-0x8 + R8*0x8]
MOV R14D,0x19
LEA R12,[RBP + R8*0x8]
SHR RSI,0x3
ADD RSI,0x1
AND ESI,0x3
JZ 0x00153ec0
CMP RSI,0x1
JZ 0x00153b3e
CMP RSI,0x2
JZ 0x00153b05
MOVZX R10D,word ptr [RBX + 0x19a]
MOV RCX,qword ptr [RBP]
MOV EDX,R14D
XOR qword ptr [RBX + R10*0x8 + 0x8],RCX
MOV RAX,R10
MOVZX R11D,word ptr [RBX + 0x19c]
ADD EAX,0x1
MOVZX R15D,AX
SUB EDX,R11D
MOV word ptr [RBX + 0x19a],AX
CMP R15D,EDX
JZ 0x00153fc9
ADD RBP,0x8
MOVZX R9D,word ptr [RBX + 0x19a]
MOV R10,qword ptr [RBP]
MOV EDX,R14D
XOR qword ptr [RBX + R9*0x8 + 0x8],R10
MOV RSI,R9
MOVZX ECX,word ptr [RBX + 0x19c]
ADD ESI,0x1
MOVZX EAX,SI
SUB EDX,ECX
MOV word ptr [RBX + 0x19a],SI
CMP EAX,EDX
JZ 0x00153fb0
ADD RBP,0x8
MOVZX EDI,word ptr [RBX + 0x19a]
MOV R9,qword ptr [RBP]
MOV EDX,R14D
XOR qword ptr [RBX + RDI*0x8 + 0x8],R9
MOV R8,RDI
MOVZX R10D,word ptr [RBX + 0x19c]
ADD R8D,0x1
MOVZX ESI,R8W
SUB EDX,R10D
MOV word ptr [RBX + 0x19a],R8W
CMP ESI,EDX
JZ 0x00153f60
ADD RBP,0x8
CMP RBP,R12
JNZ 0x00153ec0
NOP dword ptr [RAX]
LEA R14D,[R13 + -0x1]
TEST R13D,R13D
JZ 0x00153ccb
LEA R13,[R12 + R14*0x1 + 0x1]
ADD R14,0x1
MOVZX EAX,word ptr [RBX + 0x198]
MOV RDI,qword ptr [RBX]
AND R14D,0x3
JZ 0x00153c3d
CMP R14,0x1
JZ 0x00153c0c
CMP R14,0x2
JZ 0x00153be7
MOVZX R15D,byte ptr [R12]
LEA ECX,[RAX*0x8]
LEA R8D,[RAX + 0x1]
ADD R12,0x1
MOV word ptr [RBX + 0x198],R8W
MOVZX EAX,R8W
SHL R15,CL
OR RDI,R15
MOV qword ptr [RBX],RDI
MOVZX R9D,byte ptr [R12]
LEA ECX,[RAX*0x8]
LEA ESI,[RAX + 0x1]
ADD R12,0x1
MOV word ptr [RBX + 0x198],SI
MOV EAX,ESI
SHL R9,CL
OR RDI,R9
MOV qword ptr [RBX],RDI
ADD R12,0x1
MOVZX R10D,byte ptr [R12 + -0x1]
MOVZX ECX,AX
LEA R11D,[RAX + 0x1]
SHL ECX,0x3
MOV word ptr [RBX + 0x198],R11W
MOV EAX,R11D
SHL R10,CL
OR RDI,R10
MOV qword ptr [RBX],RDI
CMP R12,R13
JZ 0x00153ccb
MOVZX EDX,byte ptr [R12]
MOVZX ECX,AX
LEA EBP,[RAX + 0x1]
LEA R9D,[RAX + 0x3]
SHL ECX,0x3
MOV word ptr [RBX + 0x198],BP
ADD R12,0x4
SHL RDX,CL
MOVZX ECX,BP
MOV R14,RDX
SHL ECX,0x3
OR R14,RDI
LEA EDI,[RAX + 0x2]
ADD EAX,0x4
MOV qword ptr [RBX],R14
MOVZX R15D,byte ptr [R12 + -0x3]
MOV word ptr [RBX + 0x198],DI
SHL R15,CL
MOVZX ECX,DI
OR R14,R15
SHL ECX,0x3
MOV qword ptr [RBX],R14
MOVZX R8D,byte ptr [R12 + -0x2]
MOV word ptr [RBX + 0x198],R9W
SHL R8,CL
MOVZX ECX,R9W
OR R14,R8
SHL ECX,0x3
MOV qword ptr [RBX],R14
MOVZX EDI,byte ptr [R12 + -0x1]
MOV word ptr [RBX + 0x198],AX
SHL RDI,CL
OR RDI,R14
MOV qword ptr [RBX],RDI
CMP R12,R13
JNZ 0x00153c3d
ADD RSP,0x18
XOR EAX,EAX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV R13,RBP
ADD RDX,RBP
MOV R12,qword ptr [RBX]
NOT R13
ADD R13,RDX
AND R13D,0x3
JZ 0x00153dc2
ADD RBP,0x1
MOVZX ESI,byte ptr [RBP + -0x1]
SHL ECX,0x3
ADD EAX,0x1
MOV word ptr [RBX + 0x198],AX
SHL RSI,CL
MOVZX ECX,AX
OR R12,RSI
MOV qword ptr [RBX],R12
CMP R13,0x1
JZ 0x00153dc2
CMP R13,0x2
JZ 0x00153d4c
MOVZX R10D,byte ptr [RBP]
SHL ECX,0x3
ADD EAX,0x1
ADD RBP,0x1
MOV word ptr [RBX + 0x198],AX
SHL R10,CL
MOVZX ECX,AX
OR R12,R10
MOV qword ptr [RBX],R12
ADD RBP,0x1
MOVZX R11D,byte ptr [RBP + -0x1]
ADD EAX,0x1
JMP 0x00153dac
MOVZX R9D,byte ptr [RBP + 0x1]
MOVZX ECX,R8W
LEA EDI,[RAX + 0x2]
LEA ESI,[RAX + 0x3]
SHL ECX,0x3
MOV word ptr [RBX + 0x198],DI
ADD RBP,0x4
ADD EAX,0x4
SHL R9,CL
MOVZX ECX,DI
OR R12,R9
SHL ECX,0x3
MOV qword ptr [RBX],R12
MOVZX R13D,byte ptr [RBP + -0x2]
MOV word ptr [RBX + 0x198],SI
SHL R13,CL
MOVZX ECX,SI
OR R12,R13
MOV qword ptr [RBX],R12
MOVZX R11D,byte ptr [RBP + -0x1]
SHL ECX,0x3
MOV word ptr [RBX + 0x198],AX
SHL R11,CL
MOVZX ECX,AX
OR R12,R11
MOV qword ptr [RBX],R12
MOVZX R15D,byte ptr [RBP]
SHL ECX,0x3
LEA R8D,[RAX + 0x1]
LEA R14,[RBP + 0x1]
MOV word ptr [RBX + 0x198],R8W
SHL R15,CL
OR R12,R15
MOV qword ptr [RBX],R12
CMP R14,RDX
JNZ 0x00153d60
JMP 0x00153ccb
LEA RDI,[RBX + 0x8]
CALL 0x001534a0
XOR R10D,R10D
MOV word ptr [RBX + 0x19a],R10W
MOVZX R11D,word ptr [RBX + 0x19a]
LEA R15,[RBP + 0x8]
MOV RBP,qword ptr [RBP + 0x8]
MOV EDX,R14D
XOR qword ptr [RBX + R11*0x8 + 0x8],RBP
MOV RAX,R11
MOVZX EDI,word ptr [RBX + 0x19c]
ADD EAX,0x1
MOVZX ECX,AX
SUB EDX,EDI
MOV word ptr [RBX + 0x19a],AX
CMP ECX,EDX
JZ 0x00153f40
MOVZX ESI,word ptr [RBX + 0x19a]
MOV R11,qword ptr [R15 + 0x8]
MOV EDX,R14D
XOR qword ptr [RBX + RSI*0x8 + 0x8],R11
MOV R10,RSI
MOVZX EBP,word ptr [RBX + 0x19c]
ADD R10D,0x1
MOVZX EAX,R10W
SUB EDX,EBP
MOV word ptr [RBX + 0x19a],R10W
CMP EAX,EDX
JZ 0x00153f20
MOVZX R8D,word ptr [RBX + 0x19a]
MOV RSI,qword ptr [R15 + 0x10]
MOV EDX,R14D
XOR qword ptr [RBX + R8*0x8 + 0x8],RSI
MOV R9,R8
MOVZX R11D,word ptr [RBX + 0x19c]
ADD R9D,0x1
MOVZX R10D,R9W
SUB EDX,R11D
MOV word ptr [RBX + 0x19a],R9W
CMP R10D,EDX
JZ 0x00153f08
LEA RBP,[R15 + 0x18]
CMP RBP,R12
JZ 0x00153b88
MOVZX R15D,word ptr [RBX + 0x19a]
MOV RDI,qword ptr [RBP]
MOV EDX,R14D
XOR qword ptr [RBX + R15*0x8 + 0x8],RDI
MOV R11,R15
MOVZX R9D,word ptr [RBX + 0x19c]
ADD R11D,0x1
MOVZX R8D,R11W
SUB EDX,R9D
MOV word ptr [RBX + 0x19a],R11W
CMP R8D,EDX
JNZ 0x00153e0c
JMP 0x00153df8
XOR EAX,EAX
RET
LEA RDI,[RBX + 0x8]
XOR EBP,EBP
CALL 0x001534a0
MOV word ptr [RBX + 0x19a],BP
JMP 0x00153eb3
LEA RDI,[RBX + 0x8]
CALL 0x001534a0
XOR EDI,EDI
MOV word ptr [RBX + 0x19a],DI
JMP 0x00153e7c
LEA RDI,[RBX + 0x8]
CALL 0x001534a0
XOR R9D,R9D
MOV word ptr [RBX + 0x19a],R9W
JMP 0x00153e45
LEA RDI,[RBX + 0x8]
CALL 0x001534a0
XOR ECX,ECX
MOV word ptr [RBX + 0x19a],CX
JMP 0x00153b77
LEA RDI,[RBX + 0x8]
MOV qword ptr [RSP + 0x8],RDX
CALL 0x001534a0
XOR EDX,EDX
MOV word ptr [RBX + 0x19a],DX
MOV RDX,qword ptr [RSP + 0x8]
JMP 0x00153a7a
MOV R12,RBP
JMP 0x00153b88
LEA RDI,[RBX + 0x8]
CALL 0x001534a0
XOR R11D,R11D
MOV word ptr [RBX + 0x19a],R11W
JMP 0x00153b3a
LEA RDI,[RBX + 0x8]
CALL 0x001534a0
XOR R8D,R8D
MOV word ptr [RBX + 0x19a],R8W
JMP 0x00153b01
MOV EDX,0xbf
LEA RSI,[0x1aefa6]
LEA RDI,[0x1a8790]
CALL 0x00114270
(translation_unit "undefined8 sha3_process(ulong *param_1,ulong *param_2,ulong param_3)\n\n{\n  byte bVar1;\n  ulong uVar2;\n  int iVar3;\n  ulong *puVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  ulong uVar8;\n  ulong *puVar9;\n  ulong *puVar10;\n  uint uVar11;\n  ushort uVar12;\n  \n  if (param_3 == 0) {\n    return 0;\n  }\n  if (param_2 == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);\n  }\n  uVar12 = (ushort)param_1[0x33];\n  uVar6 = (uint)uVar12;\n  uVar11 = (uint)uVar12;\n  uVar5 = -uVar11 & 7;\n  if (param_3 < uVar5) {\n    uVar8 = *param_1;\n    uVar7 = ~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3;\n    puVar9 = param_2;\n    uVar5 = uVar11;\n    if (uVar7 == 0) goto LAB_00153dc2;\n    puVar9 = (ulong *)((long)param_2 + 1);\n    uVar2 = *param_2;\n    uVar5 = uVar11 + 1;\n    *(short *)(param_1 + 0x33) = (short)uVar5;\n    uVar6 = uVar5 & 0xffff;\n    uVar8 = uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3);\n    *param_1 = uVar8;\n    if (uVar7 == 1) goto LAB_00153dc2;\n    if (uVar7 != 2) {\n      bVar1 = *(byte *)puVar9;\n      iVar3 = uVar6 << 3;\n      uVar5 = uVar11 + 2;\n      puVar9 = (ulong *)((long)param_2 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n    }\n    puVar4 = (ulong *)((long)puVar9 + 1);\n    bVar1 = (byte)*puVar9;\n    uVar5 = uVar5 + 1;\n    while( true ) {\n      iVar3 = uVar6 << 3;\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n      puVar9 = puVar4;\nLAB_00153dc2:\n      uVar2 = *puVar9;\n      uVar11 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);\n      *param_1 = uVar8;\n      if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;\n      bVar1 = *(byte *)((long)puVar9 + 1);\n      uVar7 = uVar5 + 2;\n      uVar6 = uVar5 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      puVar4 = (ulong *)((long)puVar9 + 4);\n      uVar5 = uVar5 + 4;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar6 = uVar6 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 3);\n    }\n    return 0;\n  }\n  if (uVar5 != 0) {\n    uVar8 = *param_2;\n    param_3 = param_3 - uVar5;\n    *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n    uVar8 = (ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1;\n    *param_1 = uVar8;\n    if (uVar5 - 1 != 0) {\n      bVar1 = *(byte *)((long)param_2 + 1);\n      *(short *)(param_1 + 0x33) = (short)(uVar11 + 2);\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }\n    }\n    uVar12 = *(ushort *)((long)param_1 + 0x19a);\n    param_2 = (ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1);\n    param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ uVar8;\n    uVar12 = uVar12 + 1;\n    *(undefined2 *)(param_1 + 0x33) = 0;\n    *param_1 = 0;\n    *(ushort *)((long)param_1 + 0x19a) = uVar12;\n    if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n      FUN_001534a0(param_1 + 1);\n      *(undefined2 *)((long)param_1 + 0x19a) = 0;\n    }\n  }\n  uVar8 = param_3 >> 3;\n  uVar11 = (int)param_3 + (int)uVar8 * -8;\n  puVar9 = param_2;\n  if (uVar8 != 0) {\n    puVar9 = param_2 + uVar8;\n    uVar6 = (int)(uVar8 * 8 - 8 >> 3) + 1U & 3;\n    if (uVar6 != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 1;\n      if (param_2 == puVar9) goto LAB_00153b88;\n    }\n    do {\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 4;\n    } while (param_2 != puVar9);\n  }\nLAB_00153b88:\n  if (uVar11 != 0) {\n    puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1);\n    uVar12 = (ushort)param_1[0x33];\n    uVar7 = (uint)uVar12;\n    uVar5 = (uint)uVar12;\n    uVar6 = (uint)uVar12;\n    uVar8 = *param_1;\n    uVar11 = uVar11 & 3;\n    puVar10 = puVar9;\n    if (uVar11 != 0) {\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }\n    do {\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar4);\n  }\n  return 0;\n}\n\n" (function_definition "undefined8 sha3_process(ulong *param_1,ulong *param_2,ulong param_3)\n\n{\n  byte bVar1;\n  ulong uVar2;\n  int iVar3;\n  ulong *puVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  ulong uVar8;\n  ulong *puVar9;\n  ulong *puVar10;\n  uint uVar11;\n  ushort uVar12;\n  \n  if (param_3 == 0) {\n    return 0;\n  }\n  if (param_2 == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);\n  }\n  uVar12 = (ushort)param_1[0x33];\n  uVar6 = (uint)uVar12;\n  uVar11 = (uint)uVar12;\n  uVar5 = -uVar11 & 7;\n  if (param_3 < uVar5) {\n    uVar8 = *param_1;\n    uVar7 = ~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3;\n    puVar9 = param_2;\n    uVar5 = uVar11;\n    if (uVar7 == 0) goto LAB_00153dc2;\n    puVar9 = (ulong *)((long)param_2 + 1);\n    uVar2 = *param_2;\n    uVar5 = uVar11 + 1;\n    *(short *)(param_1 + 0x33) = (short)uVar5;\n    uVar6 = uVar5 & 0xffff;\n    uVar8 = uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3);\n    *param_1 = uVar8;\n    if (uVar7 == 1) goto LAB_00153dc2;\n    if (uVar7 != 2) {\n      bVar1 = *(byte *)puVar9;\n      iVar3 = uVar6 << 3;\n      uVar5 = uVar11 + 2;\n      puVar9 = (ulong *)((long)param_2 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n    }\n    puVar4 = (ulong *)((long)puVar9 + 1);\n    bVar1 = (byte)*puVar9;\n    uVar5 = uVar5 + 1;\n    while( true ) {\n      iVar3 = uVar6 << 3;\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n      puVar9 = puVar4;\nLAB_00153dc2:\n      uVar2 = *puVar9;\n      uVar11 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);\n      *param_1 = uVar8;\n      if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;\n      bVar1 = *(byte *)((long)puVar9 + 1);\n      uVar7 = uVar5 + 2;\n      uVar6 = uVar5 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      puVar4 = (ulong *)((long)puVar9 + 4);\n      uVar5 = uVar5 + 4;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar6 = uVar6 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 3);\n    }\n    return 0;\n  }\n  if (uVar5 != 0) {\n    uVar8 = *param_2;\n    param_3 = param_3 - uVar5;\n    *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n    uVar8 = (ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1;\n    *param_1 = uVar8;\n    if (uVar5 - 1 != 0) {\n      bVar1 = *(byte *)((long)param_2 + 1);\n      *(short *)(param_1 + 0x33) = (short)(uVar11 + 2);\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }\n    }\n    uVar12 = *(ushort *)((long)param_1 + 0x19a);\n    param_2 = (ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1);\n    param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ uVar8;\n    uVar12 = uVar12 + 1;\n    *(undefined2 *)(param_1 + 0x33) = 0;\n    *param_1 = 0;\n    *(ushort *)((long)param_1 + 0x19a) = uVar12;\n    if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n      FUN_001534a0(param_1 + 1);\n      *(undefined2 *)((long)param_1 + 0x19a) = 0;\n    }\n  }\n  uVar8 = param_3 >> 3;\n  uVar11 = (int)param_3 + (int)uVar8 * -8;\n  puVar9 = param_2;\n  if (uVar8 != 0) {\n    puVar9 = param_2 + uVar8;\n    uVar6 = (int)(uVar8 * 8 - 8 >> 3) + 1U & 3;\n    if (uVar6 != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 1;\n      if (param_2 == puVar9) goto LAB_00153b88;\n    }\n    do {\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 4;\n    } while (param_2 != puVar9);\n  }\nLAB_00153b88:\n  if (uVar11 != 0) {\n    puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1);\n    uVar12 = (ushort)param_1[0x33];\n    uVar7 = (uint)uVar12;\n    uVar5 = (uint)uVar12;\n    uVar6 = (uint)uVar12;\n    uVar8 = *param_1;\n    uVar11 = uVar11 & 3;\n    puVar10 = puVar9;\n    if (uVar11 != 0) {\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }\n    do {\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar4);\n  }\n  return 0;\n}" type_identifier (function_declarator "sha3_process(ulong *param_1,ulong *param_2,ulong param_3)" identifier (parameter_list "(ulong *param_1,ulong *param_2,ulong param_3)" ( (parameter_declaration "ulong *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "ulong param_3" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  ulong uVar2;\n  int iVar3;\n  ulong *puVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  ulong uVar8;\n  ulong *puVar9;\n  ulong *puVar10;\n  uint uVar11;\n  ushort uVar12;\n  \n  if (param_3 == 0) {\n    return 0;\n  }\n  if (param_2 == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);\n  }\n  uVar12 = (ushort)param_1[0x33];\n  uVar6 = (uint)uVar12;\n  uVar11 = (uint)uVar12;\n  uVar5 = -uVar11 & 7;\n  if (param_3 < uVar5) {\n    uVar8 = *param_1;\n    uVar7 = ~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3;\n    puVar9 = param_2;\n    uVar5 = uVar11;\n    if (uVar7 == 0) goto LAB_00153dc2;\n    puVar9 = (ulong *)((long)param_2 + 1);\n    uVar2 = *param_2;\n    uVar5 = uVar11 + 1;\n    *(short *)(param_1 + 0x33) = (short)uVar5;\n    uVar6 = uVar5 & 0xffff;\n    uVar8 = uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3);\n    *param_1 = uVar8;\n    if (uVar7 == 1) goto LAB_00153dc2;\n    if (uVar7 != 2) {\n      bVar1 = *(byte *)puVar9;\n      iVar3 = uVar6 << 3;\n      uVar5 = uVar11 + 2;\n      puVar9 = (ulong *)((long)param_2 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n    }\n    puVar4 = (ulong *)((long)puVar9 + 1);\n    bVar1 = (byte)*puVar9;\n    uVar5 = uVar5 + 1;\n    while( true ) {\n      iVar3 = uVar6 << 3;\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n      puVar9 = puVar4;\nLAB_00153dc2:\n      uVar2 = *puVar9;\n      uVar11 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);\n      *param_1 = uVar8;\n      if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;\n      bVar1 = *(byte *)((long)puVar9 + 1);\n      uVar7 = uVar5 + 2;\n      uVar6 = uVar5 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      puVar4 = (ulong *)((long)puVar9 + 4);\n      uVar5 = uVar5 + 4;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar6 = uVar6 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 3);\n    }\n    return 0;\n  }\n  if (uVar5 != 0) {\n    uVar8 = *param_2;\n    param_3 = param_3 - uVar5;\n    *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n    uVar8 = (ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1;\n    *param_1 = uVar8;\n    if (uVar5 - 1 != 0) {\n      bVar1 = *(byte *)((long)param_2 + 1);\n      *(short *)(param_1 + 0x33) = (short)(uVar11 + 2);\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }\n    }\n    uVar12 = *(ushort *)((long)param_1 + 0x19a);\n    param_2 = (ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1);\n    param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ uVar8;\n    uVar12 = uVar12 + 1;\n    *(undefined2 *)(param_1 + 0x33) = 0;\n    *param_1 = 0;\n    *(ushort *)((long)param_1 + 0x19a) = uVar12;\n    if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n      FUN_001534a0(param_1 + 1);\n      *(undefined2 *)((long)param_1 + 0x19a) = 0;\n    }\n  }\n  uVar8 = param_3 >> 3;\n  uVar11 = (int)param_3 + (int)uVar8 * -8;\n  puVar9 = param_2;\n  if (uVar8 != 0) {\n    puVar9 = param_2 + uVar8;\n    uVar6 = (int)(uVar8 * 8 - 8 >> 3) + 1U & 3;\n    if (uVar6 != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 1;\n      if (param_2 == puVar9) goto LAB_00153b88;\n    }\n    do {\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 4;\n    } while (param_2 != puVar9);\n  }\nLAB_00153b88:\n  if (uVar11 != 0) {\n    puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1);\n    uVar12 = (ushort)param_1[0x33];\n    uVar7 = (uint)uVar12;\n    uVar5 = (uint)uVar12;\n    uVar6 = (uint)uVar12;\n    uVar8 = *param_1;\n    uVar11 = uVar11 & 3;\n    puVar10 = puVar9;\n    if (uVar11 != 0) {\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }\n    do {\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar4);\n  }\n  return 0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "ulong *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "ulong *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "ulong *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "ushort uVar12;" type_identifier identifier ;) (if_statement "if (param_3 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (param_2 == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);\n  }" if (parenthesized_expression "(param_2 == (ulong *)0x0)" ( (binary_expression "param_2 == (ulong *)0x0" identifier == (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);\n  }" { comment (expression_statement "crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);" (call_expression "crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf)" identifier (argument_list "("in != NULL","src/hashes/sha3.c",0xbf)" ( (string_literal ""in != NULL"" " string_content ") , (string_literal ""src/hashes/sha3.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "uVar12 = (ushort)param_1[0x33];" (assignment_expression "uVar12 = (ushort)param_1[0x33]" identifier = (cast_expression "(ushort)param_1[0x33]" ( (type_descriptor "ushort" type_identifier) ) (subscript_expression "param_1[0x33]" identifier [ number_literal ]))) ;) (expression_statement "uVar6 = (uint)uVar12;" (assignment_expression "uVar6 = (uint)uVar12" identifier = (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar11 = (uint)uVar12;" (assignment_expression "uVar11 = (uint)uVar12" identifier = (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar5 = -uVar11 & 7;" (assignment_expression "uVar5 = -uVar11 & 7" identifier = (binary_expression "-uVar11 & 7" (unary_expression "-uVar11" - identifier) & number_literal)) ;) (if_statement "if (param_3 < uVar5) {\n    uVar8 = *param_1;\n    uVar7 = ~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3;\n    puVar9 = param_2;\n    uVar5 = uVar11;\n    if (uVar7 == 0) goto LAB_00153dc2;\n    puVar9 = (ulong *)((long)param_2 + 1);\n    uVar2 = *param_2;\n    uVar5 = uVar11 + 1;\n    *(short *)(param_1 + 0x33) = (short)uVar5;\n    uVar6 = uVar5 & 0xffff;\n    uVar8 = uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3);\n    *param_1 = uVar8;\n    if (uVar7 == 1) goto LAB_00153dc2;\n    if (uVar7 != 2) {\n      bVar1 = *(byte *)puVar9;\n      iVar3 = uVar6 << 3;\n      uVar5 = uVar11 + 2;\n      puVar9 = (ulong *)((long)param_2 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n    }\n    puVar4 = (ulong *)((long)puVar9 + 1);\n    bVar1 = (byte)*puVar9;\n    uVar5 = uVar5 + 1;\n    while( true ) {\n      iVar3 = uVar6 << 3;\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n      puVar9 = puVar4;\nLAB_00153dc2:\n      uVar2 = *puVar9;\n      uVar11 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);\n      *param_1 = uVar8;\n      if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;\n      bVar1 = *(byte *)((long)puVar9 + 1);\n      uVar7 = uVar5 + 2;\n      uVar6 = uVar5 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      puVar4 = (ulong *)((long)puVar9 + 4);\n      uVar5 = uVar5 + 4;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar6 = uVar6 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 3);\n    }\n    return 0;\n  }" if (parenthesized_expression "(param_3 < uVar5)" ( (binary_expression "param_3 < uVar5" identifier < identifier) )) (compound_statement "{\n    uVar8 = *param_1;\n    uVar7 = ~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3;\n    puVar9 = param_2;\n    uVar5 = uVar11;\n    if (uVar7 == 0) goto LAB_00153dc2;\n    puVar9 = (ulong *)((long)param_2 + 1);\n    uVar2 = *param_2;\n    uVar5 = uVar11 + 1;\n    *(short *)(param_1 + 0x33) = (short)uVar5;\n    uVar6 = uVar5 & 0xffff;\n    uVar8 = uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3);\n    *param_1 = uVar8;\n    if (uVar7 == 1) goto LAB_00153dc2;\n    if (uVar7 != 2) {\n      bVar1 = *(byte *)puVar9;\n      iVar3 = uVar6 << 3;\n      uVar5 = uVar11 + 2;\n      puVar9 = (ulong *)((long)param_2 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n    }\n    puVar4 = (ulong *)((long)puVar9 + 1);\n    bVar1 = (byte)*puVar9;\n    uVar5 = uVar5 + 1;\n    while( true ) {\n      iVar3 = uVar6 << 3;\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n      puVar9 = puVar4;\nLAB_00153dc2:\n      uVar2 = *puVar9;\n      uVar11 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);\n      *param_1 = uVar8;\n      if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;\n      bVar1 = *(byte *)((long)puVar9 + 1);\n      uVar7 = uVar5 + 2;\n      uVar6 = uVar5 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      puVar4 = (ulong *)((long)puVar9 + 4);\n      uVar5 = uVar5 + 4;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar6 = uVar6 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 3);\n    }\n    return 0;\n  }" { (expression_statement "uVar8 = *param_1;" (assignment_expression "uVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar7 = ~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3;" (assignment_expression "uVar7 = ~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3" identifier = (binary_expression "~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3" (binary_expression "~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2)" (unary_expression "~(uint)param_2" ~ (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier)) + (cast_expression "(int)(byte *)(param_3 + (long)param_2)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(byte *)(param_3 + (long)param_2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + (long)param_2)" ( (binary_expression "param_3 + (long)param_2" identifier + (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))))) & number_literal)) ;) (expression_statement "puVar9 = param_2;" (assignment_expression "puVar9 = param_2" identifier = identifier) ;) (expression_statement "uVar5 = uVar11;" (assignment_expression "uVar5 = uVar11" identifier = identifier) ;) (if_statement "if (uVar7 == 0) goto LAB_00153dc2;" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00153dc2;" goto statement_identifier ;)) (expression_statement "puVar9 = (ulong *)((long)param_2 + 1);" (assignment_expression "puVar9 = (ulong *)((long)param_2 + 1)" identifier = (cast_expression "(ulong *)((long)param_2 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 1)" ( (binary_expression "(long)param_2 + 1" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar5 = uVar11 + 1;" (assignment_expression "uVar5 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar5;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar5" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar5" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar6 = uVar5 & 0xffff;" (assignment_expression "uVar6 = uVar5 & 0xffff" identifier = (binary_expression "uVar5 & 0xffff" identifier & number_literal)) ;) (expression_statement "uVar8 = uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3);" (assignment_expression "uVar8 = uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3)" identifier = (binary_expression "uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3)" identifier | (binary_expression "(ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3)" (cast_expression "(ulong)(byte)uVar2" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) << (parenthesized_expression "(((byte)uVar12 & 7) << 3)" ( (binary_expression "((byte)uVar12 & 7) << 3" (parenthesized_expression "((byte)uVar12 & 7)" ( (binary_expression "(byte)uVar12 & 7" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) << number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (if_statement "if (uVar7 == 1) goto LAB_00153dc2;" if (parenthesized_expression "(uVar7 == 1)" ( (binary_expression "uVar7 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00153dc2;" goto statement_identifier ;)) (if_statement "if (uVar7 != 2) {\n      bVar1 = *(byte *)puVar9;\n      iVar3 = uVar6 << 3;\n      uVar5 = uVar11 + 2;\n      puVar9 = (ulong *)((long)param_2 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n    }" if (parenthesized_expression "(uVar7 != 2)" ( (binary_expression "uVar7 != 2" identifier != number_literal) )) (compound_statement "{\n      bVar1 = *(byte *)puVar9;\n      iVar3 = uVar6 << 3;\n      uVar5 = uVar11 + 2;\n      puVar9 = (ulong *)((long)param_2 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n    }" { (expression_statement "bVar1 = *(byte *)puVar9;" (assignment_expression "bVar1 = *(byte *)puVar9" identifier = (pointer_expression "*(byte *)puVar9" * (cast_expression "(byte *)puVar9" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar3 = uVar6 << 3;" (assignment_expression "iVar3 = uVar6 << 3" identifier = (binary_expression "uVar6 << 3" identifier << number_literal)) ;) (expression_statement "uVar5 = uVar11 + 2;" (assignment_expression "uVar5 = uVar11 + 2" identifier = (binary_expression "uVar11 + 2" identifier + number_literal)) ;) (expression_statement "puVar9 = (ulong *)((long)param_2 + 2);" (assignment_expression "puVar9 = (ulong *)((long)param_2 + 2)" identifier = (cast_expression "(ulong *)((long)param_2 + 2)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 2)" ( (binary_expression "(long)param_2 + 2" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar5;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar5" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar5" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar6 = uVar5 & 0xffff;" (assignment_expression "uVar6 = uVar5 & 0xffff" identifier = (binary_expression "uVar5 & 0xffff" identifier & number_literal)) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)iVar3 & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)iVar3 & 0x3f)" ( (binary_expression "(byte)iVar3 & 0x3f" (cast_expression "(byte)iVar3" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) })) (expression_statement "puVar4 = (ulong *)((long)puVar9 + 1);" (assignment_expression "puVar4 = (ulong *)((long)puVar9 + 1)" identifier = (cast_expression "(ulong *)((long)puVar9 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 1)" ( (binary_expression "(long)puVar9 + 1" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "bVar1 = (byte)*puVar9;" (assignment_expression "bVar1 = (byte)*puVar9" identifier = (binary_expression "(byte)*puVar9" (parenthesized_expression "(byte)" ( identifier )) * identifier)) ;) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (while_statement "while( true ) {\n      iVar3 = uVar6 << 3;\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n      puVar9 = puVar4;\nLAB_00153dc2:\n      uVar2 = *puVar9;\n      uVar11 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);\n      *param_1 = uVar8;\n      if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;\n      bVar1 = *(byte *)((long)puVar9 + 1);\n      uVar7 = uVar5 + 2;\n      uVar6 = uVar5 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      puVar4 = (ulong *)((long)puVar9 + 4);\n      uVar5 = uVar5 + 4;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar6 = uVar6 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 3);\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar3 = uVar6 << 3;\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n      puVar9 = puVar4;\nLAB_00153dc2:\n      uVar2 = *puVar9;\n      uVar11 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);\n      *param_1 = uVar8;\n      if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;\n      bVar1 = *(byte *)((long)puVar9 + 1);\n      uVar7 = uVar5 + 2;\n      uVar6 = uVar5 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      puVar4 = (ulong *)((long)puVar9 + 4);\n      uVar5 = uVar5 + 4;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar6 = uVar6 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 3);\n    }" { (expression_statement "iVar3 = uVar6 << 3;" (assignment_expression "iVar3 = uVar6 << 3" identifier = (binary_expression "uVar6 << 3" identifier << number_literal)) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar5;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar5" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar5" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar6 = uVar5 & 0xffff;" (assignment_expression "uVar6 = uVar5 & 0xffff" identifier = (binary_expression "uVar5 & 0xffff" identifier & number_literal)) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)iVar3 & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)iVar3 & 0x3f)" ( (binary_expression "(byte)iVar3 & 0x3f" (cast_expression "(byte)iVar3" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "puVar9 = puVar4;" (assignment_expression "puVar9 = puVar4" identifier = identifier) ;) (labeled_statement "LAB_00153dc2:\n      uVar2 = *puVar9;" statement_identifier : (expression_statement "uVar2 = *puVar9;" (assignment_expression "uVar2 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;)) (expression_statement "uVar11 = uVar5 + 1;" (assignment_expression "uVar11 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar11;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar11" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar11" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f)" identifier | (binary_expression "(ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f)" (cast_expression "(ulong)(byte)uVar2" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) << (parenthesized_expression "((byte)(uVar6 << 3) & 0x3f)" ( (binary_expression "(byte)(uVar6 << 3) & 0x3f" (call_expression "(byte)(uVar6 << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar6 << 3)" ( (binary_expression "uVar6 << 3" identifier << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (if_statement "if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;" if (parenthesized_expression "((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2))" ( (binary_expression "(byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)" (cast_expression "(byte *)((long)puVar9 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 1)" ( (binary_expression "(long)puVar9 + 1" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))) == (cast_expression "(byte *)(param_3 + (long)param_2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + (long)param_2)" ( (binary_expression "param_3 + (long)param_2" identifier + (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) )) (break_statement "break;" break ;)) (expression_statement "bVar1 = *(byte *)((long)puVar9 + 1);" (assignment_expression "bVar1 = *(byte *)((long)puVar9 + 1)" identifier = (pointer_expression "*(byte *)((long)puVar9 + 1)" * (cast_expression "(byte *)((long)puVar9 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 1)" ( (binary_expression "(long)puVar9 + 1" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar7 = uVar5 + 2;" (assignment_expression "uVar7 = uVar5 + 2" identifier = (binary_expression "uVar5 + 2" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar5 + 3;" (assignment_expression "uVar6 = uVar5 + 3" identifier = (binary_expression "uVar5 + 3" identifier + number_literal)) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar7;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar7" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar7" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "puVar4 = (ulong *)((long)puVar9 + 4);" (assignment_expression "puVar4 = (ulong *)((long)puVar9 + 4)" identifier = (cast_expression "(ulong *)((long)puVar9 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 4)" ( (binary_expression "(long)puVar9 + 4" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "uVar5 = uVar5 + 4;" (assignment_expression "uVar5 = uVar5 + 4" identifier = (binary_expression "uVar5 + 4" identifier + number_literal)) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar11 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar11 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar11 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar11 & 0xffff) << 3)" ( (binary_expression "(uVar11 & 0xffff) << 3" (parenthesized_expression "(uVar11 & 0xffff)" ( (binary_expression "uVar11 & 0xffff" identifier & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "bVar1 = *(byte *)((long)puVar9 + 2);" (assignment_expression "bVar1 = *(byte *)((long)puVar9 + 2)" identifier = (pointer_expression "*(byte *)((long)puVar9 + 2)" * (cast_expression "(byte *)((long)puVar9 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 2)" ( (binary_expression "(long)puVar9 + 2" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar6;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar6" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar6" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar6 = uVar6 & 0xffff;" (assignment_expression "uVar6 = uVar6 & 0xffff" identifier = (binary_expression "uVar6 & 0xffff" identifier & number_literal)) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar7 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar7 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar7 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar7 & 0xffff) << 3)" ( (binary_expression "(uVar7 & 0xffff) << 3" (parenthesized_expression "(uVar7 & 0xffff)" ( (binary_expression "uVar7 & 0xffff" identifier & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "bVar1 = *(byte *)((long)puVar9 + 3);" (assignment_expression "bVar1 = *(byte *)((long)puVar9 + 3)" identifier = (pointer_expression "*(byte *)((long)puVar9 + 3)" * (cast_expression "(byte *)((long)puVar9 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 3)" ( (binary_expression "(long)puVar9 + 3" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) })) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (uVar5 != 0) {\n    uVar8 = *param_2;\n    param_3 = param_3 - uVar5;\n    *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n    uVar8 = (ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1;\n    *param_1 = uVar8;\n    if (uVar5 - 1 != 0) {\n      bVar1 = *(byte *)((long)param_2 + 1);\n      *(short *)(param_1 + 0x33) = (short)(uVar11 + 2);\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }\n    }\n    uVar12 = *(ushort *)((long)param_1 + 0x19a);\n    param_2 = (ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1);\n    param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ uVar8;\n    uVar12 = uVar12 + 1;\n    *(undefined2 *)(param_1 + 0x33) = 0;\n    *param_1 = 0;\n    *(ushort *)((long)param_1 + 0x19a) = uVar12;\n    if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n      FUN_001534a0(param_1 + 1);\n      *(undefined2 *)((long)param_1 + 0x19a) = 0;\n    }\n  }" if (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar8 = *param_2;\n    param_3 = param_3 - uVar5;\n    *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n    uVar8 = (ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1;\n    *param_1 = uVar8;\n    if (uVar5 - 1 != 0) {\n      bVar1 = *(byte *)((long)param_2 + 1);\n      *(short *)(param_1 + 0x33) = (short)(uVar11 + 2);\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }\n    }\n    uVar12 = *(ushort *)((long)param_1 + 0x19a);\n    param_2 = (ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1);\n    param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ uVar8;\n    uVar12 = uVar12 + 1;\n    *(undefined2 *)(param_1 + 0x33) = 0;\n    *param_1 = 0;\n    *(ushort *)((long)param_1 + 0x19a) = uVar12;\n    if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n      FUN_001534a0(param_1 + 1);\n      *(undefined2 *)((long)param_1 + 0x19a) = 0;\n    }\n  }" { (expression_statement "uVar8 = *param_2;" (assignment_expression "uVar8 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "param_3 = param_3 - uVar5;" (assignment_expression "param_3 = param_3 - uVar5" identifier = (binary_expression "param_3 - uVar5" identifier - identifier)) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)(uVar12 + 1);" (assignment_expression "*(short *)(param_1 + 0x33) = (short)(uVar12 + 1)" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)(uVar12 + 1)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(uVar12 + 1)" ( (binary_expression "uVar12 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar8 = (ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1;" (assignment_expression "uVar8 = (ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1" identifier = (binary_expression "(ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1" (binary_expression "(ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3)" (cast_expression "(ulong)(byte)uVar8" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)uVar8" ( (type_descriptor "byte" type_identifier) ) identifier)) << (parenthesized_expression "(((byte)uVar12 & 7) << 3)" ( (binary_expression "((byte)uVar12 & 7) << 3" (parenthesized_expression "((byte)uVar12 & 7)" ( (binary_expression "(byte)uVar12 & 7" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) << number_literal) ))) | (pointer_expression "*param_1" * identifier))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (if_statement "if (uVar5 - 1 != 0) {\n      bVar1 = *(byte *)((long)param_2 + 1);\n      *(short *)(param_1 + 0x33) = (short)(uVar11 + 2);\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "(uVar5 - 1 != 0)" ( (binary_expression "uVar5 - 1 != 0" (binary_expression "uVar5 - 1" identifier - number_literal) != number_literal) )) (compound_statement "{\n      bVar1 = *(byte *)((long)param_2 + 1);\n      *(short *)(param_1 + 0x33) = (short)(uVar11 + 2);\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }\n    }" { (expression_statement "bVar1 = *(byte *)((long)param_2 + 1);" (assignment_expression "bVar1 = *(byte *)((long)param_2 + 1)" identifier = (pointer_expression "*(byte *)((long)param_2 + 1)" * (cast_expression "(byte *)((long)param_2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 1)" ( (binary_expression "(long)param_2 + 1" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)(uVar11 + 2);" (assignment_expression "*(short *)(param_1 + 0x33) = (short)(uVar11 + 2)" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)(uVar11 + 2)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(uVar11 + 2)" ( (binary_expression "uVar11 + 2" identifier + number_literal) )))) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar12 + 1 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar12 + 1 & 0xffff) << 3)" ( (binary_expression "(uVar12 + 1 & 0xffff) << 3" (parenthesized_expression "(uVar12 + 1 & 0xffff)" ( (binary_expression "uVar12 + 1 & 0xffff" (binary_expression "uVar12 + 1" identifier + number_literal) & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (if_statement "if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }" if (parenthesized_expression "(uVar5 != 2)" ( (binary_expression "uVar5 != 2" identifier != number_literal) )) (compound_statement "{\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }" { (expression_statement "bVar1 = *(byte *)((long)param_2 + 2);" (assignment_expression "bVar1 = *(byte *)((long)param_2 + 2)" identifier = (pointer_expression "*(byte *)((long)param_2 + 2)" * (cast_expression "(byte *)((long)param_2 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 2)" ( (binary_expression "(long)param_2 + 2" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)(uVar11 + 3);" (assignment_expression "*(short *)(param_1 + 0x33) = (short)(uVar11 + 3)" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)(uVar11 + 3)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(uVar11 + 3)" ( (binary_expression "uVar11 + 3" identifier + number_literal) )))) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar11 + 2 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar11 + 2 & 0xffff) << 3)" ( (binary_expression "(uVar11 + 2 & 0xffff) << 3" (parenthesized_expression "(uVar11 + 2 & 0xffff)" ( (binary_expression "uVar11 + 2 & 0xffff" (binary_expression "uVar11 + 2" identifier + number_literal) & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (if_statement "if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }" if (parenthesized_expression "(uVar5 != 3)" ( (binary_expression "uVar5 != 3" identifier != number_literal) )) (compound_statement "{\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }" { (expression_statement "bVar1 = *(byte *)((long)param_2 + 3);" (assignment_expression "bVar1 = *(byte *)((long)param_2 + 3)" identifier = (pointer_expression "*(byte *)((long)param_2 + 3)" * (cast_expression "(byte *)((long)param_2 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 3)" ( (binary_expression "(long)param_2 + 3" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)(uVar11 + 4);" (assignment_expression "*(short *)(param_1 + 0x33) = (short)(uVar11 + 4)" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)(uVar11 + 4)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(uVar11 + 4)" ( (binary_expression "uVar11 + 4" identifier + number_literal) )))) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar11 + 3 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar11 + 3 & 0xffff) << 3)" ( (binary_expression "(uVar11 + 3 & 0xffff) << 3" (parenthesized_expression "(uVar11 + 3 & 0xffff)" ( (binary_expression "uVar11 + 3 & 0xffff" (binary_expression "uVar11 + 3" identifier + number_literal) & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (if_statement "if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }" if (parenthesized_expression "(uVar5 != 4)" ( (binary_expression "uVar5 != 4" identifier != number_literal) )) (compound_statement "{\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }" { (expression_statement "bVar1 = *(byte *)((long)param_2 + 4);" (assignment_expression "bVar1 = *(byte *)((long)param_2 + 4)" identifier = (pointer_expression "*(byte *)((long)param_2 + 4)" * (cast_expression "(byte *)((long)param_2 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 4)" ( (binary_expression "(long)param_2 + 4" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)(uVar11 + 5);" (assignment_expression "*(short *)(param_1 + 0x33) = (short)(uVar11 + 5)" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)(uVar11 + 5)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(uVar11 + 5)" ( (binary_expression "uVar11 + 5" identifier + number_literal) )))) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar11 + 4 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar11 + 4 & 0xffff) << 3)" ( (binary_expression "(uVar11 + 4 & 0xffff) << 3" (parenthesized_expression "(uVar11 + 4 & 0xffff)" ( (binary_expression "uVar11 + 4 & 0xffff" (binary_expression "uVar11 + 4" identifier + number_literal) & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (if_statement "if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }" if (parenthesized_expression "(uVar5 != 5)" ( (binary_expression "uVar5 != 5" identifier != number_literal) )) (compound_statement "{\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }" { (expression_statement "bVar1 = *(byte *)((long)param_2 + 5);" (assignment_expression "bVar1 = *(byte *)((long)param_2 + 5)" identifier = (pointer_expression "*(byte *)((long)param_2 + 5)" * (cast_expression "(byte *)((long)param_2 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 5)" ( (binary_expression "(long)param_2 + 5" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)(uVar11 + 6);" (assignment_expression "*(short *)(param_1 + 0x33) = (short)(uVar11 + 6)" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)(uVar11 + 6)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(uVar11 + 6)" ( (binary_expression "uVar11 + 6" identifier + number_literal) )))) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar11 + 5 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar11 + 5 & 0xffff) << 3)" ( (binary_expression "(uVar11 + 5 & 0xffff) << 3" (parenthesized_expression "(uVar11 + 5 & 0xffff)" ( (binary_expression "uVar11 + 5 & 0xffff" (binary_expression "uVar11 + 5" identifier + number_literal) & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (if_statement "if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }" if (parenthesized_expression "(uVar5 != 6)" ( (binary_expression "uVar5 != 6" identifier != number_literal) )) (compound_statement "{\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }" { (expression_statement "bVar1 = *(byte *)((long)param_2 + 6);" (assignment_expression "bVar1 = *(byte *)((long)param_2 + 6)" identifier = (pointer_expression "*(byte *)((long)param_2 + 6)" * (cast_expression "(byte *)((long)param_2 + 6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 6)" ( (binary_expression "(long)param_2 + 6" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(ushort *)(param_1 + 0x33) = uVar12 + 7;" (assignment_expression "*(ushort *)(param_1 + 0x33) = uVar12 + 7" (pointer_expression "*(ushort *)(param_1 + 0x33)" * (cast_expression "(ushort *)(param_1 + 0x33)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (binary_expression "uVar12 + 7" identifier + number_literal)) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar11 + 6 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar11 + 6 & 0xffff) << 3)" ( (binary_expression "(uVar11 + 6 & 0xffff) << 3" (parenthesized_expression "(uVar11 + 6 & 0xffff)" ( (binary_expression "uVar11 + 6 & 0xffff" (binary_expression "uVar11 + 6" identifier + number_literal) & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) })) })) })) })) })) })) (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" identifier = (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "param_2 = (ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1);" (assignment_expression "param_2 = (ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1)" identifier = (cast_expression "(ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + (ulong)(uVar5 - 1) + 1)" ( (binary_expression "(long)param_2 + (ulong)(uVar5 - 1) + 1" (binary_expression "(long)param_2 + (ulong)(uVar5 - 1)" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (call_expression "(ulong)(uVar5 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar5 - 1)" ( (binary_expression "uVar5 - 1" identifier - number_literal) )))) + number_literal) )))) ;) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ uVar8;" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ uVar8" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) = (binary_expression "param_1[(ulong)uVar12 + 1] ^ uVar8" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) ^ identifier)) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined2 *)(param_1 + 0x33) = 0;" (assignment_expression "*(undefined2 *)(param_1 + 0x33) = 0" (pointer_expression "*(undefined2 *)(param_1 + 0x33)" * (cast_expression "(undefined2 *)(param_1 + 0x33)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n      FUN_001534a0(param_1 + 1);\n      *(undefined2 *)((long)param_1 + 0x19a) = 0;\n    }" if (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" ( (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" number_literal - (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" * (cast_expression "(ushort *)((long)param_1 + 0x19c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19c)" ( (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) )) (compound_statement "{\n      FUN_001534a0(param_1 + 1);\n      *(undefined2 *)((long)param_1 + 0x19a) = 0;\n    }" { (expression_statement "FUN_001534a0(param_1 + 1);" (call_expression "FUN_001534a0(param_1 + 1)" identifier (argument_list "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))) ;) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" * (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) })) })) (expression_statement "uVar8 = param_3 >> 3;" (assignment_expression "uVar8 = param_3 >> 3" identifier = (binary_expression "param_3 >> 3" identifier >> number_literal)) ;) (expression_statement "uVar11 = (int)param_3 + (int)uVar8 * -8;" (assignment_expression "uVar11 = (int)param_3 + (int)uVar8 * -8" identifier = (binary_expression "(int)param_3 + (int)uVar8 * -8" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(int)uVar8 * -8" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal))) ;) (expression_statement "puVar9 = param_2;" (assignment_expression "puVar9 = param_2" identifier = identifier) ;) (if_statement "if (uVar8 != 0) {\n    puVar9 = param_2 + uVar8;\n    uVar6 = (int)(uVar8 * 8 - 8 >> 3) + 1U & 3;\n    if (uVar6 != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 1;\n      if (param_2 == puVar9) goto LAB_00153b88;\n    }\n    do {\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 4;\n    } while (param_2 != puVar9);\n  }" if (parenthesized_expression "(uVar8 != 0)" ( (binary_expression "uVar8 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar9 = param_2 + uVar8;\n    uVar6 = (int)(uVar8 * 8 - 8 >> 3) + 1U & 3;\n    if (uVar6 != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 1;\n      if (param_2 == puVar9) goto LAB_00153b88;\n    }\n    do {\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 4;\n    } while (param_2 != puVar9);\n  }" { (expression_statement "puVar9 = param_2 + uVar8;" (assignment_expression "puVar9 = param_2 + uVar8" identifier = (binary_expression "param_2 + uVar8" identifier + identifier)) ;) (expression_statement "uVar6 = (int)(uVar8 * 8 - 8 >> 3) + 1U & 3;" (assignment_expression "uVar6 = (int)(uVar8 * 8 - 8 >> 3) + 1U & 3" identifier = (binary_expression "(int)(uVar8 * 8 - 8 >> 3) + 1U & 3" (binary_expression "(int)(uVar8 * 8 - 8 >> 3) + 1U" (cast_expression "(int)(uVar8 * 8 - 8 >> 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar8 * 8 - 8 >> 3)" ( (binary_expression "uVar8 * 8 - 8 >> 3" (binary_expression "uVar8 * 8 - 8" (binary_expression "uVar8 * 8" identifier * number_literal) - number_literal) >> number_literal) ))) + number_literal) & number_literal)) ;) (if_statement "if (uVar6 != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 1;\n      if (param_2 == puVar9) goto LAB_00153b88;\n    }" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 1;\n      if (param_2 == puVar9) goto LAB_00153b88;\n    }" { (if_statement "if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }" if (parenthesized_expression "(uVar6 != 1)" ( (binary_expression "uVar6 != 1" identifier != number_literal) )) (compound_statement "{\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }" { (if_statement "if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }" if (parenthesized_expression "(uVar6 != 2)" ( (binary_expression "uVar6 != 2" identifier != number_literal) )) (compound_statement "{\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }" { (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" identifier = (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) = (binary_expression "param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) ^ (pointer_expression "*param_2" * identifier))) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }" if (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" ( (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" number_literal - (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" * (cast_expression "(ushort *)((long)param_1 + 0x19c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19c)" ( (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) )) (compound_statement "{\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }" { (expression_statement "FUN_001534a0(param_1 + 1);" (call_expression "FUN_001534a0(param_1 + 1)" identifier (argument_list "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))) ;) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" * (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) })) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" identifier = (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) = (binary_expression "param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) ^ (pointer_expression "*param_2" * identifier))) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }" if (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" ( (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" number_literal - (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" * (cast_expression "(ushort *)((long)param_1 + 0x19c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19c)" ( (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) )) (compound_statement "{\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }" { (expression_statement "FUN_001534a0(param_1 + 1);" (call_expression "FUN_001534a0(param_1 + 1)" identifier (argument_list "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))) ;) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" * (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) })) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" identifier = (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) = (binary_expression "param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) ^ (pointer_expression "*param_2" * identifier))) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" if (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" ( (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" number_literal - (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" * (cast_expression "(ushort *)((long)param_1 + 0x19c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19c)" ( (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) )) (compound_statement "{\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" { (expression_statement "FUN_001534a0(param_1 + 1);" (call_expression "FUN_001534a0(param_1 + 1)" identifier (argument_list "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))) ;) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" * (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) })) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (if_statement "if (param_2 == puVar9) goto LAB_00153b88;" if (parenthesized_expression "(param_2 == puVar9)" ( (binary_expression "param_2 == puVar9" identifier == identifier) )) (goto_statement "goto LAB_00153b88;" goto statement_identifier ;)) })) (do_statement "do {\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 4;\n    } while (param_2 != puVar9);" do (compound_statement "{\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 4;\n    }" { (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" identifier = (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) = (binary_expression "param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) ^ (pointer_expression "*param_2" * identifier))) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" if (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" ( (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" number_literal - (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" * (cast_expression "(ushort *)((long)param_1 + 0x19c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19c)" ( (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) )) (compound_statement "{\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" { (expression_statement "FUN_001534a0(param_1 + 1);" (call_expression "FUN_001534a0(param_1 + 1)" identifier (argument_list "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))) ;) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" * (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) })) (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" identifier = (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1]" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) = (binary_expression "param_1[(ulong)uVar12 + 1] ^ param_2[1]" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) ^ (subscript_expression "param_2[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" if (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" ( (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" number_literal - (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" * (cast_expression "(ushort *)((long)param_1 + 0x19c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19c)" ( (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) )) (compound_statement "{\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" { (expression_statement "FUN_001534a0(param_1 + 1);" (call_expression "FUN_001534a0(param_1 + 1)" identifier (argument_list "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))) ;) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" * (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) })) (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" identifier = (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2]" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) = (binary_expression "param_1[(ulong)uVar12 + 1] ^ param_2[2]" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) ^ (subscript_expression "param_2[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" if (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" ( (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" number_literal - (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" * (cast_expression "(ushort *)((long)param_1 + 0x19c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19c)" ( (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) )) (compound_statement "{\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" { (expression_statement "FUN_001534a0();" (call_expression "FUN_001534a0()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" * (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) })) (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" identifier = (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3]" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) = (binary_expression "param_1[(ulong)uVar12 + 1] ^ param_2[3]" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) ^ (subscript_expression "param_2[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" if (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" ( (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" number_literal - (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" * (cast_expression "(ushort *)((long)param_1 + 0x19c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19c)" ( (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) )) (compound_statement "{\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" { (expression_statement "FUN_001534a0(param_1 + 1);" (call_expression "FUN_001534a0(param_1 + 1)" identifier (argument_list "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))) ;) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" * (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) })) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_2 != puVar9)" ( (binary_expression "param_2 != puVar9" identifier != identifier) )) ;) })) (labeled_statement "LAB_00153b88:\n  if (uVar11 != 0) {\n    puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1);\n    uVar12 = (ushort)param_1[0x33];\n    uVar7 = (uint)uVar12;\n    uVar5 = (uint)uVar12;\n    uVar6 = (uint)uVar12;\n    uVar8 = *param_1;\n    uVar11 = uVar11 & 3;\n    puVar10 = puVar9;\n    if (uVar11 != 0) {\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }\n    do {\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar4);\n  }" statement_identifier : (if_statement "if (uVar11 != 0) {\n    puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1);\n    uVar12 = (ushort)param_1[0x33];\n    uVar7 = (uint)uVar12;\n    uVar5 = (uint)uVar12;\n    uVar6 = (uint)uVar12;\n    uVar8 = *param_1;\n    uVar11 = uVar11 & 3;\n    puVar10 = puVar9;\n    if (uVar11 != 0) {\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }\n    do {\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar4);\n  }" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1);\n    uVar12 = (ushort)param_1[0x33];\n    uVar7 = (uint)uVar12;\n    uVar5 = (uint)uVar12;\n    uVar6 = (uint)uVar12;\n    uVar8 = *param_1;\n    uVar11 = uVar11 & 3;\n    puVar10 = puVar9;\n    if (uVar11 != 0) {\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }\n    do {\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar4);\n  }" { (expression_statement "puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1);" (assignment_expression "puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1)" identifier = (cast_expression "(ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + (ulong)(uVar11 - 1) + 1)" ( (binary_expression "(long)puVar9 + (ulong)(uVar11 - 1) + 1" (binary_expression "(long)puVar9 + (ulong)(uVar11 - 1)" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (call_expression "(ulong)(uVar11 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar11 - 1)" ( (binary_expression "uVar11 - 1" identifier - number_literal) )))) + number_literal) )))) ;) (expression_statement "uVar12 = (ushort)param_1[0x33];" (assignment_expression "uVar12 = (ushort)param_1[0x33]" identifier = (cast_expression "(ushort)param_1[0x33]" ( (type_descriptor "ushort" type_identifier) ) (subscript_expression "param_1[0x33]" identifier [ number_literal ]))) ;) (expression_statement "uVar7 = (uint)uVar12;" (assignment_expression "uVar7 = (uint)uVar12" identifier = (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar5 = (uint)uVar12;" (assignment_expression "uVar5 = (uint)uVar12" identifier = (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar6 = (uint)uVar12;" (assignment_expression "uVar6 = (uint)uVar12" identifier = (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = *param_1;" (assignment_expression "uVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar11 = uVar11 & 3;" (assignment_expression "uVar11 = uVar11 & 3" identifier = (binary_expression "uVar11 & 3" identifier & number_literal)) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) (if_statement "if (uVar11 != 0) {\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (compound_statement "{\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }" { (if_statement "if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }" if (parenthesized_expression "(uVar11 != 1)" ( (binary_expression "uVar11 != 1" identifier != number_literal) )) (compound_statement "{\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }" { (if_statement "if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }" if (parenthesized_expression "(uVar11 != 2)" ( (binary_expression "uVar11 != 2" identifier != number_literal) )) (compound_statement "{\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }" { (expression_statement "uVar2 = *puVar9;" (assignment_expression "uVar2 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puVar9 = (ulong *)((long)puVar9 + 1);" (assignment_expression "puVar9 = (ulong *)((long)puVar9 + 1)" identifier = (cast_expression "(ulong *)((long)puVar9 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 1)" ( (binary_expression "(long)puVar9 + 1" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)(uVar12 + 1);" (assignment_expression "*(short *)(param_1 + 0x33) = (short)(uVar12 + 1)" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)(uVar12 + 1)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(uVar12 + 1)" ( (binary_expression "uVar12 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar6 = uVar12 + 1 & 0xffff;" (assignment_expression "uVar6 = uVar12 + 1 & 0xffff" identifier = (binary_expression "uVar12 + 1 & 0xffff" (binary_expression "uVar12 + 1" identifier + number_literal) & number_literal)) ;) (expression_statement "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);" (assignment_expression "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU)" identifier = (binary_expression "uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU)" identifier | (binary_expression "(ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU)" (cast_expression "(ulong)(byte)uVar2" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) << (parenthesized_expression "((char)uVar12 * '\b' & 0x3fU)" ( (binary_expression "(char)uVar12 * '\b' & 0x3fU" (binary_expression "(char)uVar12 * '\b'" (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier) * (char_literal "'\b'" ' escape_sequence ')) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) })) (expression_statement "uVar2 = *puVar9;" (assignment_expression "uVar2 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "uVar5 = uVar6 + 1;" (assignment_expression "uVar5 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "puVar9 = (ulong *)((long)puVar9 + 1);" (assignment_expression "puVar9 = (ulong *)((long)puVar9 + 1)" identifier = (cast_expression "(ulong *)((long)puVar9 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 1)" ( (binary_expression "(long)puVar9 + 1" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar5;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar5" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar5" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);" (assignment_expression "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU)" identifier = (binary_expression "uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU)" identifier | (binary_expression "(ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU)" (cast_expression "(ulong)(byte)uVar2" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) << (parenthesized_expression "((char)uVar6 * '\b' & 0x3fU)" ( (binary_expression "(char)uVar6 * '\b' & 0x3fU" (binary_expression "(char)uVar6 * '\b'" (cast_expression "(char)uVar6" ( (type_descriptor "char" primitive_type) ) identifier) * (char_literal "'\b'" ' escape_sequence ')) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) })) (expression_statement "uVar2 = *puVar9;" (assignment_expression "uVar2 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "uVar7 = uVar5 + 1;" (assignment_expression "uVar7 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar7;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar7" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar7" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)(byte)uVar2" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) << (parenthesized_expression "((byte)((uVar5 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar5 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar5 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar5 & 0xffff) << 3)" ( (binary_expression "(uVar5 & 0xffff) << 3" (parenthesized_expression "(uVar5 & 0xffff)" ( (binary_expression "uVar5 & 0xffff" identifier & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "puVar10 = (ulong *)((long)puVar9 + 1);" (assignment_expression "puVar10 = (ulong *)((long)puVar9 + 1)" identifier = (cast_expression "(ulong *)((long)puVar9 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 1)" ( (binary_expression "(long)puVar9 + 1" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (if_statement "if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }" if (parenthesized_expression "((ulong *)((long)puVar9 + 1) == puVar4)" ( (binary_expression "(ulong *)((long)puVar9 + 1) == puVar4" (cast_expression "(ulong *)((long)puVar9 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 1)" ( (binary_expression "(long)puVar9 + 1" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))) == identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) })) (do_statement "do {\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar4);" do (compound_statement "{\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    }" { (expression_statement "uVar2 = *puVar10;" (assignment_expression "uVar2 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "uVar11 = uVar7 + 1;" (assignment_expression "uVar11 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar7 + 3;" (assignment_expression "uVar5 = uVar7 + 3" identifier = (binary_expression "uVar7 + 3" identifier + number_literal)) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar11;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar11" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar11" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "puVar9 = (ulong *)((long)puVar10 + 4);" (assignment_expression "puVar9 = (ulong *)((long)puVar10 + 4)" identifier = (cast_expression "(ulong *)((long)puVar10 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar10 + 4)" ( (binary_expression "(long)puVar10 + 4" (cast_expression "(long)puVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;" (assignment_expression "uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8" identifier = (binary_expression "(ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8" (binary_expression "(ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)(byte)uVar2" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) << (parenthesized_expression "((byte)((uVar7 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar7 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar7 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar7 & 0xffff) << 3)" ( (binary_expression "(uVar7 & 0xffff) << 3" (parenthesized_expression "(uVar7 & 0xffff)" ( (binary_expression "uVar7 & 0xffff" identifier & number_literal) )) << number_literal) ))) & number_literal) ))) | identifier)) ;) (expression_statement "uVar6 = uVar7 + 2;" (assignment_expression "uVar6 = uVar7 + 2" identifier = (binary_expression "uVar7 + 2" identifier + number_literal)) ;) (expression_statement "uVar7 = uVar7 + 4;" (assignment_expression "uVar7 = uVar7 + 4" identifier = (binary_expression "uVar7 + 4" identifier + number_literal)) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "bVar1 = *(byte *)((long)puVar10 + 1);" (assignment_expression "bVar1 = *(byte *)((long)puVar10 + 1)" identifier = (pointer_expression "*(byte *)((long)puVar10 + 1)" * (cast_expression "(byte *)((long)puVar10 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar10 + 1)" ( (binary_expression "(long)puVar10 + 1" (cast_expression "(long)puVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar6;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar6" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar6" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar11 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar11 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar11 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar11 & 0xffff) << 3)" ( (binary_expression "(uVar11 & 0xffff) << 3" (parenthesized_expression "(uVar11 & 0xffff)" ( (binary_expression "uVar11 & 0xffff" identifier & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "bVar1 = *(byte *)((long)puVar10 + 2);" (assignment_expression "bVar1 = *(byte *)((long)puVar10 + 2)" identifier = (pointer_expression "*(byte *)((long)puVar10 + 2)" * (cast_expression "(byte *)((long)puVar10 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar10 + 2)" ( (binary_expression "(long)puVar10 + 2" (cast_expression "(long)puVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar5;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar5" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar5" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar6 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar6 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar6 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar6 & 0xffff) << 3)" ( (binary_expression "(uVar6 & 0xffff) << 3" (parenthesized_expression "(uVar6 & 0xffff)" ( (binary_expression "uVar6 & 0xffff" identifier & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "bVar1 = *(byte *)((long)puVar10 + 3);" (assignment_expression "bVar1 = *(byte *)((long)puVar10 + 3)" identifier = (pointer_expression "*(byte *)((long)puVar10 + 3)" * (cast_expression "(byte *)((long)puVar10 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar10 + 3)" ( (binary_expression "(long)puVar10 + 3" (cast_expression "(long)puVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar7;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar7" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar7" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;" (assignment_expression "uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8" identifier = (binary_expression "(ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8" (binary_expression "(ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar5 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar5 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar5 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar5 & 0xffff) << 3)" ( (binary_expression "(uVar5 & 0xffff) << 3" (parenthesized_expression "(uVar5 & 0xffff)" ( (binary_expression "uVar5 & 0xffff" identifier & number_literal) )) << number_literal) ))) & number_literal) ))) | identifier)) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) }) while (parenthesized_expression "(puVar9 != puVar4)" ( (binary_expression "puVar9 != puVar4" identifier != identifier) )) ;) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "int sha3_process(hash_state *md,uchar *in,ulong inlen)\n\n{\n  ulong *puVar1;\n  byte bVar2;\n  ulong uVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  ulong uVar10;\n  ulong *puVar11;\n  ulong *puVar12;\n  uint uVar13;\n  ushort uVar14;\n  \n  if (inlen == 0) {\n    return 0;\n  }\n  if (in == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);\n  }\n  uVar14 = (md->sha3).byte_index;\n  uVar8 = (uint)uVar14;\n  uVar13 = (uint)uVar14;\n  uVar7 = -uVar13 & 7;\n  if (inlen < uVar7) {\n    uVar10 = (md->chc).length;\n    uVar9 = ~(uint)in + (int)(in + inlen) & 3;\n    pbVar5 = in;\n    uVar7 = uVar13;\n    if (uVar9 == 0) goto LAB_00153dc2;\n    pbVar5 = in + 1;\n    bVar2 = *in;\n    uVar7 = uVar13 + 1;\n    (md->sha3).byte_index = (ushort)uVar7;\n    uVar8 = uVar7 & 0xffff;\n    uVar10 = uVar10 | (ulong)bVar2 << (((byte)uVar14 & 7) << 3);\n    (md->chc).length = uVar10;\n    if (uVar9 == 1) goto LAB_00153dc2;\n    if (uVar9 != 2) {\n      bVar2 = *pbVar5;\n      iVar4 = uVar8 << 3;\n      uVar7 = uVar13 + 2;\n      pbVar5 = in + 2;\n      (md->sha3).byte_index = (ushort)uVar7;\n      uVar8 = uVar7 & 0xffff;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)iVar4 & 0x3f);\n      (md->chc).length = uVar10;\n    }\n    pbVar6 = pbVar5 + 1;\n    bVar2 = *pbVar5;\n    uVar7 = uVar7 + 1;\n    while( true ) {\n      iVar4 = uVar8 << 3;\n      (md->sha3).byte_index = (ushort)uVar7;\n      uVar8 = uVar7 & 0xffff;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)iVar4 & 0x3f);\n      (md->chc).length = uVar10;\n      pbVar5 = pbVar6;\nLAB_00153dc2:\n      bVar2 = *pbVar5;\n      uVar13 = uVar7 + 1;\n      (md->sha3).byte_index = (ushort)uVar13;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)(uVar8 << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      if (pbVar5 + 1 == in + inlen) break;\n      bVar2 = pbVar5[1];\n      uVar9 = uVar7 + 2;\n      uVar8 = uVar7 + 3;\n      (md->sha3).byte_index = (ushort)uVar9;\n      pbVar6 = pbVar5 + 4;\n      uVar7 = uVar7 + 4;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = pbVar5[2];\n      (md->sha3).byte_index = (ushort)uVar8;\n      uVar8 = uVar8 & 0xffff;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = pbVar5[3];\n    }\n    return 0;\n  }\n  if (uVar7 != 0) {\n    bVar2 = *in;\n    inlen = inlen - uVar7;\n    (md->sha3).byte_index = (ushort)(uVar14 + 1);\n    uVar10 = (ulong)bVar2 << (((byte)uVar14 & 7) << 3) | (md->chc).length;\n    (md->chc).length = uVar10;\n    if (uVar7 - 1 != 0) {\n      bVar2 = in[1];\n      (md->sha3).byte_index = (ushort)(uVar13 + 2);\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar14 + 1 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      if (uVar7 != 2) {\n        bVar2 = in[2];\n        (md->sha3).byte_index = (ushort)(uVar13 + 3);\n        uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 2 & 0xffff) << 3) & 0x3f);\n        (md->chc).length = uVar10;\n        if (uVar7 != 3) {\n          bVar2 = in[3];\n          (md->sha3).byte_index = (ushort)(uVar13 + 4);\n          uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 3 & 0xffff) << 3) & 0x3f);\n          (md->chc).length = uVar10;\n          if (uVar7 != 4) {\n            bVar2 = in[4];\n            (md->sha3).byte_index = (ushort)(uVar13 + 5);\n            uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 4 & 0xffff) << 3) & 0x3f);\n            (md->chc).length = uVar10;\n            if (uVar7 != 5) {\n              bVar2 = in[5];\n              (md->sha3).byte_index = (ushort)(uVar13 + 6);\n              uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 5 & 0xffff) << 3) & 0x3f);\n              (md->chc).length = uVar10;\n              if (uVar7 != 6) {\n                bVar2 = in[6];\n                (md->sha3).byte_index = uVar14 + 7;\n                uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f);\n                (md->chc).length = uVar10;\n              }\n            }\n          }\n        }\n      }\n    }\n    uVar14 = (md->sha3).word_index;\n    in = in + (ulong)(uVar7 - 1) + 1;\n    puVar11 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n    *puVar11 = *puVar11 ^ uVar10;\n    uVar14 = uVar14 + 1;\n    (md->sha3).byte_index = 0;\n    (md->chc).length = 0;\n    (md->sha3).word_index = uVar14;\n    if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n      keccakf((md->whirlpool).state);\n      (md->sha3).word_index = 0;\n    }\n  }\n  uVar10 = inlen >> 3;\n  uVar13 = (int)inlen + (int)uVar10 * -8;\n  puVar11 = (ulong *)in;\n  if (uVar10 != 0) {\n    puVar11 = (ulong *)((long)in + uVar10 * 8);\n    uVar8 = (int)(uVar10 * 8 - 8 >> 3) + 1U & 3;\n    if (uVar8 != 0) {\n      if (uVar8 != 1) {\n        if (uVar8 != 2) {\n          uVar14 = (md->sha3).word_index;\n          puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n          *puVar1 = *puVar1 ^ *(ulong *)in;\n          uVar14 = uVar14 + 1;\n          (md->sha3).word_index = uVar14;\n          if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n            keccakf((md->whirlpool).state);\n            (md->sha3).word_index = 0;\n          }\n          in = (uchar *)((long)in + 8);\n        }\n        uVar14 = (md->sha3).word_index;\n        puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n        *puVar1 = *puVar1 ^ *(ulong *)in;\n        uVar14 = uVar14 + 1;\n        (md->sha3).word_index = uVar14;\n        if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n          keccakf((md->whirlpool).state);\n          (md->sha3).word_index = 0;\n        }\n        in = (uchar *)((long)in + 8);\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)in;\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      in = (uchar *)((long)in + 8);\n      if ((ulong *)in == puVar11) goto LAB_00153b88;\n    }\n    do {\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)in;\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 8);\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 0x10);\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 0x18);\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      in = (uchar *)((long)in + 0x20);\n    } while ((ulong *)in != puVar11);\n  }\nLAB_00153b88:\n  if (uVar13 != 0) {\n    puVar1 = (ulong *)((long)puVar11 + (ulong)(uVar13 - 1) + 1);\n    uVar14 = (md->sha3).byte_index;\n    uVar9 = (uint)uVar14;\n    uVar7 = (uint)uVar14;\n    uVar8 = (uint)uVar14;\n    uVar10 = (md->chc).length;\n    uVar13 = uVar13 & 3;\n    puVar12 = puVar11;\n    if (uVar13 != 0) {\n      if (uVar13 != 1) {\n        if (uVar13 != 2) {\n          uVar3 = *puVar11;\n          puVar11 = (ulong *)((long)puVar11 + 1);\n          (md->sha3).byte_index = (ushort)(uVar14 + 1);\n          uVar8 = uVar14 + 1 & 0xffff;\n          uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar14 * '\b' & 0x3fU);\n          (md->chc).length = uVar10;\n        }\n        uVar3 = *puVar11;\n        uVar7 = uVar8 + 1;\n        puVar11 = (ulong *)((long)puVar11 + 1);\n        (md->sha3).byte_index = (ushort)uVar7;\n        uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar8 * '\b' & 0x3fU);\n        (md->chc).length = uVar10;\n      }\n      uVar3 = *puVar11;\n      uVar9 = uVar7 + 1;\n      (md->sha3).byte_index = (ushort)uVar9;\n      uVar10 = uVar10 | (ulong)(byte)uVar3 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      puVar12 = (ulong *)((long)puVar11 + 1);\n      if ((ulong *)((long)puVar11 + 1) == puVar1) {\n        return 0;\n      }\n    }\n    do {\n      uVar3 = *puVar12;\n      uVar13 = uVar9 + 1;\n      uVar7 = uVar9 + 3;\n      (md->sha3).byte_index = (ushort)uVar13;\n      puVar11 = (ulong *)((long)puVar12 + 4);\n      uVar10 = (ulong)(byte)uVar3 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f) | uVar10;\n      uVar8 = uVar9 + 2;\n      uVar9 = uVar9 + 4;\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 1);\n      (md->sha3).byte_index = (ushort)uVar8;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 2);\n      (md->sha3).byte_index = (ushort)uVar7;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar8 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 3);\n      (md->sha3).byte_index = (ushort)uVar9;\n      uVar10 = (ulong)bVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar10;\n      (md->chc).length = uVar10;\n      puVar12 = puVar11;\n    } while (puVar11 != puVar1);\n  }\n  return 0;\n}\n\n" (function_definition "int sha3_process(hash_state *md,uchar *in,ulong inlen)\n\n{\n  ulong *puVar1;\n  byte bVar2;\n  ulong uVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  ulong uVar10;\n  ulong *puVar11;\n  ulong *puVar12;\n  uint uVar13;\n  ushort uVar14;\n  \n  if (inlen == 0) {\n    return 0;\n  }\n  if (in == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);\n  }\n  uVar14 = (md->sha3).byte_index;\n  uVar8 = (uint)uVar14;\n  uVar13 = (uint)uVar14;\n  uVar7 = -uVar13 & 7;\n  if (inlen < uVar7) {\n    uVar10 = (md->chc).length;\n    uVar9 = ~(uint)in + (int)(in + inlen) & 3;\n    pbVar5 = in;\n    uVar7 = uVar13;\n    if (uVar9 == 0) goto LAB_00153dc2;\n    pbVar5 = in + 1;\n    bVar2 = *in;\n    uVar7 = uVar13 + 1;\n    (md->sha3).byte_index = (ushort)uVar7;\n    uVar8 = uVar7 & 0xffff;\n    uVar10 = uVar10 | (ulong)bVar2 << (((byte)uVar14 & 7) << 3);\n    (md->chc).length = uVar10;\n    if (uVar9 == 1) goto LAB_00153dc2;\n    if (uVar9 != 2) {\n      bVar2 = *pbVar5;\n      iVar4 = uVar8 << 3;\n      uVar7 = uVar13 + 2;\n      pbVar5 = in + 2;\n      (md->sha3).byte_index = (ushort)uVar7;\n      uVar8 = uVar7 & 0xffff;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)iVar4 & 0x3f);\n      (md->chc).length = uVar10;\n    }\n    pbVar6 = pbVar5 + 1;\n    bVar2 = *pbVar5;\n    uVar7 = uVar7 + 1;\n    while( true ) {\n      iVar4 = uVar8 << 3;\n      (md->sha3).byte_index = (ushort)uVar7;\n      uVar8 = uVar7 & 0xffff;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)iVar4 & 0x3f);\n      (md->chc).length = uVar10;\n      pbVar5 = pbVar6;\nLAB_00153dc2:\n      bVar2 = *pbVar5;\n      uVar13 = uVar7 + 1;\n      (md->sha3).byte_index = (ushort)uVar13;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)(uVar8 << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      if (pbVar5 + 1 == in + inlen) break;\n      bVar2 = pbVar5[1];\n      uVar9 = uVar7 + 2;\n      uVar8 = uVar7 + 3;\n      (md->sha3).byte_index = (ushort)uVar9;\n      pbVar6 = pbVar5 + 4;\n      uVar7 = uVar7 + 4;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = pbVar5[2];\n      (md->sha3).byte_index = (ushort)uVar8;\n      uVar8 = uVar8 & 0xffff;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = pbVar5[3];\n    }\n    return 0;\n  }\n  if (uVar7 != 0) {\n    bVar2 = *in;\n    inlen = inlen - uVar7;\n    (md->sha3).byte_index = (ushort)(uVar14 + 1);\n    uVar10 = (ulong)bVar2 << (((byte)uVar14 & 7) << 3) | (md->chc).length;\n    (md->chc).length = uVar10;\n    if (uVar7 - 1 != 0) {\n      bVar2 = in[1];\n      (md->sha3).byte_index = (ushort)(uVar13 + 2);\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar14 + 1 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      if (uVar7 != 2) {\n        bVar2 = in[2];\n        (md->sha3).byte_index = (ushort)(uVar13 + 3);\n        uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 2 & 0xffff) << 3) & 0x3f);\n        (md->chc).length = uVar10;\n        if (uVar7 != 3) {\n          bVar2 = in[3];\n          (md->sha3).byte_index = (ushort)(uVar13 + 4);\n          uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 3 & 0xffff) << 3) & 0x3f);\n          (md->chc).length = uVar10;\n          if (uVar7 != 4) {\n            bVar2 = in[4];\n            (md->sha3).byte_index = (ushort)(uVar13 + 5);\n            uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 4 & 0xffff) << 3) & 0x3f);\n            (md->chc).length = uVar10;\n            if (uVar7 != 5) {\n              bVar2 = in[5];\n              (md->sha3).byte_index = (ushort)(uVar13 + 6);\n              uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 5 & 0xffff) << 3) & 0x3f);\n              (md->chc).length = uVar10;\n              if (uVar7 != 6) {\n                bVar2 = in[6];\n                (md->sha3).byte_index = uVar14 + 7;\n                uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f);\n                (md->chc).length = uVar10;\n              }\n            }\n          }\n        }\n      }\n    }\n    uVar14 = (md->sha3).word_index;\n    in = in + (ulong)(uVar7 - 1) + 1;\n    puVar11 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n    *puVar11 = *puVar11 ^ uVar10;\n    uVar14 = uVar14 + 1;\n    (md->sha3).byte_index = 0;\n    (md->chc).length = 0;\n    (md->sha3).word_index = uVar14;\n    if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n      keccakf((md->whirlpool).state);\n      (md->sha3).word_index = 0;\n    }\n  }\n  uVar10 = inlen >> 3;\n  uVar13 = (int)inlen + (int)uVar10 * -8;\n  puVar11 = (ulong *)in;\n  if (uVar10 != 0) {\n    puVar11 = (ulong *)((long)in + uVar10 * 8);\n    uVar8 = (int)(uVar10 * 8 - 8 >> 3) + 1U & 3;\n    if (uVar8 != 0) {\n      if (uVar8 != 1) {\n        if (uVar8 != 2) {\n          uVar14 = (md->sha3).word_index;\n          puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n          *puVar1 = *puVar1 ^ *(ulong *)in;\n          uVar14 = uVar14 + 1;\n          (md->sha3).word_index = uVar14;\n          if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n            keccakf((md->whirlpool).state);\n            (md->sha3).word_index = 0;\n          }\n          in = (uchar *)((long)in + 8);\n        }\n        uVar14 = (md->sha3).word_index;\n        puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n        *puVar1 = *puVar1 ^ *(ulong *)in;\n        uVar14 = uVar14 + 1;\n        (md->sha3).word_index = uVar14;\n        if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n          keccakf((md->whirlpool).state);\n          (md->sha3).word_index = 0;\n        }\n        in = (uchar *)((long)in + 8);\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)in;\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      in = (uchar *)((long)in + 8);\n      if ((ulong *)in == puVar11) goto LAB_00153b88;\n    }\n    do {\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)in;\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 8);\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 0x10);\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 0x18);\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      in = (uchar *)((long)in + 0x20);\n    } while ((ulong *)in != puVar11);\n  }\nLAB_00153b88:\n  if (uVar13 != 0) {\n    puVar1 = (ulong *)((long)puVar11 + (ulong)(uVar13 - 1) + 1);\n    uVar14 = (md->sha3).byte_index;\n    uVar9 = (uint)uVar14;\n    uVar7 = (uint)uVar14;\n    uVar8 = (uint)uVar14;\n    uVar10 = (md->chc).length;\n    uVar13 = uVar13 & 3;\n    puVar12 = puVar11;\n    if (uVar13 != 0) {\n      if (uVar13 != 1) {\n        if (uVar13 != 2) {\n          uVar3 = *puVar11;\n          puVar11 = (ulong *)((long)puVar11 + 1);\n          (md->sha3).byte_index = (ushort)(uVar14 + 1);\n          uVar8 = uVar14 + 1 & 0xffff;\n          uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar14 * '\b' & 0x3fU);\n          (md->chc).length = uVar10;\n        }\n        uVar3 = *puVar11;\n        uVar7 = uVar8 + 1;\n        puVar11 = (ulong *)((long)puVar11 + 1);\n        (md->sha3).byte_index = (ushort)uVar7;\n        uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar8 * '\b' & 0x3fU);\n        (md->chc).length = uVar10;\n      }\n      uVar3 = *puVar11;\n      uVar9 = uVar7 + 1;\n      (md->sha3).byte_index = (ushort)uVar9;\n      uVar10 = uVar10 | (ulong)(byte)uVar3 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      puVar12 = (ulong *)((long)puVar11 + 1);\n      if ((ulong *)((long)puVar11 + 1) == puVar1) {\n        return 0;\n      }\n    }\n    do {\n      uVar3 = *puVar12;\n      uVar13 = uVar9 + 1;\n      uVar7 = uVar9 + 3;\n      (md->sha3).byte_index = (ushort)uVar13;\n      puVar11 = (ulong *)((long)puVar12 + 4);\n      uVar10 = (ulong)(byte)uVar3 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f) | uVar10;\n      uVar8 = uVar9 + 2;\n      uVar9 = uVar9 + 4;\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 1);\n      (md->sha3).byte_index = (ushort)uVar8;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 2);\n      (md->sha3).byte_index = (ushort)uVar7;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar8 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 3);\n      (md->sha3).byte_index = (ushort)uVar9;\n      uVar10 = (ulong)bVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar10;\n      (md->chc).length = uVar10;\n      puVar12 = puVar11;\n    } while (puVar11 != puVar1);\n  }\n  return 0;\n}" primitive_type (function_declarator "sha3_process(hash_state *md,uchar *in,ulong inlen)" identifier (parameter_list "(hash_state *md,uchar *in,ulong inlen)" ( (parameter_declaration "hash_state *md" type_identifier (pointer_declarator "*md" * identifier)) , (parameter_declaration "uchar *in" type_identifier (pointer_declarator "*in" * identifier)) , (parameter_declaration "ulong inlen" type_identifier identifier) ))) (compound_statement "{\n  ulong *puVar1;\n  byte bVar2;\n  ulong uVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  ulong uVar10;\n  ulong *puVar11;\n  ulong *puVar12;\n  uint uVar13;\n  ushort uVar14;\n  \n  if (inlen == 0) {\n    return 0;\n  }\n  if (in == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);\n  }\n  uVar14 = (md->sha3).byte_index;\n  uVar8 = (uint)uVar14;\n  uVar13 = (uint)uVar14;\n  uVar7 = -uVar13 & 7;\n  if (inlen < uVar7) {\n    uVar10 = (md->chc).length;\n    uVar9 = ~(uint)in + (int)(in + inlen) & 3;\n    pbVar5 = in;\n    uVar7 = uVar13;\n    if (uVar9 == 0) goto LAB_00153dc2;\n    pbVar5 = in + 1;\n    bVar2 = *in;\n    uVar7 = uVar13 + 1;\n    (md->sha3).byte_index = (ushort)uVar7;\n    uVar8 = uVar7 & 0xffff;\n    uVar10 = uVar10 | (ulong)bVar2 << (((byte)uVar14 & 7) << 3);\n    (md->chc).length = uVar10;\n    if (uVar9 == 1) goto LAB_00153dc2;\n    if (uVar9 != 2) {\n      bVar2 = *pbVar5;\n      iVar4 = uVar8 << 3;\n      uVar7 = uVar13 + 2;\n      pbVar5 = in + 2;\n      (md->sha3).byte_index = (ushort)uVar7;\n      uVar8 = uVar7 & 0xffff;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)iVar4 & 0x3f);\n      (md->chc).length = uVar10;\n    }\n    pbVar6 = pbVar5 + 1;\n    bVar2 = *pbVar5;\n    uVar7 = uVar7 + 1;\n    while( true ) {\n      iVar4 = uVar8 << 3;\n      (md->sha3).byte_index = (ushort)uVar7;\n      uVar8 = uVar7 & 0xffff;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)iVar4 & 0x3f);\n      (md->chc).length = uVar10;\n      pbVar5 = pbVar6;\nLAB_00153dc2:\n      bVar2 = *pbVar5;\n      uVar13 = uVar7 + 1;\n      (md->sha3).byte_index = (ushort)uVar13;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)(uVar8 << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      if (pbVar5 + 1 == in + inlen) break;\n      bVar2 = pbVar5[1];\n      uVar9 = uVar7 + 2;\n      uVar8 = uVar7 + 3;\n      (md->sha3).byte_index = (ushort)uVar9;\n      pbVar6 = pbVar5 + 4;\n      uVar7 = uVar7 + 4;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = pbVar5[2];\n      (md->sha3).byte_index = (ushort)uVar8;\n      uVar8 = uVar8 & 0xffff;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = pbVar5[3];\n    }\n    return 0;\n  }\n  if (uVar7 != 0) {\n    bVar2 = *in;\n    inlen = inlen - uVar7;\n    (md->sha3).byte_index = (ushort)(uVar14 + 1);\n    uVar10 = (ulong)bVar2 << (((byte)uVar14 & 7) << 3) | (md->chc).length;\n    (md->chc).length = uVar10;\n    if (uVar7 - 1 != 0) {\n      bVar2 = in[1];\n      (md->sha3).byte_index = (ushort)(uVar13 + 2);\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar14 + 1 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      if (uVar7 != 2) {\n        bVar2 = in[2];\n        (md->sha3).byte_index = (ushort)(uVar13 + 3);\n        uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 2 & 0xffff) << 3) & 0x3f);\n        (md->chc).length = uVar10;\n        if (uVar7 != 3) {\n          bVar2 = in[3];\n          (md->sha3).byte_index = (ushort)(uVar13 + 4);\n          uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 3 & 0xffff) << 3) & 0x3f);\n          (md->chc).length = uVar10;\n          if (uVar7 != 4) {\n            bVar2 = in[4];\n            (md->sha3).byte_index = (ushort)(uVar13 + 5);\n            uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 4 & 0xffff) << 3) & 0x3f);\n            (md->chc).length = uVar10;\n            if (uVar7 != 5) {\n              bVar2 = in[5];\n              (md->sha3).byte_index = (ushort)(uVar13 + 6);\n              uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 5 & 0xffff) << 3) & 0x3f);\n              (md->chc).length = uVar10;\n              if (uVar7 != 6) {\n                bVar2 = in[6];\n                (md->sha3).byte_index = uVar14 + 7;\n                uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f);\n                (md->chc).length = uVar10;\n              }\n            }\n          }\n        }\n      }\n    }\n    uVar14 = (md->sha3).word_index;\n    in = in + (ulong)(uVar7 - 1) + 1;\n    puVar11 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n    *puVar11 = *puVar11 ^ uVar10;\n    uVar14 = uVar14 + 1;\n    (md->sha3).byte_index = 0;\n    (md->chc).length = 0;\n    (md->sha3).word_index = uVar14;\n    if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n      keccakf((md->whirlpool).state);\n      (md->sha3).word_index = 0;\n    }\n  }\n  uVar10 = inlen >> 3;\n  uVar13 = (int)inlen + (int)uVar10 * -8;\n  puVar11 = (ulong *)in;\n  if (uVar10 != 0) {\n    puVar11 = (ulong *)((long)in + uVar10 * 8);\n    uVar8 = (int)(uVar10 * 8 - 8 >> 3) + 1U & 3;\n    if (uVar8 != 0) {\n      if (uVar8 != 1) {\n        if (uVar8 != 2) {\n          uVar14 = (md->sha3).word_index;\n          puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n          *puVar1 = *puVar1 ^ *(ulong *)in;\n          uVar14 = uVar14 + 1;\n          (md->sha3).word_index = uVar14;\n          if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n            keccakf((md->whirlpool).state);\n            (md->sha3).word_index = 0;\n          }\n          in = (uchar *)((long)in + 8);\n        }\n        uVar14 = (md->sha3).word_index;\n        puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n        *puVar1 = *puVar1 ^ *(ulong *)in;\n        uVar14 = uVar14 + 1;\n        (md->sha3).word_index = uVar14;\n        if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n          keccakf((md->whirlpool).state);\n          (md->sha3).word_index = 0;\n        }\n        in = (uchar *)((long)in + 8);\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)in;\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      in = (uchar *)((long)in + 8);\n      if ((ulong *)in == puVar11) goto LAB_00153b88;\n    }\n    do {\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)in;\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 8);\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 0x10);\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 0x18);\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      in = (uchar *)((long)in + 0x20);\n    } while ((ulong *)in != puVar11);\n  }\nLAB_00153b88:\n  if (uVar13 != 0) {\n    puVar1 = (ulong *)((long)puVar11 + (ulong)(uVar13 - 1) + 1);\n    uVar14 = (md->sha3).byte_index;\n    uVar9 = (uint)uVar14;\n    uVar7 = (uint)uVar14;\n    uVar8 = (uint)uVar14;\n    uVar10 = (md->chc).length;\n    uVar13 = uVar13 & 3;\n    puVar12 = puVar11;\n    if (uVar13 != 0) {\n      if (uVar13 != 1) {\n        if (uVar13 != 2) {\n          uVar3 = *puVar11;\n          puVar11 = (ulong *)((long)puVar11 + 1);\n          (md->sha3).byte_index = (ushort)(uVar14 + 1);\n          uVar8 = uVar14 + 1 & 0xffff;\n          uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar14 * '\b' & 0x3fU);\n          (md->chc).length = uVar10;\n        }\n        uVar3 = *puVar11;\n        uVar7 = uVar8 + 1;\n        puVar11 = (ulong *)((long)puVar11 + 1);\n        (md->sha3).byte_index = (ushort)uVar7;\n        uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar8 * '\b' & 0x3fU);\n        (md->chc).length = uVar10;\n      }\n      uVar3 = *puVar11;\n      uVar9 = uVar7 + 1;\n      (md->sha3).byte_index = (ushort)uVar9;\n      uVar10 = uVar10 | (ulong)(byte)uVar3 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      puVar12 = (ulong *)((long)puVar11 + 1);\n      if ((ulong *)((long)puVar11 + 1) == puVar1) {\n        return 0;\n      }\n    }\n    do {\n      uVar3 = *puVar12;\n      uVar13 = uVar9 + 1;\n      uVar7 = uVar9 + 3;\n      (md->sha3).byte_index = (ushort)uVar13;\n      puVar11 = (ulong *)((long)puVar12 + 4);\n      uVar10 = (ulong)(byte)uVar3 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f) | uVar10;\n      uVar8 = uVar9 + 2;\n      uVar9 = uVar9 + 4;\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 1);\n      (md->sha3).byte_index = (ushort)uVar8;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 2);\n      (md->sha3).byte_index = (ushort)uVar7;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar8 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 3);\n      (md->sha3).byte_index = (ushort)uVar9;\n      uVar10 = (ulong)bVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar10;\n      (md->chc).length = uVar10;\n      puVar12 = puVar11;\n    } while (puVar11 != puVar1);\n  }\n  return 0;\n}" { (declaration "ulong *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "ulong *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "ulong *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "ushort uVar14;" type_identifier identifier ;) (if_statement "if (inlen == 0) {\n    return 0;\n  }" if (parenthesized_expression "(inlen == 0)" ( (binary_expression "inlen == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (in == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);\n  }" if (parenthesized_expression "(in == (uchar *)0x0)" ( (binary_expression "in == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);\n  }" { comment (expression_statement "crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);" (call_expression "crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf)" identifier (argument_list "("in != NULL","src/hashes/sha3.c",0xbf)" ( (string_literal ""in != NULL"" " string_content ") , (string_literal ""src/hashes/sha3.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "uVar14 = (md->sha3).byte_index;" (assignment_expression "uVar14 = (md->sha3).byte_index" identifier = (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar8 = (uint)uVar14;" (assignment_expression "uVar8 = (uint)uVar14" identifier = (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar13 = (uint)uVar14;" (assignment_expression "uVar13 = (uint)uVar14" identifier = (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar7 = -uVar13 & 7;" (assignment_expression "uVar7 = -uVar13 & 7" identifier = (binary_expression "-uVar13 & 7" (unary_expression "-uVar13" - identifier) & number_literal)) ;) (if_statement "if (inlen < uVar7) {\n    uVar10 = (md->chc).length;\n    uVar9 = ~(uint)in + (int)(in + inlen) & 3;\n    pbVar5 = in;\n    uVar7 = uVar13;\n    if (uVar9 == 0) goto LAB_00153dc2;\n    pbVar5 = in + 1;\n    bVar2 = *in;\n    uVar7 = uVar13 + 1;\n    (md->sha3).byte_index = (ushort)uVar7;\n    uVar8 = uVar7 & 0xffff;\n    uVar10 = uVar10 | (ulong)bVar2 << (((byte)uVar14 & 7) << 3);\n    (md->chc).length = uVar10;\n    if (uVar9 == 1) goto LAB_00153dc2;\n    if (uVar9 != 2) {\n      bVar2 = *pbVar5;\n      iVar4 = uVar8 << 3;\n      uVar7 = uVar13 + 2;\n      pbVar5 = in + 2;\n      (md->sha3).byte_index = (ushort)uVar7;\n      uVar8 = uVar7 & 0xffff;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)iVar4 & 0x3f);\n      (md->chc).length = uVar10;\n    }\n    pbVar6 = pbVar5 + 1;\n    bVar2 = *pbVar5;\n    uVar7 = uVar7 + 1;\n    while( true ) {\n      iVar4 = uVar8 << 3;\n      (md->sha3).byte_index = (ushort)uVar7;\n      uVar8 = uVar7 & 0xffff;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)iVar4 & 0x3f);\n      (md->chc).length = uVar10;\n      pbVar5 = pbVar6;\nLAB_00153dc2:\n      bVar2 = *pbVar5;\n      uVar13 = uVar7 + 1;\n      (md->sha3).byte_index = (ushort)uVar13;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)(uVar8 << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      if (pbVar5 + 1 == in + inlen) break;\n      bVar2 = pbVar5[1];\n      uVar9 = uVar7 + 2;\n      uVar8 = uVar7 + 3;\n      (md->sha3).byte_index = (ushort)uVar9;\n      pbVar6 = pbVar5 + 4;\n      uVar7 = uVar7 + 4;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = pbVar5[2];\n      (md->sha3).byte_index = (ushort)uVar8;\n      uVar8 = uVar8 & 0xffff;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = pbVar5[3];\n    }\n    return 0;\n  }" if (parenthesized_expression "(inlen < uVar7)" ( (binary_expression "inlen < uVar7" identifier < identifier) )) (compound_statement "{\n    uVar10 = (md->chc).length;\n    uVar9 = ~(uint)in + (int)(in + inlen) & 3;\n    pbVar5 = in;\n    uVar7 = uVar13;\n    if (uVar9 == 0) goto LAB_00153dc2;\n    pbVar5 = in + 1;\n    bVar2 = *in;\n    uVar7 = uVar13 + 1;\n    (md->sha3).byte_index = (ushort)uVar7;\n    uVar8 = uVar7 & 0xffff;\n    uVar10 = uVar10 | (ulong)bVar2 << (((byte)uVar14 & 7) << 3);\n    (md->chc).length = uVar10;\n    if (uVar9 == 1) goto LAB_00153dc2;\n    if (uVar9 != 2) {\n      bVar2 = *pbVar5;\n      iVar4 = uVar8 << 3;\n      uVar7 = uVar13 + 2;\n      pbVar5 = in + 2;\n      (md->sha3).byte_index = (ushort)uVar7;\n      uVar8 = uVar7 & 0xffff;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)iVar4 & 0x3f);\n      (md->chc).length = uVar10;\n    }\n    pbVar6 = pbVar5 + 1;\n    bVar2 = *pbVar5;\n    uVar7 = uVar7 + 1;\n    while( true ) {\n      iVar4 = uVar8 << 3;\n      (md->sha3).byte_index = (ushort)uVar7;\n      uVar8 = uVar7 & 0xffff;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)iVar4 & 0x3f);\n      (md->chc).length = uVar10;\n      pbVar5 = pbVar6;\nLAB_00153dc2:\n      bVar2 = *pbVar5;\n      uVar13 = uVar7 + 1;\n      (md->sha3).byte_index = (ushort)uVar13;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)(uVar8 << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      if (pbVar5 + 1 == in + inlen) break;\n      bVar2 = pbVar5[1];\n      uVar9 = uVar7 + 2;\n      uVar8 = uVar7 + 3;\n      (md->sha3).byte_index = (ushort)uVar9;\n      pbVar6 = pbVar5 + 4;\n      uVar7 = uVar7 + 4;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = pbVar5[2];\n      (md->sha3).byte_index = (ushort)uVar8;\n      uVar8 = uVar8 & 0xffff;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = pbVar5[3];\n    }\n    return 0;\n  }" { (expression_statement "uVar10 = (md->chc).length;" (assignment_expression "uVar10 = (md->chc).length" identifier = (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar9 = ~(uint)in + (int)(in + inlen) & 3;" (assignment_expression "uVar9 = ~(uint)in + (int)(in + inlen) & 3" identifier = (binary_expression "~(uint)in + (int)(in + inlen) & 3" (binary_expression "~(uint)in + (int)(in + inlen)" (unary_expression "~(uint)in" ~ (cast_expression "(uint)in" ( (type_descriptor "uint" type_identifier) ) identifier)) + (cast_expression "(int)(in + inlen)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(in + inlen)" ( (binary_expression "in + inlen" identifier + identifier) )))) & number_literal)) ;) (expression_statement "pbVar5 = in;" (assignment_expression "pbVar5 = in" identifier = identifier) ;) (expression_statement "uVar7 = uVar13;" (assignment_expression "uVar7 = uVar13" identifier = identifier) ;) (if_statement "if (uVar9 == 0) goto LAB_00153dc2;" if (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00153dc2;" goto statement_identifier ;)) (expression_statement "pbVar5 = in + 1;" (assignment_expression "pbVar5 = in + 1" identifier = (binary_expression "in + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = *in;" (assignment_expression "bVar2 = *in" identifier = (pointer_expression "*in" * identifier)) ;) (expression_statement "uVar7 = uVar13 + 1;" (assignment_expression "uVar7 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) (expression_statement "(md->sha3).byte_index = (ushort)uVar7;" (assignment_expression "(md->sha3).byte_index = (ushort)uVar7" (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(ushort)uVar7" ( (type_descriptor "ushort" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = uVar7 & 0xffff;" (assignment_expression "uVar8 = uVar7 & 0xffff" identifier = (binary_expression "uVar7 & 0xffff" identifier & number_literal)) ;) (expression_statement "uVar10 = uVar10 | (ulong)bVar2 << (((byte)uVar14 & 7) << 3);" (assignment_expression "uVar10 = uVar10 | (ulong)bVar2 << (((byte)uVar14 & 7) << 3)" identifier = (binary_expression "uVar10 | (ulong)bVar2 << (((byte)uVar14 & 7) << 3)" identifier | (binary_expression "(ulong)bVar2 << (((byte)uVar14 & 7) << 3)" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "(((byte)uVar14 & 7) << 3)" ( (binary_expression "((byte)uVar14 & 7) << 3" (parenthesized_expression "((byte)uVar14 & 7)" ( (binary_expression "(byte)uVar14 & 7" (cast_expression "(byte)uVar14" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) << number_literal) ))))) ;) (expression_statement "(md->chc).length = uVar10;" (assignment_expression "(md->chc).length = uVar10" (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (uVar9 == 1) goto LAB_00153dc2;" if (parenthesized_expression "(uVar9 == 1)" ( (binary_expression "uVar9 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00153dc2;" goto statement_identifier ;)) (if_statement "if (uVar9 != 2) {\n      bVar2 = *pbVar5;\n      iVar4 = uVar8 << 3;\n      uVar7 = uVar13 + 2;\n      pbVar5 = in + 2;\n      (md->sha3).byte_index = (ushort)uVar7;\n      uVar8 = uVar7 & 0xffff;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)iVar4 & 0x3f);\n      (md->chc).length = uVar10;\n    }" if (parenthesized_expression "(uVar9 != 2)" ( (binary_expression "uVar9 != 2" identifier != number_literal) )) (compound_statement "{\n      bVar2 = *pbVar5;\n      iVar4 = uVar8 << 3;\n      uVar7 = uVar13 + 2;\n      pbVar5 = in + 2;\n      (md->sha3).byte_index = (ushort)uVar7;\n      uVar8 = uVar7 & 0xffff;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)iVar4 & 0x3f);\n      (md->chc).length = uVar10;\n    }" { (expression_statement "bVar2 = *pbVar5;" (assignment_expression "bVar2 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;) (expression_statement "iVar4 = uVar8 << 3;" (assignment_expression "iVar4 = uVar8 << 3" identifier = (binary_expression "uVar8 << 3" identifier << number_literal)) ;) (expression_statement "uVar7 = uVar13 + 2;" (assignment_expression "uVar7 = uVar13 + 2" identifier = (binary_expression "uVar13 + 2" identifier + number_literal)) ;) (expression_statement "pbVar5 = in + 2;" (assignment_expression "pbVar5 = in + 2" identifier = (binary_expression "in + 2" identifier + number_literal)) ;) (expression_statement "(md->sha3).byte_index = (ushort)uVar7;" (assignment_expression "(md->sha3).byte_index = (ushort)uVar7" (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(ushort)uVar7" ( (type_descriptor "ushort" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = uVar7 & 0xffff;" (assignment_expression "uVar8 = uVar7 & 0xffff" identifier = (binary_expression "uVar7 & 0xffff" identifier & number_literal)) ;) (expression_statement "uVar10 = uVar10 | (ulong)bVar2 << ((byte)iVar4 & 0x3f);" (assignment_expression "uVar10 = uVar10 | (ulong)bVar2 << ((byte)iVar4 & 0x3f)" identifier = (binary_expression "uVar10 | (ulong)bVar2 << ((byte)iVar4 & 0x3f)" identifier | (binary_expression "(ulong)bVar2 << ((byte)iVar4 & 0x3f)" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)iVar4 & 0x3f)" ( (binary_expression "(byte)iVar4 & 0x3f" (cast_expression "(byte)iVar4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) (expression_statement "(md->chc).length = uVar10;" (assignment_expression "(md->chc).length = uVar10" (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier) = identifier) ;) })) (expression_statement "pbVar6 = pbVar5 + 1;" (assignment_expression "pbVar6 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = *pbVar5;" (assignment_expression "bVar2 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (while_statement "while( true ) {\n      iVar4 = uVar8 << 3;\n      (md->sha3).byte_index = (ushort)uVar7;\n      uVar8 = uVar7 & 0xffff;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)iVar4 & 0x3f);\n      (md->chc).length = uVar10;\n      pbVar5 = pbVar6;\nLAB_00153dc2:\n      bVar2 = *pbVar5;\n      uVar13 = uVar7 + 1;\n      (md->sha3).byte_index = (ushort)uVar13;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)(uVar8 << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      if (pbVar5 + 1 == in + inlen) break;\n      bVar2 = pbVar5[1];\n      uVar9 = uVar7 + 2;\n      uVar8 = uVar7 + 3;\n      (md->sha3).byte_index = (ushort)uVar9;\n      pbVar6 = pbVar5 + 4;\n      uVar7 = uVar7 + 4;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = pbVar5[2];\n      (md->sha3).byte_index = (ushort)uVar8;\n      uVar8 = uVar8 & 0xffff;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = pbVar5[3];\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar4 = uVar8 << 3;\n      (md->sha3).byte_index = (ushort)uVar7;\n      uVar8 = uVar7 & 0xffff;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)iVar4 & 0x3f);\n      (md->chc).length = uVar10;\n      pbVar5 = pbVar6;\nLAB_00153dc2:\n      bVar2 = *pbVar5;\n      uVar13 = uVar7 + 1;\n      (md->sha3).byte_index = (ushort)uVar13;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)(uVar8 << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      if (pbVar5 + 1 == in + inlen) break;\n      bVar2 = pbVar5[1];\n      uVar9 = uVar7 + 2;\n      uVar8 = uVar7 + 3;\n      (md->sha3).byte_index = (ushort)uVar9;\n      pbVar6 = pbVar5 + 4;\n      uVar7 = uVar7 + 4;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = pbVar5[2];\n      (md->sha3).byte_index = (ushort)uVar8;\n      uVar8 = uVar8 & 0xffff;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = pbVar5[3];\n    }" { (expression_statement "iVar4 = uVar8 << 3;" (assignment_expression "iVar4 = uVar8 << 3" identifier = (binary_expression "uVar8 << 3" identifier << number_literal)) ;) (expression_statement "(md->sha3).byte_index = (ushort)uVar7;" (assignment_expression "(md->sha3).byte_index = (ushort)uVar7" (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(ushort)uVar7" ( (type_descriptor "ushort" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = uVar7 & 0xffff;" (assignment_expression "uVar8 = uVar7 & 0xffff" identifier = (binary_expression "uVar7 & 0xffff" identifier & number_literal)) ;) (expression_statement "uVar10 = uVar10 | (ulong)bVar2 << ((byte)iVar4 & 0x3f);" (assignment_expression "uVar10 = uVar10 | (ulong)bVar2 << ((byte)iVar4 & 0x3f)" identifier = (binary_expression "uVar10 | (ulong)bVar2 << ((byte)iVar4 & 0x3f)" identifier | (binary_expression "(ulong)bVar2 << ((byte)iVar4 & 0x3f)" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)iVar4 & 0x3f)" ( (binary_expression "(byte)iVar4 & 0x3f" (cast_expression "(byte)iVar4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) (expression_statement "(md->chc).length = uVar10;" (assignment_expression "(md->chc).length = uVar10" (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "pbVar5 = pbVar6;" (assignment_expression "pbVar5 = pbVar6" identifier = identifier) ;) (labeled_statement "LAB_00153dc2:\n      bVar2 = *pbVar5;" statement_identifier : (expression_statement "bVar2 = *pbVar5;" (assignment_expression "bVar2 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;)) (expression_statement "uVar13 = uVar7 + 1;" (assignment_expression "uVar13 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "(md->sha3).byte_index = (ushort)uVar13;" (assignment_expression "(md->sha3).byte_index = (ushort)uVar13" (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(ushort)uVar13" ( (type_descriptor "ushort" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = uVar10 | (ulong)bVar2 << ((byte)(uVar8 << 3) & 0x3f);" (assignment_expression "uVar10 = uVar10 | (ulong)bVar2 << ((byte)(uVar8 << 3) & 0x3f)" identifier = (binary_expression "uVar10 | (ulong)bVar2 << ((byte)(uVar8 << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar2 << ((byte)(uVar8 << 3) & 0x3f)" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)(uVar8 << 3) & 0x3f)" ( (binary_expression "(byte)(uVar8 << 3) & 0x3f" (call_expression "(byte)(uVar8 << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar8 << 3)" ( (binary_expression "uVar8 << 3" identifier << number_literal) ))) & number_literal) ))))) ;) (expression_statement "(md->chc).length = uVar10;" (assignment_expression "(md->chc).length = uVar10" (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (pbVar5 + 1 == in + inlen) break;" if (parenthesized_expression "(pbVar5 + 1 == in + inlen)" ( (binary_expression "pbVar5 + 1 == in + inlen" (binary_expression "pbVar5 + 1" identifier + number_literal) == (binary_expression "in + inlen" identifier + identifier)) )) (break_statement "break;" break ;)) (expression_statement "bVar2 = pbVar5[1];" (assignment_expression "bVar2 = pbVar5[1]" identifier = (subscript_expression "pbVar5[1]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = uVar7 + 2;" (assignment_expression "uVar9 = uVar7 + 2" identifier = (binary_expression "uVar7 + 2" identifier + number_literal)) ;) (expression_statement "uVar8 = uVar7 + 3;" (assignment_expression "uVar8 = uVar7 + 3" identifier = (binary_expression "uVar7 + 3" identifier + number_literal)) ;) (expression_statement "(md->sha3).byte_index = (ushort)uVar9;" (assignment_expression "(md->sha3).byte_index = (ushort)uVar9" (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(ushort)uVar9" ( (type_descriptor "ushort" type_identifier) ) identifier)) ;) (expression_statement "pbVar6 = pbVar5 + 4;" (assignment_expression "pbVar6 = pbVar5 + 4" identifier = (binary_expression "pbVar5 + 4" identifier + number_literal)) ;) (expression_statement "uVar7 = uVar7 + 4;" (assignment_expression "uVar7 = uVar7 + 4" identifier = (binary_expression "uVar7 + 4" identifier + number_literal)) ;) (expression_statement "uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar13 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar13 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar13 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar13 & 0xffff) << 3)" ( (binary_expression "(uVar13 & 0xffff) << 3" (parenthesized_expression "(uVar13 & 0xffff)" ( (binary_expression "uVar13 & 0xffff" identifier & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "(md->chc).length = uVar10;" (assignment_expression "(md->chc).length = uVar10" (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "bVar2 = pbVar5[2];" (assignment_expression "bVar2 = pbVar5[2]" identifier = (subscript_expression "pbVar5[2]" identifier [ number_literal ])) ;) (expression_statement "(md->sha3).byte_index = (ushort)uVar8;" (assignment_expression "(md->sha3).byte_index = (ushort)uVar8" (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(ushort)uVar8" ( (type_descriptor "ushort" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = uVar8 & 0xffff;" (assignment_expression "uVar8 = uVar8 & 0xffff" identifier = (binary_expression "uVar8 & 0xffff" identifier & number_literal)) ;) (expression_statement "uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar10 | (ulong)bVar2 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar2 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar9 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar9 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar9 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar9 & 0xffff) << 3)" ( (binary_expression "(uVar9 & 0xffff) << 3" (parenthesized_expression "(uVar9 & 0xffff)" ( (binary_expression "uVar9 & 0xffff" identifier & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "(md->chc).length = uVar10;" (assignment_expression "(md->chc).length = uVar10" (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "bVar2 = pbVar5[3];" (assignment_expression "bVar2 = pbVar5[3]" identifier = (subscript_expression "pbVar5[3]" identifier [ number_literal ])) ;) })) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (uVar7 != 0) {\n    bVar2 = *in;\n    inlen = inlen - uVar7;\n    (md->sha3).byte_index = (ushort)(uVar14 + 1);\n    uVar10 = (ulong)bVar2 << (((byte)uVar14 & 7) << 3) | (md->chc).length;\n    (md->chc).length = uVar10;\n    if (uVar7 - 1 != 0) {\n      bVar2 = in[1];\n      (md->sha3).byte_index = (ushort)(uVar13 + 2);\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar14 + 1 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      if (uVar7 != 2) {\n        bVar2 = in[2];\n        (md->sha3).byte_index = (ushort)(uVar13 + 3);\n        uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 2 & 0xffff) << 3) & 0x3f);\n        (md->chc).length = uVar10;\n        if (uVar7 != 3) {\n          bVar2 = in[3];\n          (md->sha3).byte_index = (ushort)(uVar13 + 4);\n          uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 3 & 0xffff) << 3) & 0x3f);\n          (md->chc).length = uVar10;\n          if (uVar7 != 4) {\n            bVar2 = in[4];\n            (md->sha3).byte_index = (ushort)(uVar13 + 5);\n            uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 4 & 0xffff) << 3) & 0x3f);\n            (md->chc).length = uVar10;\n            if (uVar7 != 5) {\n              bVar2 = in[5];\n              (md->sha3).byte_index = (ushort)(uVar13 + 6);\n              uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 5 & 0xffff) << 3) & 0x3f);\n              (md->chc).length = uVar10;\n              if (uVar7 != 6) {\n                bVar2 = in[6];\n                (md->sha3).byte_index = uVar14 + 7;\n                uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f);\n                (md->chc).length = uVar10;\n              }\n            }\n          }\n        }\n      }\n    }\n    uVar14 = (md->sha3).word_index;\n    in = in + (ulong)(uVar7 - 1) + 1;\n    puVar11 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n    *puVar11 = *puVar11 ^ uVar10;\n    uVar14 = uVar14 + 1;\n    (md->sha3).byte_index = 0;\n    (md->chc).length = 0;\n    (md->sha3).word_index = uVar14;\n    if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n      keccakf((md->whirlpool).state);\n      (md->sha3).word_index = 0;\n    }\n  }" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (compound_statement "{\n    bVar2 = *in;\n    inlen = inlen - uVar7;\n    (md->sha3).byte_index = (ushort)(uVar14 + 1);\n    uVar10 = (ulong)bVar2 << (((byte)uVar14 & 7) << 3) | (md->chc).length;\n    (md->chc).length = uVar10;\n    if (uVar7 - 1 != 0) {\n      bVar2 = in[1];\n      (md->sha3).byte_index = (ushort)(uVar13 + 2);\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar14 + 1 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      if (uVar7 != 2) {\n        bVar2 = in[2];\n        (md->sha3).byte_index = (ushort)(uVar13 + 3);\n        uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 2 & 0xffff) << 3) & 0x3f);\n        (md->chc).length = uVar10;\n        if (uVar7 != 3) {\n          bVar2 = in[3];\n          (md->sha3).byte_index = (ushort)(uVar13 + 4);\n          uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 3 & 0xffff) << 3) & 0x3f);\n          (md->chc).length = uVar10;\n          if (uVar7 != 4) {\n            bVar2 = in[4];\n            (md->sha3).byte_index = (ushort)(uVar13 + 5);\n            uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 4 & 0xffff) << 3) & 0x3f);\n            (md->chc).length = uVar10;\n            if (uVar7 != 5) {\n              bVar2 = in[5];\n              (md->sha3).byte_index = (ushort)(uVar13 + 6);\n              uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 5 & 0xffff) << 3) & 0x3f);\n              (md->chc).length = uVar10;\n              if (uVar7 != 6) {\n                bVar2 = in[6];\n                (md->sha3).byte_index = uVar14 + 7;\n                uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f);\n                (md->chc).length = uVar10;\n              }\n            }\n          }\n        }\n      }\n    }\n    uVar14 = (md->sha3).word_index;\n    in = in + (ulong)(uVar7 - 1) + 1;\n    puVar11 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n    *puVar11 = *puVar11 ^ uVar10;\n    uVar14 = uVar14 + 1;\n    (md->sha3).byte_index = 0;\n    (md->chc).length = 0;\n    (md->sha3).word_index = uVar14;\n    if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n      keccakf((md->whirlpool).state);\n      (md->sha3).word_index = 0;\n    }\n  }" { (expression_statement "bVar2 = *in;" (assignment_expression "bVar2 = *in" identifier = (pointer_expression "*in" * identifier)) ;) (expression_statement "inlen = inlen - uVar7;" (assignment_expression "inlen = inlen - uVar7" identifier = (binary_expression "inlen - uVar7" identifier - identifier)) ;) (expression_statement "(md->sha3).byte_index = (ushort)(uVar14 + 1);" (assignment_expression "(md->sha3).byte_index = (ushort)(uVar14 + 1)" (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = (call_expression "(ushort)(uVar14 + 1)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar14 + 1)" ( (binary_expression "uVar14 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar10 = (ulong)bVar2 << (((byte)uVar14 & 7) << 3) | (md->chc).length;" (assignment_expression "uVar10 = (ulong)bVar2 << (((byte)uVar14 & 7) << 3) | (md->chc).length" identifier = (binary_expression "(ulong)bVar2 << (((byte)uVar14 & 7) << 3) | (md->chc).length" (binary_expression "(ulong)bVar2 << (((byte)uVar14 & 7) << 3)" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "(((byte)uVar14 & 7) << 3)" ( (binary_expression "((byte)uVar14 & 7) << 3" (parenthesized_expression "((byte)uVar14 & 7)" ( (binary_expression "(byte)uVar14 & 7" (cast_expression "(byte)uVar14" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) << number_literal) ))) | (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "(md->chc).length = uVar10;" (assignment_expression "(md->chc).length = uVar10" (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (uVar7 - 1 != 0) {\n      bVar2 = in[1];\n      (md->sha3).byte_index = (ushort)(uVar13 + 2);\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar14 + 1 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      if (uVar7 != 2) {\n        bVar2 = in[2];\n        (md->sha3).byte_index = (ushort)(uVar13 + 3);\n        uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 2 & 0xffff) << 3) & 0x3f);\n        (md->chc).length = uVar10;\n        if (uVar7 != 3) {\n          bVar2 = in[3];\n          (md->sha3).byte_index = (ushort)(uVar13 + 4);\n          uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 3 & 0xffff) << 3) & 0x3f);\n          (md->chc).length = uVar10;\n          if (uVar7 != 4) {\n            bVar2 = in[4];\n            (md->sha3).byte_index = (ushort)(uVar13 + 5);\n            uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 4 & 0xffff) << 3) & 0x3f);\n            (md->chc).length = uVar10;\n            if (uVar7 != 5) {\n              bVar2 = in[5];\n              (md->sha3).byte_index = (ushort)(uVar13 + 6);\n              uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 5 & 0xffff) << 3) & 0x3f);\n              (md->chc).length = uVar10;\n              if (uVar7 != 6) {\n                bVar2 = in[6];\n                (md->sha3).byte_index = uVar14 + 7;\n                uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f);\n                (md->chc).length = uVar10;\n              }\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "(uVar7 - 1 != 0)" ( (binary_expression "uVar7 - 1 != 0" (binary_expression "uVar7 - 1" identifier - number_literal) != number_literal) )) (compound_statement "{\n      bVar2 = in[1];\n      (md->sha3).byte_index = (ushort)(uVar13 + 2);\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar14 + 1 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      if (uVar7 != 2) {\n        bVar2 = in[2];\n        (md->sha3).byte_index = (ushort)(uVar13 + 3);\n        uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 2 & 0xffff) << 3) & 0x3f);\n        (md->chc).length = uVar10;\n        if (uVar7 != 3) {\n          bVar2 = in[3];\n          (md->sha3).byte_index = (ushort)(uVar13 + 4);\n          uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 3 & 0xffff) << 3) & 0x3f);\n          (md->chc).length = uVar10;\n          if (uVar7 != 4) {\n            bVar2 = in[4];\n            (md->sha3).byte_index = (ushort)(uVar13 + 5);\n            uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 4 & 0xffff) << 3) & 0x3f);\n            (md->chc).length = uVar10;\n            if (uVar7 != 5) {\n              bVar2 = in[5];\n              (md->sha3).byte_index = (ushort)(uVar13 + 6);\n              uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 5 & 0xffff) << 3) & 0x3f);\n              (md->chc).length = uVar10;\n              if (uVar7 != 6) {\n                bVar2 = in[6];\n                (md->sha3).byte_index = uVar14 + 7;\n                uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f);\n                (md->chc).length = uVar10;\n              }\n            }\n          }\n        }\n      }\n    }" { (expression_statement "bVar2 = in[1];" (assignment_expression "bVar2 = in[1]" identifier = (subscript_expression "in[1]" identifier [ number_literal ])) ;) (expression_statement "(md->sha3).byte_index = (ushort)(uVar13 + 2);" (assignment_expression "(md->sha3).byte_index = (ushort)(uVar13 + 2)" (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = (call_expression "(ushort)(uVar13 + 2)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar13 + 2)" ( (binary_expression "uVar13 + 2" identifier + number_literal) )))) ;) (expression_statement "uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar14 + 1 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar14 + 1 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar10 | (ulong)bVar2 << ((byte)((uVar14 + 1 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar2 << ((byte)((uVar14 + 1 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar14 + 1 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar14 + 1 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar14 + 1 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar14 + 1 & 0xffff) << 3)" ( (binary_expression "(uVar14 + 1 & 0xffff) << 3" (parenthesized_expression "(uVar14 + 1 & 0xffff)" ( (binary_expression "uVar14 + 1 & 0xffff" (binary_expression "uVar14 + 1" identifier + number_literal) & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "(md->chc).length = uVar10;" (assignment_expression "(md->chc).length = uVar10" (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (uVar7 != 2) {\n        bVar2 = in[2];\n        (md->sha3).byte_index = (ushort)(uVar13 + 3);\n        uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 2 & 0xffff) << 3) & 0x3f);\n        (md->chc).length = uVar10;\n        if (uVar7 != 3) {\n          bVar2 = in[3];\n          (md->sha3).byte_index = (ushort)(uVar13 + 4);\n          uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 3 & 0xffff) << 3) & 0x3f);\n          (md->chc).length = uVar10;\n          if (uVar7 != 4) {\n            bVar2 = in[4];\n            (md->sha3).byte_index = (ushort)(uVar13 + 5);\n            uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 4 & 0xffff) << 3) & 0x3f);\n            (md->chc).length = uVar10;\n            if (uVar7 != 5) {\n              bVar2 = in[5];\n              (md->sha3).byte_index = (ushort)(uVar13 + 6);\n              uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 5 & 0xffff) << 3) & 0x3f);\n              (md->chc).length = uVar10;\n              if (uVar7 != 6) {\n                bVar2 = in[6];\n                (md->sha3).byte_index = uVar14 + 7;\n                uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f);\n                (md->chc).length = uVar10;\n              }\n            }\n          }\n        }\n      }" if (parenthesized_expression "(uVar7 != 2)" ( (binary_expression "uVar7 != 2" identifier != number_literal) )) (compound_statement "{\n        bVar2 = in[2];\n        (md->sha3).byte_index = (ushort)(uVar13 + 3);\n        uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 2 & 0xffff) << 3) & 0x3f);\n        (md->chc).length = uVar10;\n        if (uVar7 != 3) {\n          bVar2 = in[3];\n          (md->sha3).byte_index = (ushort)(uVar13 + 4);\n          uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 3 & 0xffff) << 3) & 0x3f);\n          (md->chc).length = uVar10;\n          if (uVar7 != 4) {\n            bVar2 = in[4];\n            (md->sha3).byte_index = (ushort)(uVar13 + 5);\n            uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 4 & 0xffff) << 3) & 0x3f);\n            (md->chc).length = uVar10;\n            if (uVar7 != 5) {\n              bVar2 = in[5];\n              (md->sha3).byte_index = (ushort)(uVar13 + 6);\n              uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 5 & 0xffff) << 3) & 0x3f);\n              (md->chc).length = uVar10;\n              if (uVar7 != 6) {\n                bVar2 = in[6];\n                (md->sha3).byte_index = uVar14 + 7;\n                uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f);\n                (md->chc).length = uVar10;\n              }\n            }\n          }\n        }\n      }" { (expression_statement "bVar2 = in[2];" (assignment_expression "bVar2 = in[2]" identifier = (subscript_expression "in[2]" identifier [ number_literal ])) ;) (expression_statement "(md->sha3).byte_index = (ushort)(uVar13 + 3);" (assignment_expression "(md->sha3).byte_index = (ushort)(uVar13 + 3)" (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = (call_expression "(ushort)(uVar13 + 3)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar13 + 3)" ( (binary_expression "uVar13 + 3" identifier + number_literal) )))) ;) (expression_statement "uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 2 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 2 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 2 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar2 << ((byte)((uVar13 + 2 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar13 + 2 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar13 + 2 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar13 + 2 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar13 + 2 & 0xffff) << 3)" ( (binary_expression "(uVar13 + 2 & 0xffff) << 3" (parenthesized_expression "(uVar13 + 2 & 0xffff)" ( (binary_expression "uVar13 + 2 & 0xffff" (binary_expression "uVar13 + 2" identifier + number_literal) & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "(md->chc).length = uVar10;" (assignment_expression "(md->chc).length = uVar10" (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (uVar7 != 3) {\n          bVar2 = in[3];\n          (md->sha3).byte_index = (ushort)(uVar13 + 4);\n          uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 3 & 0xffff) << 3) & 0x3f);\n          (md->chc).length = uVar10;\n          if (uVar7 != 4) {\n            bVar2 = in[4];\n            (md->sha3).byte_index = (ushort)(uVar13 + 5);\n            uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 4 & 0xffff) << 3) & 0x3f);\n            (md->chc).length = uVar10;\n            if (uVar7 != 5) {\n              bVar2 = in[5];\n              (md->sha3).byte_index = (ushort)(uVar13 + 6);\n              uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 5 & 0xffff) << 3) & 0x3f);\n              (md->chc).length = uVar10;\n              if (uVar7 != 6) {\n                bVar2 = in[6];\n                (md->sha3).byte_index = uVar14 + 7;\n                uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f);\n                (md->chc).length = uVar10;\n              }\n            }\n          }\n        }" if (parenthesized_expression "(uVar7 != 3)" ( (binary_expression "uVar7 != 3" identifier != number_literal) )) (compound_statement "{\n          bVar2 = in[3];\n          (md->sha3).byte_index = (ushort)(uVar13 + 4);\n          uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 3 & 0xffff) << 3) & 0x3f);\n          (md->chc).length = uVar10;\n          if (uVar7 != 4) {\n            bVar2 = in[4];\n            (md->sha3).byte_index = (ushort)(uVar13 + 5);\n            uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 4 & 0xffff) << 3) & 0x3f);\n            (md->chc).length = uVar10;\n            if (uVar7 != 5) {\n              bVar2 = in[5];\n              (md->sha3).byte_index = (ushort)(uVar13 + 6);\n              uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 5 & 0xffff) << 3) & 0x3f);\n              (md->chc).length = uVar10;\n              if (uVar7 != 6) {\n                bVar2 = in[6];\n                (md->sha3).byte_index = uVar14 + 7;\n                uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f);\n                (md->chc).length = uVar10;\n              }\n            }\n          }\n        }" { (expression_statement "bVar2 = in[3];" (assignment_expression "bVar2 = in[3]" identifier = (subscript_expression "in[3]" identifier [ number_literal ])) ;) (expression_statement "(md->sha3).byte_index = (ushort)(uVar13 + 4);" (assignment_expression "(md->sha3).byte_index = (ushort)(uVar13 + 4)" (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = (call_expression "(ushort)(uVar13 + 4)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar13 + 4)" ( (binary_expression "uVar13 + 4" identifier + number_literal) )))) ;) (expression_statement "uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 3 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 3 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 3 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar2 << ((byte)((uVar13 + 3 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar13 + 3 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar13 + 3 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar13 + 3 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar13 + 3 & 0xffff) << 3)" ( (binary_expression "(uVar13 + 3 & 0xffff) << 3" (parenthesized_expression "(uVar13 + 3 & 0xffff)" ( (binary_expression "uVar13 + 3 & 0xffff" (binary_expression "uVar13 + 3" identifier + number_literal) & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "(md->chc).length = uVar10;" (assignment_expression "(md->chc).length = uVar10" (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (uVar7 != 4) {\n            bVar2 = in[4];\n            (md->sha3).byte_index = (ushort)(uVar13 + 5);\n            uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 4 & 0xffff) << 3) & 0x3f);\n            (md->chc).length = uVar10;\n            if (uVar7 != 5) {\n              bVar2 = in[5];\n              (md->sha3).byte_index = (ushort)(uVar13 + 6);\n              uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 5 & 0xffff) << 3) & 0x3f);\n              (md->chc).length = uVar10;\n              if (uVar7 != 6) {\n                bVar2 = in[6];\n                (md->sha3).byte_index = uVar14 + 7;\n                uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f);\n                (md->chc).length = uVar10;\n              }\n            }\n          }" if (parenthesized_expression "(uVar7 != 4)" ( (binary_expression "uVar7 != 4" identifier != number_literal) )) (compound_statement "{\n            bVar2 = in[4];\n            (md->sha3).byte_index = (ushort)(uVar13 + 5);\n            uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 4 & 0xffff) << 3) & 0x3f);\n            (md->chc).length = uVar10;\n            if (uVar7 != 5) {\n              bVar2 = in[5];\n              (md->sha3).byte_index = (ushort)(uVar13 + 6);\n              uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 5 & 0xffff) << 3) & 0x3f);\n              (md->chc).length = uVar10;\n              if (uVar7 != 6) {\n                bVar2 = in[6];\n                (md->sha3).byte_index = uVar14 + 7;\n                uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f);\n                (md->chc).length = uVar10;\n              }\n            }\n          }" { (expression_statement "bVar2 = in[4];" (assignment_expression "bVar2 = in[4]" identifier = (subscript_expression "in[4]" identifier [ number_literal ])) ;) (expression_statement "(md->sha3).byte_index = (ushort)(uVar13 + 5);" (assignment_expression "(md->sha3).byte_index = (ushort)(uVar13 + 5)" (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = (call_expression "(ushort)(uVar13 + 5)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar13 + 5)" ( (binary_expression "uVar13 + 5" identifier + number_literal) )))) ;) (expression_statement "uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 4 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 4 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 4 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar2 << ((byte)((uVar13 + 4 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar13 + 4 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar13 + 4 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar13 + 4 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar13 + 4 & 0xffff) << 3)" ( (binary_expression "(uVar13 + 4 & 0xffff) << 3" (parenthesized_expression "(uVar13 + 4 & 0xffff)" ( (binary_expression "uVar13 + 4 & 0xffff" (binary_expression "uVar13 + 4" identifier + number_literal) & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "(md->chc).length = uVar10;" (assignment_expression "(md->chc).length = uVar10" (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (uVar7 != 5) {\n              bVar2 = in[5];\n              (md->sha3).byte_index = (ushort)(uVar13 + 6);\n              uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 5 & 0xffff) << 3) & 0x3f);\n              (md->chc).length = uVar10;\n              if (uVar7 != 6) {\n                bVar2 = in[6];\n                (md->sha3).byte_index = uVar14 + 7;\n                uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f);\n                (md->chc).length = uVar10;\n              }\n            }" if (parenthesized_expression "(uVar7 != 5)" ( (binary_expression "uVar7 != 5" identifier != number_literal) )) (compound_statement "{\n              bVar2 = in[5];\n              (md->sha3).byte_index = (ushort)(uVar13 + 6);\n              uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 5 & 0xffff) << 3) & 0x3f);\n              (md->chc).length = uVar10;\n              if (uVar7 != 6) {\n                bVar2 = in[6];\n                (md->sha3).byte_index = uVar14 + 7;\n                uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f);\n                (md->chc).length = uVar10;\n              }\n            }" { (expression_statement "bVar2 = in[5];" (assignment_expression "bVar2 = in[5]" identifier = (subscript_expression "in[5]" identifier [ number_literal ])) ;) (expression_statement "(md->sha3).byte_index = (ushort)(uVar13 + 6);" (assignment_expression "(md->sha3).byte_index = (ushort)(uVar13 + 6)" (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = (call_expression "(ushort)(uVar13 + 6)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar13 + 6)" ( (binary_expression "uVar13 + 6" identifier + number_literal) )))) ;) (expression_statement "uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 5 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 5 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 5 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar2 << ((byte)((uVar13 + 5 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar13 + 5 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar13 + 5 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar13 + 5 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar13 + 5 & 0xffff) << 3)" ( (binary_expression "(uVar13 + 5 & 0xffff) << 3" (parenthesized_expression "(uVar13 + 5 & 0xffff)" ( (binary_expression "uVar13 + 5 & 0xffff" (binary_expression "uVar13 + 5" identifier + number_literal) & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "(md->chc).length = uVar10;" (assignment_expression "(md->chc).length = uVar10" (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (uVar7 != 6) {\n                bVar2 = in[6];\n                (md->sha3).byte_index = uVar14 + 7;\n                uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f);\n                (md->chc).length = uVar10;\n              }" if (parenthesized_expression "(uVar7 != 6)" ( (binary_expression "uVar7 != 6" identifier != number_literal) )) (compound_statement "{\n                bVar2 = in[6];\n                (md->sha3).byte_index = uVar14 + 7;\n                uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f);\n                (md->chc).length = uVar10;\n              }" { (expression_statement "bVar2 = in[6];" (assignment_expression "bVar2 = in[6]" identifier = (subscript_expression "in[6]" identifier [ number_literal ])) ;) (expression_statement "(md->sha3).byte_index = uVar14 + 7;" (assignment_expression "(md->sha3).byte_index = uVar14 + 7" (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = (binary_expression "uVar14 + 7" identifier + number_literal)) ;) (expression_statement "uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar10 | (ulong)bVar2 << ((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar2 << ((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar13 + 6 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar13 + 6 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar13 + 6 & 0xffff) << 3)" ( (binary_expression "(uVar13 + 6 & 0xffff) << 3" (parenthesized_expression "(uVar13 + 6 & 0xffff)" ( (binary_expression "uVar13 + 6 & 0xffff" (binary_expression "uVar13 + 6" identifier + number_literal) & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "(md->chc).length = uVar10;" (assignment_expression "(md->chc).length = uVar10" (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier) = identifier) ;) })) })) })) })) })) })) (expression_statement "uVar14 = (md->sha3).word_index;" (assignment_expression "uVar14 = (md->sha3).word_index" identifier = (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "in = in + (ulong)(uVar7 - 1) + 1;" (assignment_expression "in = in + (ulong)(uVar7 - 1) + 1" identifier = (binary_expression "in + (ulong)(uVar7 - 1) + 1" (binary_expression "in + (ulong)(uVar7 - 1)" identifier + (call_expression "(ulong)(uVar7 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar7 - 1)" ( (binary_expression "uVar7 - 1" identifier - number_literal) )))) + number_literal)) ;) (expression_statement "puVar11 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);" (assignment_expression "puVar11 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8)" identifier = (cast_expression "(ulong *)((long)md + (ulong)uVar14 * 8 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)md + (ulong)uVar14 * 8 + 8)" ( (binary_expression "(long)md + (ulong)uVar14 * 8 + 8" (binary_expression "(long)md + (ulong)uVar14 * 8" (cast_expression "(long)md" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)uVar14 * 8" (cast_expression "(ulong)uVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) (expression_statement "*puVar11 = *puVar11 ^ uVar10;" (assignment_expression "*puVar11 = *puVar11 ^ uVar10" (pointer_expression "*puVar11" * identifier) = (binary_expression "*puVar11 ^ uVar10" (pointer_expression "*puVar11" * identifier) ^ identifier)) ;) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) (expression_statement "(md->sha3).byte_index = 0;" (assignment_expression "(md->sha3).byte_index = 0" (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(md->chc).length = 0;" (assignment_expression "(md->chc).length = 0" (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(md->sha3).word_index = uVar14;" (assignment_expression "(md->sha3).word_index = uVar14" (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n      keccakf((md->whirlpool).state);\n      (md->sha3).word_index = 0;\n    }" if (parenthesized_expression "((uint)uVar14 == 0x19 - (md->sha3).capacity_words)" ( (binary_expression "(uint)uVar14 == 0x19 - (md->sha3).capacity_words" (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - (md->sha3).capacity_words" number_literal - (field_expression "(md->sha3).capacity_words" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier))) )) (compound_statement "{\n      keccakf((md->whirlpool).state);\n      (md->sha3).word_index = 0;\n    }" { (expression_statement "keccakf((md->whirlpool).state);" (call_expression "keccakf((md->whirlpool).state)" identifier (argument_list "((md->whirlpool).state)" ( (field_expression "(md->whirlpool).state" (parenthesized_expression "(md->whirlpool)" ( (field_expression "md->whirlpool" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "(md->sha3).word_index = 0;" (assignment_expression "(md->sha3).word_index = 0" (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) })) })) (expression_statement "uVar10 = inlen >> 3;" (assignment_expression "uVar10 = inlen >> 3" identifier = (binary_expression "inlen >> 3" identifier >> number_literal)) ;) (expression_statement "uVar13 = (int)inlen + (int)uVar10 * -8;" (assignment_expression "uVar13 = (int)inlen + (int)uVar10 * -8" identifier = (binary_expression "(int)inlen + (int)uVar10 * -8" (cast_expression "(int)inlen" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(int)uVar10 * -8" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal))) ;) (expression_statement "puVar11 = (ulong *)in;" (assignment_expression "puVar11 = (ulong *)in" identifier = (cast_expression "(ulong *)in" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (uVar10 != 0) {\n    puVar11 = (ulong *)((long)in + uVar10 * 8);\n    uVar8 = (int)(uVar10 * 8 - 8 >> 3) + 1U & 3;\n    if (uVar8 != 0) {\n      if (uVar8 != 1) {\n        if (uVar8 != 2) {\n          uVar14 = (md->sha3).word_index;\n          puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n          *puVar1 = *puVar1 ^ *(ulong *)in;\n          uVar14 = uVar14 + 1;\n          (md->sha3).word_index = uVar14;\n          if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n            keccakf((md->whirlpool).state);\n            (md->sha3).word_index = 0;\n          }\n          in = (uchar *)((long)in + 8);\n        }\n        uVar14 = (md->sha3).word_index;\n        puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n        *puVar1 = *puVar1 ^ *(ulong *)in;\n        uVar14 = uVar14 + 1;\n        (md->sha3).word_index = uVar14;\n        if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n          keccakf((md->whirlpool).state);\n          (md->sha3).word_index = 0;\n        }\n        in = (uchar *)((long)in + 8);\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)in;\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      in = (uchar *)((long)in + 8);\n      if ((ulong *)in == puVar11) goto LAB_00153b88;\n    }\n    do {\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)in;\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 8);\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 0x10);\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 0x18);\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      in = (uchar *)((long)in + 0x20);\n    } while ((ulong *)in != puVar11);\n  }" if (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar11 = (ulong *)((long)in + uVar10 * 8);\n    uVar8 = (int)(uVar10 * 8 - 8 >> 3) + 1U & 3;\n    if (uVar8 != 0) {\n      if (uVar8 != 1) {\n        if (uVar8 != 2) {\n          uVar14 = (md->sha3).word_index;\n          puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n          *puVar1 = *puVar1 ^ *(ulong *)in;\n          uVar14 = uVar14 + 1;\n          (md->sha3).word_index = uVar14;\n          if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n            keccakf((md->whirlpool).state);\n            (md->sha3).word_index = 0;\n          }\n          in = (uchar *)((long)in + 8);\n        }\n        uVar14 = (md->sha3).word_index;\n        puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n        *puVar1 = *puVar1 ^ *(ulong *)in;\n        uVar14 = uVar14 + 1;\n        (md->sha3).word_index = uVar14;\n        if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n          keccakf((md->whirlpool).state);\n          (md->sha3).word_index = 0;\n        }\n        in = (uchar *)((long)in + 8);\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)in;\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      in = (uchar *)((long)in + 8);\n      if ((ulong *)in == puVar11) goto LAB_00153b88;\n    }\n    do {\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)in;\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 8);\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 0x10);\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 0x18);\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      in = (uchar *)((long)in + 0x20);\n    } while ((ulong *)in != puVar11);\n  }" { (expression_statement "puVar11 = (ulong *)((long)in + uVar10 * 8);" (assignment_expression "puVar11 = (ulong *)((long)in + uVar10 * 8)" identifier = (cast_expression "(ulong *)((long)in + uVar10 * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)in + uVar10 * 8)" ( (binary_expression "(long)in + uVar10 * 8" (cast_expression "(long)in" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "uVar10 * 8" identifier * number_literal)) )))) ;) (expression_statement "uVar8 = (int)(uVar10 * 8 - 8 >> 3) + 1U & 3;" (assignment_expression "uVar8 = (int)(uVar10 * 8 - 8 >> 3) + 1U & 3" identifier = (binary_expression "(int)(uVar10 * 8 - 8 >> 3) + 1U & 3" (binary_expression "(int)(uVar10 * 8 - 8 >> 3) + 1U" (cast_expression "(int)(uVar10 * 8 - 8 >> 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar10 * 8 - 8 >> 3)" ( (binary_expression "uVar10 * 8 - 8 >> 3" (binary_expression "uVar10 * 8 - 8" (binary_expression "uVar10 * 8" identifier * number_literal) - number_literal) >> number_literal) ))) + number_literal) & number_literal)) ;) (if_statement "if (uVar8 != 0) {\n      if (uVar8 != 1) {\n        if (uVar8 != 2) {\n          uVar14 = (md->sha3).word_index;\n          puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n          *puVar1 = *puVar1 ^ *(ulong *)in;\n          uVar14 = uVar14 + 1;\n          (md->sha3).word_index = uVar14;\n          if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n            keccakf((md->whirlpool).state);\n            (md->sha3).word_index = 0;\n          }\n          in = (uchar *)((long)in + 8);\n        }\n        uVar14 = (md->sha3).word_index;\n        puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n        *puVar1 = *puVar1 ^ *(ulong *)in;\n        uVar14 = uVar14 + 1;\n        (md->sha3).word_index = uVar14;\n        if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n          keccakf((md->whirlpool).state);\n          (md->sha3).word_index = 0;\n        }\n        in = (uchar *)((long)in + 8);\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)in;\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      in = (uchar *)((long)in + 8);\n      if ((ulong *)in == puVar11) goto LAB_00153b88;\n    }" if (parenthesized_expression "(uVar8 != 0)" ( (binary_expression "uVar8 != 0" identifier != number_literal) )) (compound_statement "{\n      if (uVar8 != 1) {\n        if (uVar8 != 2) {\n          uVar14 = (md->sha3).word_index;\n          puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n          *puVar1 = *puVar1 ^ *(ulong *)in;\n          uVar14 = uVar14 + 1;\n          (md->sha3).word_index = uVar14;\n          if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n            keccakf((md->whirlpool).state);\n            (md->sha3).word_index = 0;\n          }\n          in = (uchar *)((long)in + 8);\n        }\n        uVar14 = (md->sha3).word_index;\n        puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n        *puVar1 = *puVar1 ^ *(ulong *)in;\n        uVar14 = uVar14 + 1;\n        (md->sha3).word_index = uVar14;\n        if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n          keccakf((md->whirlpool).state);\n          (md->sha3).word_index = 0;\n        }\n        in = (uchar *)((long)in + 8);\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)in;\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      in = (uchar *)((long)in + 8);\n      if ((ulong *)in == puVar11) goto LAB_00153b88;\n    }" { (if_statement "if (uVar8 != 1) {\n        if (uVar8 != 2) {\n          uVar14 = (md->sha3).word_index;\n          puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n          *puVar1 = *puVar1 ^ *(ulong *)in;\n          uVar14 = uVar14 + 1;\n          (md->sha3).word_index = uVar14;\n          if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n            keccakf((md->whirlpool).state);\n            (md->sha3).word_index = 0;\n          }\n          in = (uchar *)((long)in + 8);\n        }\n        uVar14 = (md->sha3).word_index;\n        puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n        *puVar1 = *puVar1 ^ *(ulong *)in;\n        uVar14 = uVar14 + 1;\n        (md->sha3).word_index = uVar14;\n        if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n          keccakf((md->whirlpool).state);\n          (md->sha3).word_index = 0;\n        }\n        in = (uchar *)((long)in + 8);\n      }" if (parenthesized_expression "(uVar8 != 1)" ( (binary_expression "uVar8 != 1" identifier != number_literal) )) (compound_statement "{\n        if (uVar8 != 2) {\n          uVar14 = (md->sha3).word_index;\n          puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n          *puVar1 = *puVar1 ^ *(ulong *)in;\n          uVar14 = uVar14 + 1;\n          (md->sha3).word_index = uVar14;\n          if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n            keccakf((md->whirlpool).state);\n            (md->sha3).word_index = 0;\n          }\n          in = (uchar *)((long)in + 8);\n        }\n        uVar14 = (md->sha3).word_index;\n        puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n        *puVar1 = *puVar1 ^ *(ulong *)in;\n        uVar14 = uVar14 + 1;\n        (md->sha3).word_index = uVar14;\n        if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n          keccakf((md->whirlpool).state);\n          (md->sha3).word_index = 0;\n        }\n        in = (uchar *)((long)in + 8);\n      }" { (if_statement "if (uVar8 != 2) {\n          uVar14 = (md->sha3).word_index;\n          puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n          *puVar1 = *puVar1 ^ *(ulong *)in;\n          uVar14 = uVar14 + 1;\n          (md->sha3).word_index = uVar14;\n          if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n            keccakf((md->whirlpool).state);\n            (md->sha3).word_index = 0;\n          }\n          in = (uchar *)((long)in + 8);\n        }" if (parenthesized_expression "(uVar8 != 2)" ( (binary_expression "uVar8 != 2" identifier != number_literal) )) (compound_statement "{\n          uVar14 = (md->sha3).word_index;\n          puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n          *puVar1 = *puVar1 ^ *(ulong *)in;\n          uVar14 = uVar14 + 1;\n          (md->sha3).word_index = uVar14;\n          if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n            keccakf((md->whirlpool).state);\n            (md->sha3).word_index = 0;\n          }\n          in = (uchar *)((long)in + 8);\n        }" { (expression_statement "uVar14 = (md->sha3).word_index;" (assignment_expression "uVar14 = (md->sha3).word_index" identifier = (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);" (assignment_expression "puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8)" identifier = (cast_expression "(ulong *)((long)md + (ulong)uVar14 * 8 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)md + (ulong)uVar14 * 8 + 8)" ( (binary_expression "(long)md + (ulong)uVar14 * 8 + 8" (binary_expression "(long)md + (ulong)uVar14 * 8" (cast_expression "(long)md" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)uVar14 * 8" (cast_expression "(ulong)uVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) (expression_statement "*puVar1 = *puVar1 ^ *(ulong *)in;" (assignment_expression "*puVar1 = *puVar1 ^ *(ulong *)in" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 ^ *(ulong *)in" (pointer_expression "*puVar1" * identifier) ^ (pointer_expression "*(ulong *)in" * (cast_expression "(ulong *)in" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)))) ;) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) (expression_statement "(md->sha3).word_index = uVar14;" (assignment_expression "(md->sha3).word_index = uVar14" (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n            keccakf((md->whirlpool).state);\n            (md->sha3).word_index = 0;\n          }" if (parenthesized_expression "((uint)uVar14 == 0x19 - (md->sha3).capacity_words)" ( (binary_expression "(uint)uVar14 == 0x19 - (md->sha3).capacity_words" (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - (md->sha3).capacity_words" number_literal - (field_expression "(md->sha3).capacity_words" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier))) )) (compound_statement "{\n            keccakf((md->whirlpool).state);\n            (md->sha3).word_index = 0;\n          }" { (expression_statement "keccakf((md->whirlpool).state);" (call_expression "keccakf((md->whirlpool).state)" identifier (argument_list "((md->whirlpool).state)" ( (field_expression "(md->whirlpool).state" (parenthesized_expression "(md->whirlpool)" ( (field_expression "md->whirlpool" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "(md->sha3).word_index = 0;" (assignment_expression "(md->sha3).word_index = 0" (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) })) (expression_statement "in = (uchar *)((long)in + 8);" (assignment_expression "in = (uchar *)((long)in + 8)" identifier = (cast_expression "(uchar *)((long)in + 8)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)in + 8)" ( (binary_expression "(long)in + 8" (cast_expression "(long)in" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) })) (expression_statement "uVar14 = (md->sha3).word_index;" (assignment_expression "uVar14 = (md->sha3).word_index" identifier = (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);" (assignment_expression "puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8)" identifier = (cast_expression "(ulong *)((long)md + (ulong)uVar14 * 8 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)md + (ulong)uVar14 * 8 + 8)" ( (binary_expression "(long)md + (ulong)uVar14 * 8 + 8" (binary_expression "(long)md + (ulong)uVar14 * 8" (cast_expression "(long)md" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)uVar14 * 8" (cast_expression "(ulong)uVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) (expression_statement "*puVar1 = *puVar1 ^ *(ulong *)in;" (assignment_expression "*puVar1 = *puVar1 ^ *(ulong *)in" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 ^ *(ulong *)in" (pointer_expression "*puVar1" * identifier) ^ (pointer_expression "*(ulong *)in" * (cast_expression "(ulong *)in" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)))) ;) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) (expression_statement "(md->sha3).word_index = uVar14;" (assignment_expression "(md->sha3).word_index = uVar14" (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n          keccakf((md->whirlpool).state);\n          (md->sha3).word_index = 0;\n        }" if (parenthesized_expression "((uint)uVar14 == 0x19 - (md->sha3).capacity_words)" ( (binary_expression "(uint)uVar14 == 0x19 - (md->sha3).capacity_words" (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - (md->sha3).capacity_words" number_literal - (field_expression "(md->sha3).capacity_words" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier))) )) (compound_statement "{\n          keccakf((md->whirlpool).state);\n          (md->sha3).word_index = 0;\n        }" { (expression_statement "keccakf((md->whirlpool).state);" (call_expression "keccakf((md->whirlpool).state)" identifier (argument_list "((md->whirlpool).state)" ( (field_expression "(md->whirlpool).state" (parenthesized_expression "(md->whirlpool)" ( (field_expression "md->whirlpool" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "(md->sha3).word_index = 0;" (assignment_expression "(md->sha3).word_index = 0" (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) })) (expression_statement "in = (uchar *)((long)in + 8);" (assignment_expression "in = (uchar *)((long)in + 8)" identifier = (cast_expression "(uchar *)((long)in + 8)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)in + 8)" ( (binary_expression "(long)in + 8" (cast_expression "(long)in" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) })) (expression_statement "uVar14 = (md->sha3).word_index;" (assignment_expression "uVar14 = (md->sha3).word_index" identifier = (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);" (assignment_expression "puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8)" identifier = (cast_expression "(ulong *)((long)md + (ulong)uVar14 * 8 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)md + (ulong)uVar14 * 8 + 8)" ( (binary_expression "(long)md + (ulong)uVar14 * 8 + 8" (binary_expression "(long)md + (ulong)uVar14 * 8" (cast_expression "(long)md" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)uVar14 * 8" (cast_expression "(ulong)uVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) (expression_statement "*puVar1 = *puVar1 ^ *(ulong *)in;" (assignment_expression "*puVar1 = *puVar1 ^ *(ulong *)in" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 ^ *(ulong *)in" (pointer_expression "*puVar1" * identifier) ^ (pointer_expression "*(ulong *)in" * (cast_expression "(ulong *)in" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)))) ;) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) (expression_statement "(md->sha3).word_index = uVar14;" (assignment_expression "(md->sha3).word_index = uVar14" (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }" if (parenthesized_expression "((uint)uVar14 == 0x19 - (md->sha3).capacity_words)" ( (binary_expression "(uint)uVar14 == 0x19 - (md->sha3).capacity_words" (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - (md->sha3).capacity_words" number_literal - (field_expression "(md->sha3).capacity_words" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier))) )) (compound_statement "{\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }" { (expression_statement "keccakf((md->whirlpool).state);" (call_expression "keccakf((md->whirlpool).state)" identifier (argument_list "((md->whirlpool).state)" ( (field_expression "(md->whirlpool).state" (parenthesized_expression "(md->whirlpool)" ( (field_expression "md->whirlpool" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "(md->sha3).word_index = 0;" (assignment_expression "(md->sha3).word_index = 0" (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) })) (expression_statement "in = (uchar *)((long)in + 8);" (assignment_expression "in = (uchar *)((long)in + 8)" identifier = (cast_expression "(uchar *)((long)in + 8)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)in + 8)" ( (binary_expression "(long)in + 8" (cast_expression "(long)in" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (if_statement "if ((ulong *)in == puVar11) goto LAB_00153b88;" if (parenthesized_expression "((ulong *)in == puVar11)" ( (binary_expression "(ulong *)in == puVar11" (cast_expression "(ulong *)in" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) == identifier) )) (goto_statement "goto LAB_00153b88;" goto statement_identifier ;)) })) (do_statement "do {\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)in;\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 8);\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 0x10);\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 0x18);\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      in = (uchar *)((long)in + 0x20);\n    } while ((ulong *)in != puVar11);" do (compound_statement "{\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)in;\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 8);\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 0x10);\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      uVar14 = (md->sha3).word_index;\n      puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);\n      *puVar1 = *puVar1 ^ *(ulong *)((long)in + 0x18);\n      uVar14 = uVar14 + 1;\n      (md->sha3).word_index = uVar14;\n      if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }\n      in = (uchar *)((long)in + 0x20);\n    }" { (expression_statement "uVar14 = (md->sha3).word_index;" (assignment_expression "uVar14 = (md->sha3).word_index" identifier = (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);" (assignment_expression "puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8)" identifier = (cast_expression "(ulong *)((long)md + (ulong)uVar14 * 8 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)md + (ulong)uVar14 * 8 + 8)" ( (binary_expression "(long)md + (ulong)uVar14 * 8 + 8" (binary_expression "(long)md + (ulong)uVar14 * 8" (cast_expression "(long)md" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)uVar14 * 8" (cast_expression "(ulong)uVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) (expression_statement "*puVar1 = *puVar1 ^ *(ulong *)in;" (assignment_expression "*puVar1 = *puVar1 ^ *(ulong *)in" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 ^ *(ulong *)in" (pointer_expression "*puVar1" * identifier) ^ (pointer_expression "*(ulong *)in" * (cast_expression "(ulong *)in" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)))) ;) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) (expression_statement "(md->sha3).word_index = uVar14;" (assignment_expression "(md->sha3).word_index = uVar14" (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }" if (parenthesized_expression "((uint)uVar14 == 0x19 - (md->sha3).capacity_words)" ( (binary_expression "(uint)uVar14 == 0x19 - (md->sha3).capacity_words" (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - (md->sha3).capacity_words" number_literal - (field_expression "(md->sha3).capacity_words" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier))) )) (compound_statement "{\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }" { (expression_statement "keccakf((md->whirlpool).state);" (call_expression "keccakf((md->whirlpool).state)" identifier (argument_list "((md->whirlpool).state)" ( (field_expression "(md->whirlpool).state" (parenthesized_expression "(md->whirlpool)" ( (field_expression "md->whirlpool" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "(md->sha3).word_index = 0;" (assignment_expression "(md->sha3).word_index = 0" (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) })) (expression_statement "uVar14 = (md->sha3).word_index;" (assignment_expression "uVar14 = (md->sha3).word_index" identifier = (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);" (assignment_expression "puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8)" identifier = (cast_expression "(ulong *)((long)md + (ulong)uVar14 * 8 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)md + (ulong)uVar14 * 8 + 8)" ( (binary_expression "(long)md + (ulong)uVar14 * 8 + 8" (binary_expression "(long)md + (ulong)uVar14 * 8" (cast_expression "(long)md" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)uVar14 * 8" (cast_expression "(ulong)uVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) (expression_statement "*puVar1 = *puVar1 ^ *(ulong *)((long)in + 8);" (assignment_expression "*puVar1 = *puVar1 ^ *(ulong *)((long)in + 8)" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 ^ *(ulong *)((long)in + 8)" (pointer_expression "*puVar1" * identifier) ^ (pointer_expression "*(ulong *)((long)in + 8)" * (cast_expression "(ulong *)((long)in + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)in + 8)" ( (binary_expression "(long)in + 8" (cast_expression "(long)in" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) ;) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) (expression_statement "(md->sha3).word_index = uVar14;" (assignment_expression "(md->sha3).word_index = uVar14" (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }" if (parenthesized_expression "((uint)uVar14 == 0x19 - (md->sha3).capacity_words)" ( (binary_expression "(uint)uVar14 == 0x19 - (md->sha3).capacity_words" (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - (md->sha3).capacity_words" number_literal - (field_expression "(md->sha3).capacity_words" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier))) )) (compound_statement "{\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }" { (expression_statement "keccakf((md->whirlpool).state);" (call_expression "keccakf((md->whirlpool).state)" identifier (argument_list "((md->whirlpool).state)" ( (field_expression "(md->whirlpool).state" (parenthesized_expression "(md->whirlpool)" ( (field_expression "md->whirlpool" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "(md->sha3).word_index = 0;" (assignment_expression "(md->sha3).word_index = 0" (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) })) (expression_statement "uVar14 = (md->sha3).word_index;" (assignment_expression "uVar14 = (md->sha3).word_index" identifier = (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);" (assignment_expression "puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8)" identifier = (cast_expression "(ulong *)((long)md + (ulong)uVar14 * 8 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)md + (ulong)uVar14 * 8 + 8)" ( (binary_expression "(long)md + (ulong)uVar14 * 8 + 8" (binary_expression "(long)md + (ulong)uVar14 * 8" (cast_expression "(long)md" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)uVar14 * 8" (cast_expression "(ulong)uVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) (expression_statement "*puVar1 = *puVar1 ^ *(ulong *)((long)in + 0x10);" (assignment_expression "*puVar1 = *puVar1 ^ *(ulong *)((long)in + 0x10)" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 ^ *(ulong *)((long)in + 0x10)" (pointer_expression "*puVar1" * identifier) ^ (pointer_expression "*(ulong *)((long)in + 0x10)" * (cast_expression "(ulong *)((long)in + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)in + 0x10)" ( (binary_expression "(long)in + 0x10" (cast_expression "(long)in" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) ;) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) (expression_statement "(md->sha3).word_index = uVar14;" (assignment_expression "(md->sha3).word_index = uVar14" (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }" if (parenthesized_expression "((uint)uVar14 == 0x19 - (md->sha3).capacity_words)" ( (binary_expression "(uint)uVar14 == 0x19 - (md->sha3).capacity_words" (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - (md->sha3).capacity_words" number_literal - (field_expression "(md->sha3).capacity_words" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier))) )) (compound_statement "{\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }" { (expression_statement "keccakf((md->whirlpool).state);" (call_expression "keccakf((md->whirlpool).state)" identifier (argument_list "((md->whirlpool).state)" ( (field_expression "(md->whirlpool).state" (parenthesized_expression "(md->whirlpool)" ( (field_expression "md->whirlpool" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "(md->sha3).word_index = 0;" (assignment_expression "(md->sha3).word_index = 0" (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) })) (expression_statement "uVar14 = (md->sha3).word_index;" (assignment_expression "uVar14 = (md->sha3).word_index" identifier = (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8);" (assignment_expression "puVar1 = (ulong *)((long)md + (ulong)uVar14 * 8 + 8)" identifier = (cast_expression "(ulong *)((long)md + (ulong)uVar14 * 8 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)md + (ulong)uVar14 * 8 + 8)" ( (binary_expression "(long)md + (ulong)uVar14 * 8 + 8" (binary_expression "(long)md + (ulong)uVar14 * 8" (cast_expression "(long)md" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)uVar14 * 8" (cast_expression "(ulong)uVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) (expression_statement "*puVar1 = *puVar1 ^ *(ulong *)((long)in + 0x18);" (assignment_expression "*puVar1 = *puVar1 ^ *(ulong *)((long)in + 0x18)" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 ^ *(ulong *)((long)in + 0x18)" (pointer_expression "*puVar1" * identifier) ^ (pointer_expression "*(ulong *)((long)in + 0x18)" * (cast_expression "(ulong *)((long)in + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)in + 0x18)" ( (binary_expression "(long)in + 0x18" (cast_expression "(long)in" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) ;) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) (expression_statement "(md->sha3).word_index = uVar14;" (assignment_expression "(md->sha3).word_index = uVar14" (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if ((uint)uVar14 == 0x19 - (md->sha3).capacity_words) {\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }" if (parenthesized_expression "((uint)uVar14 == 0x19 - (md->sha3).capacity_words)" ( (binary_expression "(uint)uVar14 == 0x19 - (md->sha3).capacity_words" (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - (md->sha3).capacity_words" number_literal - (field_expression "(md->sha3).capacity_words" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier))) )) (compound_statement "{\n        keccakf((md->whirlpool).state);\n        (md->sha3).word_index = 0;\n      }" { (expression_statement "keccakf((md->whirlpool).state);" (call_expression "keccakf((md->whirlpool).state)" identifier (argument_list "((md->whirlpool).state)" ( (field_expression "(md->whirlpool).state" (parenthesized_expression "(md->whirlpool)" ( (field_expression "md->whirlpool" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "(md->sha3).word_index = 0;" (assignment_expression "(md->sha3).word_index = 0" (field_expression "(md->sha3).word_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) })) (expression_statement "in = (uchar *)((long)in + 0x20);" (assignment_expression "in = (uchar *)((long)in + 0x20)" identifier = (cast_expression "(uchar *)((long)in + 0x20)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)in + 0x20)" ( (binary_expression "(long)in + 0x20" (cast_expression "(long)in" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "((ulong *)in != puVar11)" ( (binary_expression "(ulong *)in != puVar11" (cast_expression "(ulong *)in" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != identifier) )) ;) })) (labeled_statement "LAB_00153b88:\n  if (uVar13 != 0) {\n    puVar1 = (ulong *)((long)puVar11 + (ulong)(uVar13 - 1) + 1);\n    uVar14 = (md->sha3).byte_index;\n    uVar9 = (uint)uVar14;\n    uVar7 = (uint)uVar14;\n    uVar8 = (uint)uVar14;\n    uVar10 = (md->chc).length;\n    uVar13 = uVar13 & 3;\n    puVar12 = puVar11;\n    if (uVar13 != 0) {\n      if (uVar13 != 1) {\n        if (uVar13 != 2) {\n          uVar3 = *puVar11;\n          puVar11 = (ulong *)((long)puVar11 + 1);\n          (md->sha3).byte_index = (ushort)(uVar14 + 1);\n          uVar8 = uVar14 + 1 & 0xffff;\n          uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar14 * '\b' & 0x3fU);\n          (md->chc).length = uVar10;\n        }\n        uVar3 = *puVar11;\n        uVar7 = uVar8 + 1;\n        puVar11 = (ulong *)((long)puVar11 + 1);\n        (md->sha3).byte_index = (ushort)uVar7;\n        uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar8 * '\b' & 0x3fU);\n        (md->chc).length = uVar10;\n      }\n      uVar3 = *puVar11;\n      uVar9 = uVar7 + 1;\n      (md->sha3).byte_index = (ushort)uVar9;\n      uVar10 = uVar10 | (ulong)(byte)uVar3 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      puVar12 = (ulong *)((long)puVar11 + 1);\n      if ((ulong *)((long)puVar11 + 1) == puVar1) {\n        return 0;\n      }\n    }\n    do {\n      uVar3 = *puVar12;\n      uVar13 = uVar9 + 1;\n      uVar7 = uVar9 + 3;\n      (md->sha3).byte_index = (ushort)uVar13;\n      puVar11 = (ulong *)((long)puVar12 + 4);\n      uVar10 = (ulong)(byte)uVar3 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f) | uVar10;\n      uVar8 = uVar9 + 2;\n      uVar9 = uVar9 + 4;\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 1);\n      (md->sha3).byte_index = (ushort)uVar8;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 2);\n      (md->sha3).byte_index = (ushort)uVar7;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar8 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 3);\n      (md->sha3).byte_index = (ushort)uVar9;\n      uVar10 = (ulong)bVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar10;\n      (md->chc).length = uVar10;\n      puVar12 = puVar11;\n    } while (puVar11 != puVar1);\n  }" statement_identifier : (if_statement "if (uVar13 != 0) {\n    puVar1 = (ulong *)((long)puVar11 + (ulong)(uVar13 - 1) + 1);\n    uVar14 = (md->sha3).byte_index;\n    uVar9 = (uint)uVar14;\n    uVar7 = (uint)uVar14;\n    uVar8 = (uint)uVar14;\n    uVar10 = (md->chc).length;\n    uVar13 = uVar13 & 3;\n    puVar12 = puVar11;\n    if (uVar13 != 0) {\n      if (uVar13 != 1) {\n        if (uVar13 != 2) {\n          uVar3 = *puVar11;\n          puVar11 = (ulong *)((long)puVar11 + 1);\n          (md->sha3).byte_index = (ushort)(uVar14 + 1);\n          uVar8 = uVar14 + 1 & 0xffff;\n          uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar14 * '\b' & 0x3fU);\n          (md->chc).length = uVar10;\n        }\n        uVar3 = *puVar11;\n        uVar7 = uVar8 + 1;\n        puVar11 = (ulong *)((long)puVar11 + 1);\n        (md->sha3).byte_index = (ushort)uVar7;\n        uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar8 * '\b' & 0x3fU);\n        (md->chc).length = uVar10;\n      }\n      uVar3 = *puVar11;\n      uVar9 = uVar7 + 1;\n      (md->sha3).byte_index = (ushort)uVar9;\n      uVar10 = uVar10 | (ulong)(byte)uVar3 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      puVar12 = (ulong *)((long)puVar11 + 1);\n      if ((ulong *)((long)puVar11 + 1) == puVar1) {\n        return 0;\n      }\n    }\n    do {\n      uVar3 = *puVar12;\n      uVar13 = uVar9 + 1;\n      uVar7 = uVar9 + 3;\n      (md->sha3).byte_index = (ushort)uVar13;\n      puVar11 = (ulong *)((long)puVar12 + 4);\n      uVar10 = (ulong)(byte)uVar3 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f) | uVar10;\n      uVar8 = uVar9 + 2;\n      uVar9 = uVar9 + 4;\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 1);\n      (md->sha3).byte_index = (ushort)uVar8;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 2);\n      (md->sha3).byte_index = (ushort)uVar7;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar8 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 3);\n      (md->sha3).byte_index = (ushort)uVar9;\n      uVar10 = (ulong)bVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar10;\n      (md->chc).length = uVar10;\n      puVar12 = puVar11;\n    } while (puVar11 != puVar1);\n  }" if (parenthesized_expression "(uVar13 != 0)" ( (binary_expression "uVar13 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar1 = (ulong *)((long)puVar11 + (ulong)(uVar13 - 1) + 1);\n    uVar14 = (md->sha3).byte_index;\n    uVar9 = (uint)uVar14;\n    uVar7 = (uint)uVar14;\n    uVar8 = (uint)uVar14;\n    uVar10 = (md->chc).length;\n    uVar13 = uVar13 & 3;\n    puVar12 = puVar11;\n    if (uVar13 != 0) {\n      if (uVar13 != 1) {\n        if (uVar13 != 2) {\n          uVar3 = *puVar11;\n          puVar11 = (ulong *)((long)puVar11 + 1);\n          (md->sha3).byte_index = (ushort)(uVar14 + 1);\n          uVar8 = uVar14 + 1 & 0xffff;\n          uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar14 * '\b' & 0x3fU);\n          (md->chc).length = uVar10;\n        }\n        uVar3 = *puVar11;\n        uVar7 = uVar8 + 1;\n        puVar11 = (ulong *)((long)puVar11 + 1);\n        (md->sha3).byte_index = (ushort)uVar7;\n        uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar8 * '\b' & 0x3fU);\n        (md->chc).length = uVar10;\n      }\n      uVar3 = *puVar11;\n      uVar9 = uVar7 + 1;\n      (md->sha3).byte_index = (ushort)uVar9;\n      uVar10 = uVar10 | (ulong)(byte)uVar3 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      puVar12 = (ulong *)((long)puVar11 + 1);\n      if ((ulong *)((long)puVar11 + 1) == puVar1) {\n        return 0;\n      }\n    }\n    do {\n      uVar3 = *puVar12;\n      uVar13 = uVar9 + 1;\n      uVar7 = uVar9 + 3;\n      (md->sha3).byte_index = (ushort)uVar13;\n      puVar11 = (ulong *)((long)puVar12 + 4);\n      uVar10 = (ulong)(byte)uVar3 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f) | uVar10;\n      uVar8 = uVar9 + 2;\n      uVar9 = uVar9 + 4;\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 1);\n      (md->sha3).byte_index = (ushort)uVar8;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 2);\n      (md->sha3).byte_index = (ushort)uVar7;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar8 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 3);\n      (md->sha3).byte_index = (ushort)uVar9;\n      uVar10 = (ulong)bVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar10;\n      (md->chc).length = uVar10;\n      puVar12 = puVar11;\n    } while (puVar11 != puVar1);\n  }" { (expression_statement "puVar1 = (ulong *)((long)puVar11 + (ulong)(uVar13 - 1) + 1);" (assignment_expression "puVar1 = (ulong *)((long)puVar11 + (ulong)(uVar13 - 1) + 1)" identifier = (cast_expression "(ulong *)((long)puVar11 + (ulong)(uVar13 - 1) + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar11 + (ulong)(uVar13 - 1) + 1)" ( (binary_expression "(long)puVar11 + (ulong)(uVar13 - 1) + 1" (binary_expression "(long)puVar11 + (ulong)(uVar13 - 1)" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (call_expression "(ulong)(uVar13 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar13 - 1)" ( (binary_expression "uVar13 - 1" identifier - number_literal) )))) + number_literal) )))) ;) (expression_statement "uVar14 = (md->sha3).byte_index;" (assignment_expression "uVar14 = (md->sha3).byte_index" identifier = (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar9 = (uint)uVar14;" (assignment_expression "uVar9 = (uint)uVar14" identifier = (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar7 = (uint)uVar14;" (assignment_expression "uVar7 = (uint)uVar14" identifier = (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = (uint)uVar14;" (assignment_expression "uVar8 = (uint)uVar14" identifier = (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = (md->chc).length;" (assignment_expression "uVar10 = (md->chc).length" identifier = (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar13 = uVar13 & 3;" (assignment_expression "uVar13 = uVar13 & 3" identifier = (binary_expression "uVar13 & 3" identifier & number_literal)) ;) (expression_statement "puVar12 = puVar11;" (assignment_expression "puVar12 = puVar11" identifier = identifier) ;) (if_statement "if (uVar13 != 0) {\n      if (uVar13 != 1) {\n        if (uVar13 != 2) {\n          uVar3 = *puVar11;\n          puVar11 = (ulong *)((long)puVar11 + 1);\n          (md->sha3).byte_index = (ushort)(uVar14 + 1);\n          uVar8 = uVar14 + 1 & 0xffff;\n          uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar14 * '\b' & 0x3fU);\n          (md->chc).length = uVar10;\n        }\n        uVar3 = *puVar11;\n        uVar7 = uVar8 + 1;\n        puVar11 = (ulong *)((long)puVar11 + 1);\n        (md->sha3).byte_index = (ushort)uVar7;\n        uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar8 * '\b' & 0x3fU);\n        (md->chc).length = uVar10;\n      }\n      uVar3 = *puVar11;\n      uVar9 = uVar7 + 1;\n      (md->sha3).byte_index = (ushort)uVar9;\n      uVar10 = uVar10 | (ulong)(byte)uVar3 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      puVar12 = (ulong *)((long)puVar11 + 1);\n      if ((ulong *)((long)puVar11 + 1) == puVar1) {\n        return 0;\n      }\n    }" if (parenthesized_expression "(uVar13 != 0)" ( (binary_expression "uVar13 != 0" identifier != number_literal) )) (compound_statement "{\n      if (uVar13 != 1) {\n        if (uVar13 != 2) {\n          uVar3 = *puVar11;\n          puVar11 = (ulong *)((long)puVar11 + 1);\n          (md->sha3).byte_index = (ushort)(uVar14 + 1);\n          uVar8 = uVar14 + 1 & 0xffff;\n          uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar14 * '\b' & 0x3fU);\n          (md->chc).length = uVar10;\n        }\n        uVar3 = *puVar11;\n        uVar7 = uVar8 + 1;\n        puVar11 = (ulong *)((long)puVar11 + 1);\n        (md->sha3).byte_index = (ushort)uVar7;\n        uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar8 * '\b' & 0x3fU);\n        (md->chc).length = uVar10;\n      }\n      uVar3 = *puVar11;\n      uVar9 = uVar7 + 1;\n      (md->sha3).byte_index = (ushort)uVar9;\n      uVar10 = uVar10 | (ulong)(byte)uVar3 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      puVar12 = (ulong *)((long)puVar11 + 1);\n      if ((ulong *)((long)puVar11 + 1) == puVar1) {\n        return 0;\n      }\n    }" { (if_statement "if (uVar13 != 1) {\n        if (uVar13 != 2) {\n          uVar3 = *puVar11;\n          puVar11 = (ulong *)((long)puVar11 + 1);\n          (md->sha3).byte_index = (ushort)(uVar14 + 1);\n          uVar8 = uVar14 + 1 & 0xffff;\n          uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar14 * '\b' & 0x3fU);\n          (md->chc).length = uVar10;\n        }\n        uVar3 = *puVar11;\n        uVar7 = uVar8 + 1;\n        puVar11 = (ulong *)((long)puVar11 + 1);\n        (md->sha3).byte_index = (ushort)uVar7;\n        uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar8 * '\b' & 0x3fU);\n        (md->chc).length = uVar10;\n      }" if (parenthesized_expression "(uVar13 != 1)" ( (binary_expression "uVar13 != 1" identifier != number_literal) )) (compound_statement "{\n        if (uVar13 != 2) {\n          uVar3 = *puVar11;\n          puVar11 = (ulong *)((long)puVar11 + 1);\n          (md->sha3).byte_index = (ushort)(uVar14 + 1);\n          uVar8 = uVar14 + 1 & 0xffff;\n          uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar14 * '\b' & 0x3fU);\n          (md->chc).length = uVar10;\n        }\n        uVar3 = *puVar11;\n        uVar7 = uVar8 + 1;\n        puVar11 = (ulong *)((long)puVar11 + 1);\n        (md->sha3).byte_index = (ushort)uVar7;\n        uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar8 * '\b' & 0x3fU);\n        (md->chc).length = uVar10;\n      }" { (if_statement "if (uVar13 != 2) {\n          uVar3 = *puVar11;\n          puVar11 = (ulong *)((long)puVar11 + 1);\n          (md->sha3).byte_index = (ushort)(uVar14 + 1);\n          uVar8 = uVar14 + 1 & 0xffff;\n          uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar14 * '\b' & 0x3fU);\n          (md->chc).length = uVar10;\n        }" if (parenthesized_expression "(uVar13 != 2)" ( (binary_expression "uVar13 != 2" identifier != number_literal) )) (compound_statement "{\n          uVar3 = *puVar11;\n          puVar11 = (ulong *)((long)puVar11 + 1);\n          (md->sha3).byte_index = (ushort)(uVar14 + 1);\n          uVar8 = uVar14 + 1 & 0xffff;\n          uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar14 * '\b' & 0x3fU);\n          (md->chc).length = uVar10;\n        }" { (expression_statement "uVar3 = *puVar11;" (assignment_expression "uVar3 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "puVar11 = (ulong *)((long)puVar11 + 1);" (assignment_expression "puVar11 = (ulong *)((long)puVar11 + 1)" identifier = (cast_expression "(ulong *)((long)puVar11 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar11 + 1)" ( (binary_expression "(long)puVar11 + 1" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "(md->sha3).byte_index = (ushort)(uVar14 + 1);" (assignment_expression "(md->sha3).byte_index = (ushort)(uVar14 + 1)" (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = (call_expression "(ushort)(uVar14 + 1)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar14 + 1)" ( (binary_expression "uVar14 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar8 = uVar14 + 1 & 0xffff;" (assignment_expression "uVar8 = uVar14 + 1 & 0xffff" identifier = (binary_expression "uVar14 + 1 & 0xffff" (binary_expression "uVar14 + 1" identifier + number_literal) & number_literal)) ;) (expression_statement "uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar14 * '\b' & 0x3fU);" (assignment_expression "uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar14 * '\b' & 0x3fU)" identifier = (binary_expression "uVar10 | (ulong)(byte)uVar3 << ((char)uVar14 * '\b' & 0x3fU)" identifier | (binary_expression "(ulong)(byte)uVar3 << ((char)uVar14 * '\b' & 0x3fU)" (cast_expression "(ulong)(byte)uVar3" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier)) << (parenthesized_expression "((char)uVar14 * '\b' & 0x3fU)" ( (binary_expression "(char)uVar14 * '\b' & 0x3fU" (binary_expression "(char)uVar14 * '\b'" (cast_expression "(char)uVar14" ( (type_descriptor "char" primitive_type) ) identifier) * (char_literal "'\b'" ' escape_sequence ')) & number_literal) ))))) ;) (expression_statement "(md->chc).length = uVar10;" (assignment_expression "(md->chc).length = uVar10" (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier) = identifier) ;) })) (expression_statement "uVar3 = *puVar11;" (assignment_expression "uVar3 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "uVar7 = uVar8 + 1;" (assignment_expression "uVar7 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (expression_statement "puVar11 = (ulong *)((long)puVar11 + 1);" (assignment_expression "puVar11 = (ulong *)((long)puVar11 + 1)" identifier = (cast_expression "(ulong *)((long)puVar11 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar11 + 1)" ( (binary_expression "(long)puVar11 + 1" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "(md->sha3).byte_index = (ushort)uVar7;" (assignment_expression "(md->sha3).byte_index = (ushort)uVar7" (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(ushort)uVar7" ( (type_descriptor "ushort" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar8 * '\b' & 0x3fU);" (assignment_expression "uVar10 = uVar10 | (ulong)(byte)uVar3 << ((char)uVar8 * '\b' & 0x3fU)" identifier = (binary_expression "uVar10 | (ulong)(byte)uVar3 << ((char)uVar8 * '\b' & 0x3fU)" identifier | (binary_expression "(ulong)(byte)uVar3 << ((char)uVar8 * '\b' & 0x3fU)" (cast_expression "(ulong)(byte)uVar3" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier)) << (parenthesized_expression "((char)uVar8 * '\b' & 0x3fU)" ( (binary_expression "(char)uVar8 * '\b' & 0x3fU" (binary_expression "(char)uVar8 * '\b'" (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier) * (char_literal "'\b'" ' escape_sequence ')) & number_literal) ))))) ;) (expression_statement "(md->chc).length = uVar10;" (assignment_expression "(md->chc).length = uVar10" (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier) = identifier) ;) })) (expression_statement "uVar3 = *puVar11;" (assignment_expression "uVar3 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "uVar9 = uVar7 + 1;" (assignment_expression "uVar9 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "(md->sha3).byte_index = (ushort)uVar9;" (assignment_expression "(md->sha3).byte_index = (ushort)uVar9" (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(ushort)uVar9" ( (type_descriptor "ushort" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = uVar10 | (ulong)(byte)uVar3 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar10 = uVar10 | (ulong)(byte)uVar3 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar10 | (ulong)(byte)uVar3 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)(byte)uVar3 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)(byte)uVar3" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier)) << (parenthesized_expression "((byte)((uVar7 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar7 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar7 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar7 & 0xffff) << 3)" ( (binary_expression "(uVar7 & 0xffff) << 3" (parenthesized_expression "(uVar7 & 0xffff)" ( (binary_expression "uVar7 & 0xffff" identifier & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "(md->chc).length = uVar10;" (assignment_expression "(md->chc).length = uVar10" (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "puVar12 = (ulong *)((long)puVar11 + 1);" (assignment_expression "puVar12 = (ulong *)((long)puVar11 + 1)" identifier = (cast_expression "(ulong *)((long)puVar11 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar11 + 1)" ( (binary_expression "(long)puVar11 + 1" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (if_statement "if ((ulong *)((long)puVar11 + 1) == puVar1) {\n        return 0;\n      }" if (parenthesized_expression "((ulong *)((long)puVar11 + 1) == puVar1)" ( (binary_expression "(ulong *)((long)puVar11 + 1) == puVar1" (cast_expression "(ulong *)((long)puVar11 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar11 + 1)" ( (binary_expression "(long)puVar11 + 1" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))) == identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) })) (do_statement "do {\n      uVar3 = *puVar12;\n      uVar13 = uVar9 + 1;\n      uVar7 = uVar9 + 3;\n      (md->sha3).byte_index = (ushort)uVar13;\n      puVar11 = (ulong *)((long)puVar12 + 4);\n      uVar10 = (ulong)(byte)uVar3 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f) | uVar10;\n      uVar8 = uVar9 + 2;\n      uVar9 = uVar9 + 4;\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 1);\n      (md->sha3).byte_index = (ushort)uVar8;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 2);\n      (md->sha3).byte_index = (ushort)uVar7;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar8 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 3);\n      (md->sha3).byte_index = (ushort)uVar9;\n      uVar10 = (ulong)bVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar10;\n      (md->chc).length = uVar10;\n      puVar12 = puVar11;\n    } while (puVar11 != puVar1);" do (compound_statement "{\n      uVar3 = *puVar12;\n      uVar13 = uVar9 + 1;\n      uVar7 = uVar9 + 3;\n      (md->sha3).byte_index = (ushort)uVar13;\n      puVar11 = (ulong *)((long)puVar12 + 4);\n      uVar10 = (ulong)(byte)uVar3 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f) | uVar10;\n      uVar8 = uVar9 + 2;\n      uVar9 = uVar9 + 4;\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 1);\n      (md->sha3).byte_index = (ushort)uVar8;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 2);\n      (md->sha3).byte_index = (ushort)uVar7;\n      uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar8 & 0xffff) << 3) & 0x3f);\n      (md->chc).length = uVar10;\n      bVar2 = *(byte *)((long)puVar12 + 3);\n      (md->sha3).byte_index = (ushort)uVar9;\n      uVar10 = (ulong)bVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar10;\n      (md->chc).length = uVar10;\n      puVar12 = puVar11;\n    }" { (expression_statement "uVar3 = *puVar12;" (assignment_expression "uVar3 = *puVar12" identifier = (pointer_expression "*puVar12" * identifier)) ;) (expression_statement "uVar13 = uVar9 + 1;" (assignment_expression "uVar13 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = uVar9 + 3;" (assignment_expression "uVar7 = uVar9 + 3" identifier = (binary_expression "uVar9 + 3" identifier + number_literal)) ;) (expression_statement "(md->sha3).byte_index = (ushort)uVar13;" (assignment_expression "(md->sha3).byte_index = (ushort)uVar13" (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(ushort)uVar13" ( (type_descriptor "ushort" type_identifier) ) identifier)) ;) (expression_statement "puVar11 = (ulong *)((long)puVar12 + 4);" (assignment_expression "puVar11 = (ulong *)((long)puVar12 + 4)" identifier = (cast_expression "(ulong *)((long)puVar12 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar12 + 4)" ( (binary_expression "(long)puVar12 + 4" (cast_expression "(long)puVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "uVar10 = (ulong)(byte)uVar3 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f) | uVar10;" (assignment_expression "uVar10 = (ulong)(byte)uVar3 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f) | uVar10" identifier = (binary_expression "(ulong)(byte)uVar3 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f) | uVar10" (binary_expression "(ulong)(byte)uVar3 << ((byte)((uVar9 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)(byte)uVar3" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier)) << (parenthesized_expression "((byte)((uVar9 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar9 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar9 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar9 & 0xffff) << 3)" ( (binary_expression "(uVar9 & 0xffff) << 3" (parenthesized_expression "(uVar9 & 0xffff)" ( (binary_expression "uVar9 & 0xffff" identifier & number_literal) )) << number_literal) ))) & number_literal) ))) | identifier)) ;) (expression_statement "uVar8 = uVar9 + 2;" (assignment_expression "uVar8 = uVar9 + 2" identifier = (binary_expression "uVar9 + 2" identifier + number_literal)) ;) (expression_statement "uVar9 = uVar9 + 4;" (assignment_expression "uVar9 = uVar9 + 4" identifier = (binary_expression "uVar9 + 4" identifier + number_literal)) ;) (expression_statement "(md->chc).length = uVar10;" (assignment_expression "(md->chc).length = uVar10" (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "bVar2 = *(byte *)((long)puVar12 + 1);" (assignment_expression "bVar2 = *(byte *)((long)puVar12 + 1)" identifier = (pointer_expression "*(byte *)((long)puVar12 + 1)" * (cast_expression "(byte *)((long)puVar12 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar12 + 1)" ( (binary_expression "(long)puVar12 + 1" (cast_expression "(long)puVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "(md->sha3).byte_index = (ushort)uVar8;" (assignment_expression "(md->sha3).byte_index = (ushort)uVar8" (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(ushort)uVar8" ( (type_descriptor "ushort" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar10 | (ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar2 << ((byte)((uVar13 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar13 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar13 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar13 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar13 & 0xffff) << 3)" ( (binary_expression "(uVar13 & 0xffff) << 3" (parenthesized_expression "(uVar13 & 0xffff)" ( (binary_expression "uVar13 & 0xffff" identifier & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "(md->chc).length = uVar10;" (assignment_expression "(md->chc).length = uVar10" (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "bVar2 = *(byte *)((long)puVar12 + 2);" (assignment_expression "bVar2 = *(byte *)((long)puVar12 + 2)" identifier = (pointer_expression "*(byte *)((long)puVar12 + 2)" * (cast_expression "(byte *)((long)puVar12 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar12 + 2)" ( (binary_expression "(long)puVar12 + 2" (cast_expression "(long)puVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "(md->sha3).byte_index = (ushort)uVar7;" (assignment_expression "(md->sha3).byte_index = (ushort)uVar7" (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(ushort)uVar7" ( (type_descriptor "ushort" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar8 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar10 = uVar10 | (ulong)bVar2 << ((byte)((uVar8 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar10 | (ulong)bVar2 << ((byte)((uVar8 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar2 << ((byte)((uVar8 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar8 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar8 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar8 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar8 & 0xffff) << 3)" ( (binary_expression "(uVar8 & 0xffff) << 3" (parenthesized_expression "(uVar8 & 0xffff)" ( (binary_expression "uVar8 & 0xffff" identifier & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "(md->chc).length = uVar10;" (assignment_expression "(md->chc).length = uVar10" (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "bVar2 = *(byte *)((long)puVar12 + 3);" (assignment_expression "bVar2 = *(byte *)((long)puVar12 + 3)" identifier = (pointer_expression "*(byte *)((long)puVar12 + 3)" * (cast_expression "(byte *)((long)puVar12 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar12 + 3)" ( (binary_expression "(long)puVar12 + 3" (cast_expression "(long)puVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "(md->sha3).byte_index = (ushort)uVar9;" (assignment_expression "(md->sha3).byte_index = (ushort)uVar9" (field_expression "(md->sha3).byte_index" (parenthesized_expression "(md->sha3)" ( (field_expression "md->sha3" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(ushort)uVar9" ( (type_descriptor "ushort" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = (ulong)bVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar10;" (assignment_expression "uVar10 = (ulong)bVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar10" identifier = (binary_expression "(ulong)bVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar10" (binary_expression "(ulong)bVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar7 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar7 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar7 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar7 & 0xffff) << 3)" ( (binary_expression "(uVar7 & 0xffff) << 3" (parenthesized_expression "(uVar7 & 0xffff)" ( (binary_expression "uVar7 & 0xffff" identifier & number_literal) )) << number_literal) ))) & number_literal) ))) | identifier)) ;) (expression_statement "(md->chc).length = uVar10;" (assignment_expression "(md->chc).length = uVar10" (field_expression "(md->chc).length" (parenthesized_expression "(md->chc)" ( (field_expression "md->chc" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "puVar12 = puVar11;" (assignment_expression "puVar12 = puVar11" identifier = identifier) ;) }) while (parenthesized_expression "(puVar11 != puVar1)" ( (binary_expression "puVar11 != puVar1" identifier != identifier) )) ;) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "undefined8 sha3_process(ulong *param_1,ulong *param_2,ulong param_3)\n\n{\n  byte bVar1;\n  ulong uVar2;\n  int iVar3;\n  ulong *puVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  ulong uVar8;\n  ulong *puVar9;\n  ulong *puVar10;\n  uint uVar11;\n  ushort uVar12;\n  \n  if (param_3 == 0) {\n    return 0;\n  }\n  if (param_2 == (ulong *)0x0) {\n                    \n    crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);\n  }\n  uVar12 = (ushort)param_1[0x33];\n  uVar6 = (uint)uVar12;\n  uVar11 = (uint)uVar12;\n  uVar5 = -uVar11 & 7;\n  if (param_3 < uVar5) {\n    uVar8 = *param_1;\n    uVar7 = ~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3;\n    puVar9 = param_2;\n    uVar5 = uVar11;\n    if (uVar7 == 0) goto LAB_00153dc2;\n    puVar9 = (ulong *)((long)param_2 + 1);\n    uVar2 = *param_2;\n    uVar5 = uVar11 + 1;\n    *(short *)(param_1 + 0x33) = (short)uVar5;\n    uVar6 = uVar5 & 0xffff;\n    uVar8 = uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3);\n    *param_1 = uVar8;\n    if (uVar7 == 1) goto LAB_00153dc2;\n    if (uVar7 != 2) {\n      bVar1 = *(byte *)puVar9;\n      iVar3 = uVar6 << 3;\n      uVar5 = uVar11 + 2;\n      puVar9 = (ulong *)((long)param_2 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n    }\n    puVar4 = (ulong *)((long)puVar9 + 1);\n    bVar1 = (byte)*puVar9;\n    uVar5 = uVar5 + 1;\n    while( true ) {\n      iVar3 = uVar6 << 3;\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n      puVar9 = puVar4;\nLAB_00153dc2:\n      uVar2 = *puVar9;\n      uVar11 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);\n      *param_1 = uVar8;\n      if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;\n      bVar1 = *(byte *)((long)puVar9 + 1);\n      uVar7 = uVar5 + 2;\n      uVar6 = uVar5 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      puVar4 = (ulong *)((long)puVar9 + 4);\n      uVar5 = uVar5 + 4;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar6 = uVar6 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 3);\n    }\n    return 0;\n  }\n  if (uVar5 != 0) {\n    uVar8 = *param_2;\n    param_3 = param_3 - uVar5;\n    *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n    uVar8 = (ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1;\n    *param_1 = uVar8;\n    if (uVar5 - 1 != 0) {\n      bVar1 = *(byte *)((long)param_2 + 1);\n      *(short *)(param_1 + 0x33) = (short)(uVar11 + 2);\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }\n    }\n    uVar12 = *(ushort *)((long)param_1 + 0x19a);\n    param_2 = (ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1);\n    param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ uVar8;\n    uVar12 = uVar12 + 1;\n    *(undefined2 *)(param_1 + 0x33) = 0;\n    *param_1 = 0;\n    *(ushort *)((long)param_1 + 0x19a) = uVar12;\n    if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n      FUN_001534a0(param_1 + 1);\n      *(undefined2 *)((long)param_1 + 0x19a) = 0;\n    }\n  }\n  uVar8 = param_3 >> 3;\n  uVar11 = (int)param_3 + (int)uVar8 * -8;\n  puVar9 = param_2;\n  if (uVar8 != 0) {\n    puVar9 = param_2 + uVar8;\n    uVar6 = (int)(uVar8 * 8 - 8 >> 3) + 1U & 3;\n    if (uVar6 != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 1;\n      if (param_2 == puVar9) goto LAB_00153b88;\n    }\n    do {\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 4;\n    } while (param_2 != puVar9);\n  }\nLAB_00153b88:\n  if (uVar11 != 0) {\n    puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1);\n    uVar12 = (ushort)param_1[0x33];\n    uVar7 = (uint)uVar12;\n    uVar5 = (uint)uVar12;\n    uVar6 = (uint)uVar12;\n    uVar8 = *param_1;\n    uVar11 = uVar11 & 3;\n    puVar10 = puVar9;\n    if (uVar11 != 0) {\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }\n    do {\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar4);\n  }\n  return 0;\n}\n\n" (function_definition "undefined8 sha3_process(ulong *param_1,ulong *param_2,ulong param_3)\n\n{\n  byte bVar1;\n  ulong uVar2;\n  int iVar3;\n  ulong *puVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  ulong uVar8;\n  ulong *puVar9;\n  ulong *puVar10;\n  uint uVar11;\n  ushort uVar12;\n  \n  if (param_3 == 0) {\n    return 0;\n  }\n  if (param_2 == (ulong *)0x0) {\n                    \n    crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);\n  }\n  uVar12 = (ushort)param_1[0x33];\n  uVar6 = (uint)uVar12;\n  uVar11 = (uint)uVar12;\n  uVar5 = -uVar11 & 7;\n  if (param_3 < uVar5) {\n    uVar8 = *param_1;\n    uVar7 = ~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3;\n    puVar9 = param_2;\n    uVar5 = uVar11;\n    if (uVar7 == 0) goto LAB_00153dc2;\n    puVar9 = (ulong *)((long)param_2 + 1);\n    uVar2 = *param_2;\n    uVar5 = uVar11 + 1;\n    *(short *)(param_1 + 0x33) = (short)uVar5;\n    uVar6 = uVar5 & 0xffff;\n    uVar8 = uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3);\n    *param_1 = uVar8;\n    if (uVar7 == 1) goto LAB_00153dc2;\n    if (uVar7 != 2) {\n      bVar1 = *(byte *)puVar9;\n      iVar3 = uVar6 << 3;\n      uVar5 = uVar11 + 2;\n      puVar9 = (ulong *)((long)param_2 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n    }\n    puVar4 = (ulong *)((long)puVar9 + 1);\n    bVar1 = (byte)*puVar9;\n    uVar5 = uVar5 + 1;\n    while( true ) {\n      iVar3 = uVar6 << 3;\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n      puVar9 = puVar4;\nLAB_00153dc2:\n      uVar2 = *puVar9;\n      uVar11 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);\n      *param_1 = uVar8;\n      if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;\n      bVar1 = *(byte *)((long)puVar9 + 1);\n      uVar7 = uVar5 + 2;\n      uVar6 = uVar5 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      puVar4 = (ulong *)((long)puVar9 + 4);\n      uVar5 = uVar5 + 4;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar6 = uVar6 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 3);\n    }\n    return 0;\n  }\n  if (uVar5 != 0) {\n    uVar8 = *param_2;\n    param_3 = param_3 - uVar5;\n    *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n    uVar8 = (ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1;\n    *param_1 = uVar8;\n    if (uVar5 - 1 != 0) {\n      bVar1 = *(byte *)((long)param_2 + 1);\n      *(short *)(param_1 + 0x33) = (short)(uVar11 + 2);\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }\n    }\n    uVar12 = *(ushort *)((long)param_1 + 0x19a);\n    param_2 = (ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1);\n    param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ uVar8;\n    uVar12 = uVar12 + 1;\n    *(undefined2 *)(param_1 + 0x33) = 0;\n    *param_1 = 0;\n    *(ushort *)((long)param_1 + 0x19a) = uVar12;\n    if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n      FUN_001534a0(param_1 + 1);\n      *(undefined2 *)((long)param_1 + 0x19a) = 0;\n    }\n  }\n  uVar8 = param_3 >> 3;\n  uVar11 = (int)param_3 + (int)uVar8 * -8;\n  puVar9 = param_2;\n  if (uVar8 != 0) {\n    puVar9 = param_2 + uVar8;\n    uVar6 = (int)(uVar8 * 8 - 8 >> 3) + 1U & 3;\n    if (uVar6 != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 1;\n      if (param_2 == puVar9) goto LAB_00153b88;\n    }\n    do {\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 4;\n    } while (param_2 != puVar9);\n  }\nLAB_00153b88:\n  if (uVar11 != 0) {\n    puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1);\n    uVar12 = (ushort)param_1[0x33];\n    uVar7 = (uint)uVar12;\n    uVar5 = (uint)uVar12;\n    uVar6 = (uint)uVar12;\n    uVar8 = *param_1;\n    uVar11 = uVar11 & 3;\n    puVar10 = puVar9;\n    if (uVar11 != 0) {\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }\n    do {\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar4);\n  }\n  return 0;\n}" type_identifier (function_declarator "sha3_process(ulong *param_1,ulong *param_2,ulong param_3)" identifier (parameter_list "(ulong *param_1,ulong *param_2,ulong param_3)" ( (parameter_declaration "ulong *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "ulong param_3" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  ulong uVar2;\n  int iVar3;\n  ulong *puVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  ulong uVar8;\n  ulong *puVar9;\n  ulong *puVar10;\n  uint uVar11;\n  ushort uVar12;\n  \n  if (param_3 == 0) {\n    return 0;\n  }\n  if (param_2 == (ulong *)0x0) {\n                    \n    crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);\n  }\n  uVar12 = (ushort)param_1[0x33];\n  uVar6 = (uint)uVar12;\n  uVar11 = (uint)uVar12;\n  uVar5 = -uVar11 & 7;\n  if (param_3 < uVar5) {\n    uVar8 = *param_1;\n    uVar7 = ~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3;\n    puVar9 = param_2;\n    uVar5 = uVar11;\n    if (uVar7 == 0) goto LAB_00153dc2;\n    puVar9 = (ulong *)((long)param_2 + 1);\n    uVar2 = *param_2;\n    uVar5 = uVar11 + 1;\n    *(short *)(param_1 + 0x33) = (short)uVar5;\n    uVar6 = uVar5 & 0xffff;\n    uVar8 = uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3);\n    *param_1 = uVar8;\n    if (uVar7 == 1) goto LAB_00153dc2;\n    if (uVar7 != 2) {\n      bVar1 = *(byte *)puVar9;\n      iVar3 = uVar6 << 3;\n      uVar5 = uVar11 + 2;\n      puVar9 = (ulong *)((long)param_2 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n    }\n    puVar4 = (ulong *)((long)puVar9 + 1);\n    bVar1 = (byte)*puVar9;\n    uVar5 = uVar5 + 1;\n    while( true ) {\n      iVar3 = uVar6 << 3;\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n      puVar9 = puVar4;\nLAB_00153dc2:\n      uVar2 = *puVar9;\n      uVar11 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);\n      *param_1 = uVar8;\n      if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;\n      bVar1 = *(byte *)((long)puVar9 + 1);\n      uVar7 = uVar5 + 2;\n      uVar6 = uVar5 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      puVar4 = (ulong *)((long)puVar9 + 4);\n      uVar5 = uVar5 + 4;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar6 = uVar6 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 3);\n    }\n    return 0;\n  }\n  if (uVar5 != 0) {\n    uVar8 = *param_2;\n    param_3 = param_3 - uVar5;\n    *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n    uVar8 = (ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1;\n    *param_1 = uVar8;\n    if (uVar5 - 1 != 0) {\n      bVar1 = *(byte *)((long)param_2 + 1);\n      *(short *)(param_1 + 0x33) = (short)(uVar11 + 2);\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }\n    }\n    uVar12 = *(ushort *)((long)param_1 + 0x19a);\n    param_2 = (ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1);\n    param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ uVar8;\n    uVar12 = uVar12 + 1;\n    *(undefined2 *)(param_1 + 0x33) = 0;\n    *param_1 = 0;\n    *(ushort *)((long)param_1 + 0x19a) = uVar12;\n    if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n      FUN_001534a0(param_1 + 1);\n      *(undefined2 *)((long)param_1 + 0x19a) = 0;\n    }\n  }\n  uVar8 = param_3 >> 3;\n  uVar11 = (int)param_3 + (int)uVar8 * -8;\n  puVar9 = param_2;\n  if (uVar8 != 0) {\n    puVar9 = param_2 + uVar8;\n    uVar6 = (int)(uVar8 * 8 - 8 >> 3) + 1U & 3;\n    if (uVar6 != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 1;\n      if (param_2 == puVar9) goto LAB_00153b88;\n    }\n    do {\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 4;\n    } while (param_2 != puVar9);\n  }\nLAB_00153b88:\n  if (uVar11 != 0) {\n    puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1);\n    uVar12 = (ushort)param_1[0x33];\n    uVar7 = (uint)uVar12;\n    uVar5 = (uint)uVar12;\n    uVar6 = (uint)uVar12;\n    uVar8 = *param_1;\n    uVar11 = uVar11 & 3;\n    puVar10 = puVar9;\n    if (uVar11 != 0) {\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }\n    do {\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar4);\n  }\n  return 0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "ulong *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "ulong *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "ulong *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "ushort uVar12;" type_identifier identifier ;) (if_statement "if (param_3 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (param_2 == (ulong *)0x0) {\n                    \n    crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);\n  }" if (parenthesized_expression "(param_2 == (ulong *)0x0)" ( (binary_expression "param_2 == (ulong *)0x0" identifier == (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n    crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);\n  }" { (expression_statement "crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);" (call_expression "crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf)" identifier (argument_list "("in != NULL","src/hashes/sha3.c",0xbf)" ( (string_literal ""in != NULL"" " string_content ") , (string_literal ""src/hashes/sha3.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "uVar12 = (ushort)param_1[0x33];" (assignment_expression "uVar12 = (ushort)param_1[0x33]" identifier = (cast_expression "(ushort)param_1[0x33]" ( (type_descriptor "ushort" type_identifier) ) (subscript_expression "param_1[0x33]" identifier [ number_literal ]))) ;) (expression_statement "uVar6 = (uint)uVar12;" (assignment_expression "uVar6 = (uint)uVar12" identifier = (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar11 = (uint)uVar12;" (assignment_expression "uVar11 = (uint)uVar12" identifier = (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar5 = -uVar11 & 7;" (assignment_expression "uVar5 = -uVar11 & 7" identifier = (binary_expression "-uVar11 & 7" (unary_expression "-uVar11" - identifier) & number_literal)) ;) (if_statement "if (param_3 < uVar5) {\n    uVar8 = *param_1;\n    uVar7 = ~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3;\n    puVar9 = param_2;\n    uVar5 = uVar11;\n    if (uVar7 == 0) goto LAB_00153dc2;\n    puVar9 = (ulong *)((long)param_2 + 1);\n    uVar2 = *param_2;\n    uVar5 = uVar11 + 1;\n    *(short *)(param_1 + 0x33) = (short)uVar5;\n    uVar6 = uVar5 & 0xffff;\n    uVar8 = uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3);\n    *param_1 = uVar8;\n    if (uVar7 == 1) goto LAB_00153dc2;\n    if (uVar7 != 2) {\n      bVar1 = *(byte *)puVar9;\n      iVar3 = uVar6 << 3;\n      uVar5 = uVar11 + 2;\n      puVar9 = (ulong *)((long)param_2 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n    }\n    puVar4 = (ulong *)((long)puVar9 + 1);\n    bVar1 = (byte)*puVar9;\n    uVar5 = uVar5 + 1;\n    while( true ) {\n      iVar3 = uVar6 << 3;\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n      puVar9 = puVar4;\nLAB_00153dc2:\n      uVar2 = *puVar9;\n      uVar11 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);\n      *param_1 = uVar8;\n      if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;\n      bVar1 = *(byte *)((long)puVar9 + 1);\n      uVar7 = uVar5 + 2;\n      uVar6 = uVar5 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      puVar4 = (ulong *)((long)puVar9 + 4);\n      uVar5 = uVar5 + 4;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar6 = uVar6 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 3);\n    }\n    return 0;\n  }" if (parenthesized_expression "(param_3 < uVar5)" ( (binary_expression "param_3 < uVar5" identifier < identifier) )) (compound_statement "{\n    uVar8 = *param_1;\n    uVar7 = ~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3;\n    puVar9 = param_2;\n    uVar5 = uVar11;\n    if (uVar7 == 0) goto LAB_00153dc2;\n    puVar9 = (ulong *)((long)param_2 + 1);\n    uVar2 = *param_2;\n    uVar5 = uVar11 + 1;\n    *(short *)(param_1 + 0x33) = (short)uVar5;\n    uVar6 = uVar5 & 0xffff;\n    uVar8 = uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3);\n    *param_1 = uVar8;\n    if (uVar7 == 1) goto LAB_00153dc2;\n    if (uVar7 != 2) {\n      bVar1 = *(byte *)puVar9;\n      iVar3 = uVar6 << 3;\n      uVar5 = uVar11 + 2;\n      puVar9 = (ulong *)((long)param_2 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n    }\n    puVar4 = (ulong *)((long)puVar9 + 1);\n    bVar1 = (byte)*puVar9;\n    uVar5 = uVar5 + 1;\n    while( true ) {\n      iVar3 = uVar6 << 3;\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n      puVar9 = puVar4;\nLAB_00153dc2:\n      uVar2 = *puVar9;\n      uVar11 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);\n      *param_1 = uVar8;\n      if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;\n      bVar1 = *(byte *)((long)puVar9 + 1);\n      uVar7 = uVar5 + 2;\n      uVar6 = uVar5 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      puVar4 = (ulong *)((long)puVar9 + 4);\n      uVar5 = uVar5 + 4;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar6 = uVar6 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 3);\n    }\n    return 0;\n  }" { (expression_statement "uVar8 = *param_1;" (assignment_expression "uVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar7 = ~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3;" (assignment_expression "uVar7 = ~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3" identifier = (binary_expression "~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3" (binary_expression "~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2)" (unary_expression "~(uint)param_2" ~ (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier)) + (cast_expression "(int)(byte *)(param_3 + (long)param_2)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(byte *)(param_3 + (long)param_2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + (long)param_2)" ( (binary_expression "param_3 + (long)param_2" identifier + (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))))) & number_literal)) ;) (expression_statement "puVar9 = param_2;" (assignment_expression "puVar9 = param_2" identifier = identifier) ;) (expression_statement "uVar5 = uVar11;" (assignment_expression "uVar5 = uVar11" identifier = identifier) ;) (if_statement "if (uVar7 == 0) goto LAB_00153dc2;" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00153dc2;" goto statement_identifier ;)) (expression_statement "puVar9 = (ulong *)((long)param_2 + 1);" (assignment_expression "puVar9 = (ulong *)((long)param_2 + 1)" identifier = (cast_expression "(ulong *)((long)param_2 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 1)" ( (binary_expression "(long)param_2 + 1" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar5 = uVar11 + 1;" (assignment_expression "uVar5 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar5;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar5" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar5" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar6 = uVar5 & 0xffff;" (assignment_expression "uVar6 = uVar5 & 0xffff" identifier = (binary_expression "uVar5 & 0xffff" identifier & number_literal)) ;) (expression_statement "uVar8 = uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3);" (assignment_expression "uVar8 = uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3)" identifier = (binary_expression "uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3)" identifier | (binary_expression "(ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3)" (cast_expression "(ulong)(byte)uVar2" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) << (parenthesized_expression "(((byte)uVar12 & 7) << 3)" ( (binary_expression "((byte)uVar12 & 7) << 3" (parenthesized_expression "((byte)uVar12 & 7)" ( (binary_expression "(byte)uVar12 & 7" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) << number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (if_statement "if (uVar7 == 1) goto LAB_00153dc2;" if (parenthesized_expression "(uVar7 == 1)" ( (binary_expression "uVar7 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00153dc2;" goto statement_identifier ;)) (if_statement "if (uVar7 != 2) {\n      bVar1 = *(byte *)puVar9;\n      iVar3 = uVar6 << 3;\n      uVar5 = uVar11 + 2;\n      puVar9 = (ulong *)((long)param_2 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n    }" if (parenthesized_expression "(uVar7 != 2)" ( (binary_expression "uVar7 != 2" identifier != number_literal) )) (compound_statement "{\n      bVar1 = *(byte *)puVar9;\n      iVar3 = uVar6 << 3;\n      uVar5 = uVar11 + 2;\n      puVar9 = (ulong *)((long)param_2 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n    }" { (expression_statement "bVar1 = *(byte *)puVar9;" (assignment_expression "bVar1 = *(byte *)puVar9" identifier = (pointer_expression "*(byte *)puVar9" * (cast_expression "(byte *)puVar9" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar3 = uVar6 << 3;" (assignment_expression "iVar3 = uVar6 << 3" identifier = (binary_expression "uVar6 << 3" identifier << number_literal)) ;) (expression_statement "uVar5 = uVar11 + 2;" (assignment_expression "uVar5 = uVar11 + 2" identifier = (binary_expression "uVar11 + 2" identifier + number_literal)) ;) (expression_statement "puVar9 = (ulong *)((long)param_2 + 2);" (assignment_expression "puVar9 = (ulong *)((long)param_2 + 2)" identifier = (cast_expression "(ulong *)((long)param_2 + 2)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 2)" ( (binary_expression "(long)param_2 + 2" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar5;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar5" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar5" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar6 = uVar5 & 0xffff;" (assignment_expression "uVar6 = uVar5 & 0xffff" identifier = (binary_expression "uVar5 & 0xffff" identifier & number_literal)) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)iVar3 & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)iVar3 & 0x3f)" ( (binary_expression "(byte)iVar3 & 0x3f" (cast_expression "(byte)iVar3" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) })) (expression_statement "puVar4 = (ulong *)((long)puVar9 + 1);" (assignment_expression "puVar4 = (ulong *)((long)puVar9 + 1)" identifier = (cast_expression "(ulong *)((long)puVar9 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 1)" ( (binary_expression "(long)puVar9 + 1" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "bVar1 = (byte)*puVar9;" (assignment_expression "bVar1 = (byte)*puVar9" identifier = (binary_expression "(byte)*puVar9" (parenthesized_expression "(byte)" ( identifier )) * identifier)) ;) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (while_statement "while( true ) {\n      iVar3 = uVar6 << 3;\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n      puVar9 = puVar4;\nLAB_00153dc2:\n      uVar2 = *puVar9;\n      uVar11 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);\n      *param_1 = uVar8;\n      if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;\n      bVar1 = *(byte *)((long)puVar9 + 1);\n      uVar7 = uVar5 + 2;\n      uVar6 = uVar5 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      puVar4 = (ulong *)((long)puVar9 + 4);\n      uVar5 = uVar5 + 4;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar6 = uVar6 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 3);\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar3 = uVar6 << 3;\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n      puVar9 = puVar4;\nLAB_00153dc2:\n      uVar2 = *puVar9;\n      uVar11 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);\n      *param_1 = uVar8;\n      if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;\n      bVar1 = *(byte *)((long)puVar9 + 1);\n      uVar7 = uVar5 + 2;\n      uVar6 = uVar5 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      puVar4 = (ulong *)((long)puVar9 + 4);\n      uVar5 = uVar5 + 4;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar6 = uVar6 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 3);\n    }" { (expression_statement "iVar3 = uVar6 << 3;" (assignment_expression "iVar3 = uVar6 << 3" identifier = (binary_expression "uVar6 << 3" identifier << number_literal)) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar5;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar5" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar5" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar6 = uVar5 & 0xffff;" (assignment_expression "uVar6 = uVar5 & 0xffff" identifier = (binary_expression "uVar5 & 0xffff" identifier & number_literal)) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)iVar3 & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)iVar3 & 0x3f)" ( (binary_expression "(byte)iVar3 & 0x3f" (cast_expression "(byte)iVar3" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "puVar9 = puVar4;" (assignment_expression "puVar9 = puVar4" identifier = identifier) ;) (labeled_statement "LAB_00153dc2:\n      uVar2 = *puVar9;" statement_identifier : (expression_statement "uVar2 = *puVar9;" (assignment_expression "uVar2 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;)) (expression_statement "uVar11 = uVar5 + 1;" (assignment_expression "uVar11 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar11;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar11" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar11" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f)" identifier | (binary_expression "(ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f)" (cast_expression "(ulong)(byte)uVar2" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) << (parenthesized_expression "((byte)(uVar6 << 3) & 0x3f)" ( (binary_expression "(byte)(uVar6 << 3) & 0x3f" (call_expression "(byte)(uVar6 << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar6 << 3)" ( (binary_expression "uVar6 << 3" identifier << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (if_statement "if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;" if (parenthesized_expression "((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2))" ( (binary_expression "(byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)" (cast_expression "(byte *)((long)puVar9 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 1)" ( (binary_expression "(long)puVar9 + 1" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))) == (cast_expression "(byte *)(param_3 + (long)param_2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + (long)param_2)" ( (binary_expression "param_3 + (long)param_2" identifier + (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) )) (break_statement "break;" break ;)) (expression_statement "bVar1 = *(byte *)((long)puVar9 + 1);" (assignment_expression "bVar1 = *(byte *)((long)puVar9 + 1)" identifier = (pointer_expression "*(byte *)((long)puVar9 + 1)" * (cast_expression "(byte *)((long)puVar9 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 1)" ( (binary_expression "(long)puVar9 + 1" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar7 = uVar5 + 2;" (assignment_expression "uVar7 = uVar5 + 2" identifier = (binary_expression "uVar5 + 2" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar5 + 3;" (assignment_expression "uVar6 = uVar5 + 3" identifier = (binary_expression "uVar5 + 3" identifier + number_literal)) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar7;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar7" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar7" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "puVar4 = (ulong *)((long)puVar9 + 4);" (assignment_expression "puVar4 = (ulong *)((long)puVar9 + 4)" identifier = (cast_expression "(ulong *)((long)puVar9 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 4)" ( (binary_expression "(long)puVar9 + 4" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "uVar5 = uVar5 + 4;" (assignment_expression "uVar5 = uVar5 + 4" identifier = (binary_expression "uVar5 + 4" identifier + number_literal)) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar11 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar11 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar11 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar11 & 0xffff) << 3)" ( (binary_expression "(uVar11 & 0xffff) << 3" (parenthesized_expression "(uVar11 & 0xffff)" ( (binary_expression "uVar11 & 0xffff" identifier & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "bVar1 = *(byte *)((long)puVar9 + 2);" (assignment_expression "bVar1 = *(byte *)((long)puVar9 + 2)" identifier = (pointer_expression "*(byte *)((long)puVar9 + 2)" * (cast_expression "(byte *)((long)puVar9 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 2)" ( (binary_expression "(long)puVar9 + 2" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar6;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar6" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar6" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar6 = uVar6 & 0xffff;" (assignment_expression "uVar6 = uVar6 & 0xffff" identifier = (binary_expression "uVar6 & 0xffff" identifier & number_literal)) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar7 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar7 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar7 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar7 & 0xffff) << 3)" ( (binary_expression "(uVar7 & 0xffff) << 3" (parenthesized_expression "(uVar7 & 0xffff)" ( (binary_expression "uVar7 & 0xffff" identifier & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "bVar1 = *(byte *)((long)puVar9 + 3);" (assignment_expression "bVar1 = *(byte *)((long)puVar9 + 3)" identifier = (pointer_expression "*(byte *)((long)puVar9 + 3)" * (cast_expression "(byte *)((long)puVar9 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 3)" ( (binary_expression "(long)puVar9 + 3" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) })) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (uVar5 != 0) {\n    uVar8 = *param_2;\n    param_3 = param_3 - uVar5;\n    *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n    uVar8 = (ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1;\n    *param_1 = uVar8;\n    if (uVar5 - 1 != 0) {\n      bVar1 = *(byte *)((long)param_2 + 1);\n      *(short *)(param_1 + 0x33) = (short)(uVar11 + 2);\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }\n    }\n    uVar12 = *(ushort *)((long)param_1 + 0x19a);\n    param_2 = (ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1);\n    param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ uVar8;\n    uVar12 = uVar12 + 1;\n    *(undefined2 *)(param_1 + 0x33) = 0;\n    *param_1 = 0;\n    *(ushort *)((long)param_1 + 0x19a) = uVar12;\n    if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n      FUN_001534a0(param_1 + 1);\n      *(undefined2 *)((long)param_1 + 0x19a) = 0;\n    }\n  }" if (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar8 = *param_2;\n    param_3 = param_3 - uVar5;\n    *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n    uVar8 = (ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1;\n    *param_1 = uVar8;\n    if (uVar5 - 1 != 0) {\n      bVar1 = *(byte *)((long)param_2 + 1);\n      *(short *)(param_1 + 0x33) = (short)(uVar11 + 2);\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }\n    }\n    uVar12 = *(ushort *)((long)param_1 + 0x19a);\n    param_2 = (ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1);\n    param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ uVar8;\n    uVar12 = uVar12 + 1;\n    *(undefined2 *)(param_1 + 0x33) = 0;\n    *param_1 = 0;\n    *(ushort *)((long)param_1 + 0x19a) = uVar12;\n    if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n      FUN_001534a0(param_1 + 1);\n      *(undefined2 *)((long)param_1 + 0x19a) = 0;\n    }\n  }" { (expression_statement "uVar8 = *param_2;" (assignment_expression "uVar8 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "param_3 = param_3 - uVar5;" (assignment_expression "param_3 = param_3 - uVar5" identifier = (binary_expression "param_3 - uVar5" identifier - identifier)) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)(uVar12 + 1);" (assignment_expression "*(short *)(param_1 + 0x33) = (short)(uVar12 + 1)" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)(uVar12 + 1)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(uVar12 + 1)" ( (binary_expression "uVar12 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar8 = (ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1;" (assignment_expression "uVar8 = (ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1" identifier = (binary_expression "(ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1" (binary_expression "(ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3)" (cast_expression "(ulong)(byte)uVar8" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)uVar8" ( (type_descriptor "byte" type_identifier) ) identifier)) << (parenthesized_expression "(((byte)uVar12 & 7) << 3)" ( (binary_expression "((byte)uVar12 & 7) << 3" (parenthesized_expression "((byte)uVar12 & 7)" ( (binary_expression "(byte)uVar12 & 7" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) << number_literal) ))) | (pointer_expression "*param_1" * identifier))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (if_statement "if (uVar5 - 1 != 0) {\n      bVar1 = *(byte *)((long)param_2 + 1);\n      *(short *)(param_1 + 0x33) = (short)(uVar11 + 2);\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "(uVar5 - 1 != 0)" ( (binary_expression "uVar5 - 1 != 0" (binary_expression "uVar5 - 1" identifier - number_literal) != number_literal) )) (compound_statement "{\n      bVar1 = *(byte *)((long)param_2 + 1);\n      *(short *)(param_1 + 0x33) = (short)(uVar11 + 2);\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }\n    }" { (expression_statement "bVar1 = *(byte *)((long)param_2 + 1);" (assignment_expression "bVar1 = *(byte *)((long)param_2 + 1)" identifier = (pointer_expression "*(byte *)((long)param_2 + 1)" * (cast_expression "(byte *)((long)param_2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 1)" ( (binary_expression "(long)param_2 + 1" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)(uVar11 + 2);" (assignment_expression "*(short *)(param_1 + 0x33) = (short)(uVar11 + 2)" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)(uVar11 + 2)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(uVar11 + 2)" ( (binary_expression "uVar11 + 2" identifier + number_literal) )))) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar12 + 1 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar12 + 1 & 0xffff) << 3)" ( (binary_expression "(uVar12 + 1 & 0xffff) << 3" (parenthesized_expression "(uVar12 + 1 & 0xffff)" ( (binary_expression "uVar12 + 1 & 0xffff" (binary_expression "uVar12 + 1" identifier + number_literal) & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (if_statement "if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }" if (parenthesized_expression "(uVar5 != 2)" ( (binary_expression "uVar5 != 2" identifier != number_literal) )) (compound_statement "{\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }" { (expression_statement "bVar1 = *(byte *)((long)param_2 + 2);" (assignment_expression "bVar1 = *(byte *)((long)param_2 + 2)" identifier = (pointer_expression "*(byte *)((long)param_2 + 2)" * (cast_expression "(byte *)((long)param_2 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 2)" ( (binary_expression "(long)param_2 + 2" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)(uVar11 + 3);" (assignment_expression "*(short *)(param_1 + 0x33) = (short)(uVar11 + 3)" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)(uVar11 + 3)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(uVar11 + 3)" ( (binary_expression "uVar11 + 3" identifier + number_literal) )))) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar11 + 2 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar11 + 2 & 0xffff) << 3)" ( (binary_expression "(uVar11 + 2 & 0xffff) << 3" (parenthesized_expression "(uVar11 + 2 & 0xffff)" ( (binary_expression "uVar11 + 2 & 0xffff" (binary_expression "uVar11 + 2" identifier + number_literal) & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (if_statement "if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }" if (parenthesized_expression "(uVar5 != 3)" ( (binary_expression "uVar5 != 3" identifier != number_literal) )) (compound_statement "{\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }" { (expression_statement "bVar1 = *(byte *)((long)param_2 + 3);" (assignment_expression "bVar1 = *(byte *)((long)param_2 + 3)" identifier = (pointer_expression "*(byte *)((long)param_2 + 3)" * (cast_expression "(byte *)((long)param_2 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 3)" ( (binary_expression "(long)param_2 + 3" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)(uVar11 + 4);" (assignment_expression "*(short *)(param_1 + 0x33) = (short)(uVar11 + 4)" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)(uVar11 + 4)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(uVar11 + 4)" ( (binary_expression "uVar11 + 4" identifier + number_literal) )))) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar11 + 3 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar11 + 3 & 0xffff) << 3)" ( (binary_expression "(uVar11 + 3 & 0xffff) << 3" (parenthesized_expression "(uVar11 + 3 & 0xffff)" ( (binary_expression "uVar11 + 3 & 0xffff" (binary_expression "uVar11 + 3" identifier + number_literal) & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (if_statement "if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }" if (parenthesized_expression "(uVar5 != 4)" ( (binary_expression "uVar5 != 4" identifier != number_literal) )) (compound_statement "{\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }" { (expression_statement "bVar1 = *(byte *)((long)param_2 + 4);" (assignment_expression "bVar1 = *(byte *)((long)param_2 + 4)" identifier = (pointer_expression "*(byte *)((long)param_2 + 4)" * (cast_expression "(byte *)((long)param_2 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 4)" ( (binary_expression "(long)param_2 + 4" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)(uVar11 + 5);" (assignment_expression "*(short *)(param_1 + 0x33) = (short)(uVar11 + 5)" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)(uVar11 + 5)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(uVar11 + 5)" ( (binary_expression "uVar11 + 5" identifier + number_literal) )))) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar11 + 4 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar11 + 4 & 0xffff) << 3)" ( (binary_expression "(uVar11 + 4 & 0xffff) << 3" (parenthesized_expression "(uVar11 + 4 & 0xffff)" ( (binary_expression "uVar11 + 4 & 0xffff" (binary_expression "uVar11 + 4" identifier + number_literal) & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (if_statement "if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }" if (parenthesized_expression "(uVar5 != 5)" ( (binary_expression "uVar5 != 5" identifier != number_literal) )) (compound_statement "{\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }" { (expression_statement "bVar1 = *(byte *)((long)param_2 + 5);" (assignment_expression "bVar1 = *(byte *)((long)param_2 + 5)" identifier = (pointer_expression "*(byte *)((long)param_2 + 5)" * (cast_expression "(byte *)((long)param_2 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 5)" ( (binary_expression "(long)param_2 + 5" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)(uVar11 + 6);" (assignment_expression "*(short *)(param_1 + 0x33) = (short)(uVar11 + 6)" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)(uVar11 + 6)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(uVar11 + 6)" ( (binary_expression "uVar11 + 6" identifier + number_literal) )))) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar11 + 5 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar11 + 5 & 0xffff) << 3)" ( (binary_expression "(uVar11 + 5 & 0xffff) << 3" (parenthesized_expression "(uVar11 + 5 & 0xffff)" ( (binary_expression "uVar11 + 5 & 0xffff" (binary_expression "uVar11 + 5" identifier + number_literal) & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (if_statement "if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }" if (parenthesized_expression "(uVar5 != 6)" ( (binary_expression "uVar5 != 6" identifier != number_literal) )) (compound_statement "{\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }" { (expression_statement "bVar1 = *(byte *)((long)param_2 + 6);" (assignment_expression "bVar1 = *(byte *)((long)param_2 + 6)" identifier = (pointer_expression "*(byte *)((long)param_2 + 6)" * (cast_expression "(byte *)((long)param_2 + 6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 6)" ( (binary_expression "(long)param_2 + 6" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(ushort *)(param_1 + 0x33) = uVar12 + 7;" (assignment_expression "*(ushort *)(param_1 + 0x33) = uVar12 + 7" (pointer_expression "*(ushort *)(param_1 + 0x33)" * (cast_expression "(ushort *)(param_1 + 0x33)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (binary_expression "uVar12 + 7" identifier + number_literal)) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar11 + 6 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar11 + 6 & 0xffff) << 3)" ( (binary_expression "(uVar11 + 6 & 0xffff) << 3" (parenthesized_expression "(uVar11 + 6 & 0xffff)" ( (binary_expression "uVar11 + 6 & 0xffff" (binary_expression "uVar11 + 6" identifier + number_literal) & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) })) })) })) })) })) })) (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" identifier = (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "param_2 = (ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1);" (assignment_expression "param_2 = (ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1)" identifier = (cast_expression "(ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + (ulong)(uVar5 - 1) + 1)" ( (binary_expression "(long)param_2 + (ulong)(uVar5 - 1) + 1" (binary_expression "(long)param_2 + (ulong)(uVar5 - 1)" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (call_expression "(ulong)(uVar5 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar5 - 1)" ( (binary_expression "uVar5 - 1" identifier - number_literal) )))) + number_literal) )))) ;) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ uVar8;" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ uVar8" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) = (binary_expression "param_1[(ulong)uVar12 + 1] ^ uVar8" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) ^ identifier)) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined2 *)(param_1 + 0x33) = 0;" (assignment_expression "*(undefined2 *)(param_1 + 0x33) = 0" (pointer_expression "*(undefined2 *)(param_1 + 0x33)" * (cast_expression "(undefined2 *)(param_1 + 0x33)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n      FUN_001534a0(param_1 + 1);\n      *(undefined2 *)((long)param_1 + 0x19a) = 0;\n    }" if (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" ( (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" number_literal - (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" * (cast_expression "(ushort *)((long)param_1 + 0x19c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19c)" ( (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) )) (compound_statement "{\n      FUN_001534a0(param_1 + 1);\n      *(undefined2 *)((long)param_1 + 0x19a) = 0;\n    }" { (expression_statement "FUN_001534a0(param_1 + 1);" (call_expression "FUN_001534a0(param_1 + 1)" identifier (argument_list "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))) ;) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" * (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) })) })) (expression_statement "uVar8 = param_3 >> 3;" (assignment_expression "uVar8 = param_3 >> 3" identifier = (binary_expression "param_3 >> 3" identifier >> number_literal)) ;) (expression_statement "uVar11 = (int)param_3 + (int)uVar8 * -8;" (assignment_expression "uVar11 = (int)param_3 + (int)uVar8 * -8" identifier = (binary_expression "(int)param_3 + (int)uVar8 * -8" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(int)uVar8 * -8" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal))) ;) (expression_statement "puVar9 = param_2;" (assignment_expression "puVar9 = param_2" identifier = identifier) ;) (if_statement "if (uVar8 != 0) {\n    puVar9 = param_2 + uVar8;\n    uVar6 = (int)(uVar8 * 8 - 8 >> 3) + 1U & 3;\n    if (uVar6 != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 1;\n      if (param_2 == puVar9) goto LAB_00153b88;\n    }\n    do {\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 4;\n    } while (param_2 != puVar9);\n  }" if (parenthesized_expression "(uVar8 != 0)" ( (binary_expression "uVar8 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar9 = param_2 + uVar8;\n    uVar6 = (int)(uVar8 * 8 - 8 >> 3) + 1U & 3;\n    if (uVar6 != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 1;\n      if (param_2 == puVar9) goto LAB_00153b88;\n    }\n    do {\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 4;\n    } while (param_2 != puVar9);\n  }" { (expression_statement "puVar9 = param_2 + uVar8;" (assignment_expression "puVar9 = param_2 + uVar8" identifier = (binary_expression "param_2 + uVar8" identifier + identifier)) ;) (expression_statement "uVar6 = (int)(uVar8 * 8 - 8 >> 3) + 1U & 3;" (assignment_expression "uVar6 = (int)(uVar8 * 8 - 8 >> 3) + 1U & 3" identifier = (binary_expression "(int)(uVar8 * 8 - 8 >> 3) + 1U & 3" (binary_expression "(int)(uVar8 * 8 - 8 >> 3) + 1U" (cast_expression "(int)(uVar8 * 8 - 8 >> 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar8 * 8 - 8 >> 3)" ( (binary_expression "uVar8 * 8 - 8 >> 3" (binary_expression "uVar8 * 8 - 8" (binary_expression "uVar8 * 8" identifier * number_literal) - number_literal) >> number_literal) ))) + number_literal) & number_literal)) ;) (if_statement "if (uVar6 != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 1;\n      if (param_2 == puVar9) goto LAB_00153b88;\n    }" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 1;\n      if (param_2 == puVar9) goto LAB_00153b88;\n    }" { (if_statement "if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }" if (parenthesized_expression "(uVar6 != 1)" ( (binary_expression "uVar6 != 1" identifier != number_literal) )) (compound_statement "{\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }" { (if_statement "if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }" if (parenthesized_expression "(uVar6 != 2)" ( (binary_expression "uVar6 != 2" identifier != number_literal) )) (compound_statement "{\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }" { (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" identifier = (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) = (binary_expression "param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) ^ (pointer_expression "*param_2" * identifier))) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }" if (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" ( (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" number_literal - (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" * (cast_expression "(ushort *)((long)param_1 + 0x19c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19c)" ( (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) )) (compound_statement "{\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }" { (expression_statement "FUN_001534a0(param_1 + 1);" (call_expression "FUN_001534a0(param_1 + 1)" identifier (argument_list "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))) ;) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" * (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) })) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" identifier = (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) = (binary_expression "param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) ^ (pointer_expression "*param_2" * identifier))) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }" if (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" ( (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" number_literal - (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" * (cast_expression "(ushort *)((long)param_1 + 0x19c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19c)" ( (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) )) (compound_statement "{\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }" { (expression_statement "FUN_001534a0(param_1 + 1);" (call_expression "FUN_001534a0(param_1 + 1)" identifier (argument_list "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))) ;) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" * (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) })) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" identifier = (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) = (binary_expression "param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) ^ (pointer_expression "*param_2" * identifier))) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" if (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" ( (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" number_literal - (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" * (cast_expression "(ushort *)((long)param_1 + 0x19c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19c)" ( (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) )) (compound_statement "{\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" { (expression_statement "FUN_001534a0(param_1 + 1);" (call_expression "FUN_001534a0(param_1 + 1)" identifier (argument_list "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))) ;) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" * (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) })) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (if_statement "if (param_2 == puVar9) goto LAB_00153b88;" if (parenthesized_expression "(param_2 == puVar9)" ( (binary_expression "param_2 == puVar9" identifier == identifier) )) (goto_statement "goto LAB_00153b88;" goto statement_identifier ;)) })) (do_statement "do {\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 4;\n    } while (param_2 != puVar9);" do (compound_statement "{\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 4;\n    }" { (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" identifier = (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) = (binary_expression "param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) ^ (pointer_expression "*param_2" * identifier))) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" if (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" ( (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" number_literal - (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" * (cast_expression "(ushort *)((long)param_1 + 0x19c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19c)" ( (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) )) (compound_statement "{\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" { (expression_statement "FUN_001534a0(param_1 + 1);" (call_expression "FUN_001534a0(param_1 + 1)" identifier (argument_list "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))) ;) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" * (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) })) (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" identifier = (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1]" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) = (binary_expression "param_1[(ulong)uVar12 + 1] ^ param_2[1]" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) ^ (subscript_expression "param_2[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" if (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" ( (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" number_literal - (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" * (cast_expression "(ushort *)((long)param_1 + 0x19c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19c)" ( (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) )) (compound_statement "{\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" { (expression_statement "FUN_001534a0(param_1 + 1);" (call_expression "FUN_001534a0(param_1 + 1)" identifier (argument_list "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))) ;) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" * (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) })) (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" identifier = (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2]" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) = (binary_expression "param_1[(ulong)uVar12 + 1] ^ param_2[2]" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) ^ (subscript_expression "param_2[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" if (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" ( (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" number_literal - (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" * (cast_expression "(ushort *)((long)param_1 + 0x19c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19c)" ( (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) )) (compound_statement "{\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" { (expression_statement "FUN_001534a0();" (call_expression "FUN_001534a0()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" * (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) })) (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" identifier = (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3]" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) = (binary_expression "param_1[(ulong)uVar12 + 1] ^ param_2[3]" (subscript_expression "param_1[(ulong)uVar12 + 1]" identifier [ (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) ]) ^ (subscript_expression "param_2[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" * (cast_expression "(ushort *)((long)param_1 + 0x19a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" if (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" ( (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) == (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" number_literal - (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" * (cast_expression "(ushort *)((long)param_1 + 0x19c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19c)" ( (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) )) (compound_statement "{\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" { (expression_statement "FUN_001534a0(param_1 + 1);" (call_expression "FUN_001534a0(param_1 + 1)" identifier (argument_list "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))) ;) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" * (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x19a)" ( (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) })) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_2 != puVar9)" ( (binary_expression "param_2 != puVar9" identifier != identifier) )) ;) })) (labeled_statement "LAB_00153b88:\n  if (uVar11 != 0) {\n    puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1);\n    uVar12 = (ushort)param_1[0x33];\n    uVar7 = (uint)uVar12;\n    uVar5 = (uint)uVar12;\n    uVar6 = (uint)uVar12;\n    uVar8 = *param_1;\n    uVar11 = uVar11 & 3;\n    puVar10 = puVar9;\n    if (uVar11 != 0) {\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }\n    do {\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar4);\n  }" statement_identifier : (if_statement "if (uVar11 != 0) {\n    puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1);\n    uVar12 = (ushort)param_1[0x33];\n    uVar7 = (uint)uVar12;\n    uVar5 = (uint)uVar12;\n    uVar6 = (uint)uVar12;\n    uVar8 = *param_1;\n    uVar11 = uVar11 & 3;\n    puVar10 = puVar9;\n    if (uVar11 != 0) {\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }\n    do {\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar4);\n  }" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1);\n    uVar12 = (ushort)param_1[0x33];\n    uVar7 = (uint)uVar12;\n    uVar5 = (uint)uVar12;\n    uVar6 = (uint)uVar12;\n    uVar8 = *param_1;\n    uVar11 = uVar11 & 3;\n    puVar10 = puVar9;\n    if (uVar11 != 0) {\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }\n    do {\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar4);\n  }" { (expression_statement "puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1);" (assignment_expression "puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1)" identifier = (cast_expression "(ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + (ulong)(uVar11 - 1) + 1)" ( (binary_expression "(long)puVar9 + (ulong)(uVar11 - 1) + 1" (binary_expression "(long)puVar9 + (ulong)(uVar11 - 1)" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (call_expression "(ulong)(uVar11 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar11 - 1)" ( (binary_expression "uVar11 - 1" identifier - number_literal) )))) + number_literal) )))) ;) (expression_statement "uVar12 = (ushort)param_1[0x33];" (assignment_expression "uVar12 = (ushort)param_1[0x33]" identifier = (cast_expression "(ushort)param_1[0x33]" ( (type_descriptor "ushort" type_identifier) ) (subscript_expression "param_1[0x33]" identifier [ number_literal ]))) ;) (expression_statement "uVar7 = (uint)uVar12;" (assignment_expression "uVar7 = (uint)uVar12" identifier = (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar5 = (uint)uVar12;" (assignment_expression "uVar5 = (uint)uVar12" identifier = (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar6 = (uint)uVar12;" (assignment_expression "uVar6 = (uint)uVar12" identifier = (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = *param_1;" (assignment_expression "uVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar11 = uVar11 & 3;" (assignment_expression "uVar11 = uVar11 & 3" identifier = (binary_expression "uVar11 & 3" identifier & number_literal)) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) (if_statement "if (uVar11 != 0) {\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (compound_statement "{\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }" { (if_statement "if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }" if (parenthesized_expression "(uVar11 != 1)" ( (binary_expression "uVar11 != 1" identifier != number_literal) )) (compound_statement "{\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }" { (if_statement "if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }" if (parenthesized_expression "(uVar11 != 2)" ( (binary_expression "uVar11 != 2" identifier != number_literal) )) (compound_statement "{\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }" { (expression_statement "uVar2 = *puVar9;" (assignment_expression "uVar2 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puVar9 = (ulong *)((long)puVar9 + 1);" (assignment_expression "puVar9 = (ulong *)((long)puVar9 + 1)" identifier = (cast_expression "(ulong *)((long)puVar9 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 1)" ( (binary_expression "(long)puVar9 + 1" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)(uVar12 + 1);" (assignment_expression "*(short *)(param_1 + 0x33) = (short)(uVar12 + 1)" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)(uVar12 + 1)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(uVar12 + 1)" ( (binary_expression "uVar12 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar6 = uVar12 + 1 & 0xffff;" (assignment_expression "uVar6 = uVar12 + 1 & 0xffff" identifier = (binary_expression "uVar12 + 1 & 0xffff" (binary_expression "uVar12 + 1" identifier + number_literal) & number_literal)) ;) (expression_statement "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);" (assignment_expression "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU)" identifier = (binary_expression "uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU)" identifier | (binary_expression "(ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU)" (cast_expression "(ulong)(byte)uVar2" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) << (parenthesized_expression "((char)uVar12 * '\b' & 0x3fU)" ( (binary_expression "(char)uVar12 * '\b' & 0x3fU" (binary_expression "(char)uVar12 * '\b'" (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier) * (char_literal "'\b'" ' escape_sequence ')) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) })) (expression_statement "uVar2 = *puVar9;" (assignment_expression "uVar2 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "uVar5 = uVar6 + 1;" (assignment_expression "uVar5 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "puVar9 = (ulong *)((long)puVar9 + 1);" (assignment_expression "puVar9 = (ulong *)((long)puVar9 + 1)" identifier = (cast_expression "(ulong *)((long)puVar9 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 1)" ( (binary_expression "(long)puVar9 + 1" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar5;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar5" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar5" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);" (assignment_expression "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU)" identifier = (binary_expression "uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU)" identifier | (binary_expression "(ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU)" (cast_expression "(ulong)(byte)uVar2" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) << (parenthesized_expression "((char)uVar6 * '\b' & 0x3fU)" ( (binary_expression "(char)uVar6 * '\b' & 0x3fU" (binary_expression "(char)uVar6 * '\b'" (cast_expression "(char)uVar6" ( (type_descriptor "char" primitive_type) ) identifier) * (char_literal "'\b'" ' escape_sequence ')) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) })) (expression_statement "uVar2 = *puVar9;" (assignment_expression "uVar2 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "uVar7 = uVar5 + 1;" (assignment_expression "uVar7 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar7;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar7" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar7" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)(byte)uVar2" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) << (parenthesized_expression "((byte)((uVar5 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar5 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar5 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar5 & 0xffff) << 3)" ( (binary_expression "(uVar5 & 0xffff) << 3" (parenthesized_expression "(uVar5 & 0xffff)" ( (binary_expression "uVar5 & 0xffff" identifier & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "puVar10 = (ulong *)((long)puVar9 + 1);" (assignment_expression "puVar10 = (ulong *)((long)puVar9 + 1)" identifier = (cast_expression "(ulong *)((long)puVar9 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 1)" ( (binary_expression "(long)puVar9 + 1" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (if_statement "if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }" if (parenthesized_expression "((ulong *)((long)puVar9 + 1) == puVar4)" ( (binary_expression "(ulong *)((long)puVar9 + 1) == puVar4" (cast_expression "(ulong *)((long)puVar9 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 1)" ( (binary_expression "(long)puVar9 + 1" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))) == identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) })) (do_statement "do {\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar4);" do (compound_statement "{\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    }" { (expression_statement "uVar2 = *puVar10;" (assignment_expression "uVar2 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "uVar11 = uVar7 + 1;" (assignment_expression "uVar11 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar7 + 3;" (assignment_expression "uVar5 = uVar7 + 3" identifier = (binary_expression "uVar7 + 3" identifier + number_literal)) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar11;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar11" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar11" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "puVar9 = (ulong *)((long)puVar10 + 4);" (assignment_expression "puVar9 = (ulong *)((long)puVar10 + 4)" identifier = (cast_expression "(ulong *)((long)puVar10 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar10 + 4)" ( (binary_expression "(long)puVar10 + 4" (cast_expression "(long)puVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;" (assignment_expression "uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8" identifier = (binary_expression "(ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8" (binary_expression "(ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)(byte)uVar2" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) << (parenthesized_expression "((byte)((uVar7 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar7 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar7 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar7 & 0xffff) << 3)" ( (binary_expression "(uVar7 & 0xffff) << 3" (parenthesized_expression "(uVar7 & 0xffff)" ( (binary_expression "uVar7 & 0xffff" identifier & number_literal) )) << number_literal) ))) & number_literal) ))) | identifier)) ;) (expression_statement "uVar6 = uVar7 + 2;" (assignment_expression "uVar6 = uVar7 + 2" identifier = (binary_expression "uVar7 + 2" identifier + number_literal)) ;) (expression_statement "uVar7 = uVar7 + 4;" (assignment_expression "uVar7 = uVar7 + 4" identifier = (binary_expression "uVar7 + 4" identifier + number_literal)) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "bVar1 = *(byte *)((long)puVar10 + 1);" (assignment_expression "bVar1 = *(byte *)((long)puVar10 + 1)" identifier = (pointer_expression "*(byte *)((long)puVar10 + 1)" * (cast_expression "(byte *)((long)puVar10 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar10 + 1)" ( (binary_expression "(long)puVar10 + 1" (cast_expression "(long)puVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar6;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar6" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar6" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar11 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar11 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar11 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar11 & 0xffff) << 3)" ( (binary_expression "(uVar11 & 0xffff) << 3" (parenthesized_expression "(uVar11 & 0xffff)" ( (binary_expression "uVar11 & 0xffff" identifier & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "bVar1 = *(byte *)((long)puVar10 + 2);" (assignment_expression "bVar1 = *(byte *)((long)puVar10 + 2)" identifier = (pointer_expression "*(byte *)((long)puVar10 + 2)" * (cast_expression "(byte *)((long)puVar10 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar10 + 2)" ( (binary_expression "(long)puVar10 + 2" (cast_expression "(long)puVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar5;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar5" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar5" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f)" identifier | (binary_expression "(ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar6 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar6 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar6 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar6 & 0xffff) << 3)" ( (binary_expression "(uVar6 & 0xffff) << 3" (parenthesized_expression "(uVar6 & 0xffff)" ( (binary_expression "uVar6 & 0xffff" identifier & number_literal) )) << number_literal) ))) & number_literal) ))))) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "bVar1 = *(byte *)((long)puVar10 + 3);" (assignment_expression "bVar1 = *(byte *)((long)puVar10 + 3)" identifier = (pointer_expression "*(byte *)((long)puVar10 + 3)" * (cast_expression "(byte *)((long)puVar10 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar10 + 3)" ( (binary_expression "(long)puVar10 + 3" (cast_expression "(long)puVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar7;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar7" (pointer_expression "*(short *)(param_1 + 0x33)" * (cast_expression "(short *)(param_1 + 0x33)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) = (cast_expression "(short)uVar7" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;" (assignment_expression "uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8" identifier = (binary_expression "(ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8" (binary_expression "(ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) << (parenthesized_expression "((byte)((uVar5 & 0xffff) << 3) & 0x3f)" ( (binary_expression "(byte)((uVar5 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar5 & 0xffff) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar5 & 0xffff) << 3)" ( (binary_expression "(uVar5 & 0xffff) << 3" (parenthesized_expression "(uVar5 & 0xffff)" ( (binary_expression "uVar5 & 0xffff" identifier & number_literal) )) << number_literal) ))) & number_literal) ))) | identifier)) ;) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) }) while (parenthesized_expression "(puVar9 != puVar4)" ( (binary_expression "puVar9 != puVar4" identifier != identifier) )) ;) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression - IDENT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT)) + (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ))))) & LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) << (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) << LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) << (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << LIT) ))) & LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) ))) & LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) ))) & LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) })) (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) << (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) << LIT) ))) | (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )) << LIT) ))) & LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )) << LIT) ))) & LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )) << LIT) ))) & LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )) << LIT) ))) & LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )) << LIT) ))) & LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )) << LIT) ))) & LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) })) })) })) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) = (binary_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) ^ IDENT)) ;) (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) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (binary_expression LIT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) 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) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) - LIT) >> LIT) ))) + LIT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) = (binary_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) ^ (pointer_expression * IDENT))) ;) (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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (binary_expression LIT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) = (binary_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) ^ (pointer_expression * IDENT))) ;) (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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (binary_expression LIT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) = (binary_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) ^ (pointer_expression * IDENT))) ;) (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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (binary_expression LIT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) = (binary_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) ^ (pointer_expression * IDENT))) ;) (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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (binary_expression LIT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) = (binary_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) ^ (subscript_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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (binary_expression LIT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) = (binary_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) ^ (subscript_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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (binary_expression LIT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) = (binary_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) ^ (subscript_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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (binary_expression LIT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) << (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (char_literal ' escape_sequence ')) & LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) << (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (char_literal ' escape_sequence ')) & LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) << (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) ))) & LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))) == IDENT) )) (compound_statement { (return_statement return LIT ;) })) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) << (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) ))) & LIT) ))) | IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) ))) & LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) ))) & LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) ))) & LIT) ))) | IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) }))) (return_statement return LIT ;) })))
(function_definition "undefined8 sha3_process(ulong *param_1,ulong *param_2,ulong param_3)\n\n{\n  byte bVar1;\n  ulong uVar2;\n  int iVar3;\n  ulong *puVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  ulong uVar8;\n  ulong *puVar9;\n  ulong *puVar10;\n  uint uVar11;\n  ushort uVar12;\n  \n  if (param_3 == 0) {\n    return 0;\n  }\n  if (param_2 == (ulong *)0x0) {\n                    \n    crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);\n  }\n  uVar12 = (ushort)param_1[0x33];\n  uVar6 = (uint)uVar12;\n  uVar11 = (uint)uVar12;\n  uVar5 = -uVar11 & 7;\n  if (param_3 < uVar5) {\n    uVar8 = *param_1;\n    uVar7 = ~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3;\n    puVar9 = param_2;\n    uVar5 = uVar11;\n    if (uVar7 == 0) goto LAB_00153dc2;\n    puVar9 = (ulong *)((long)param_2 + 1);\n    uVar2 = *param_2;\n    uVar5 = uVar11 + 1;\n    *(short *)(param_1 + 0x33) = (short)uVar5;\n    uVar6 = uVar5 & 0xffff;\n    uVar8 = uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3);\n    *param_1 = uVar8;\n    if (uVar7 == 1) goto LAB_00153dc2;\n    if (uVar7 != 2) {\n      bVar1 = *(byte *)puVar9;\n      iVar3 = uVar6 << 3;\n      uVar5 = uVar11 + 2;\n      puVar9 = (ulong *)((long)param_2 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n    }\n    puVar4 = (ulong *)((long)puVar9 + 1);\n    bVar1 = (byte)*puVar9;\n    uVar5 = uVar5 + 1;\n    while( true ) {\n      iVar3 = uVar6 << 3;\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n      puVar9 = puVar4;\nLAB_00153dc2:\n      uVar2 = *puVar9;\n      uVar11 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);\n      *param_1 = uVar8;\n      if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;\n      bVar1 = *(byte *)((long)puVar9 + 1);\n      uVar7 = uVar5 + 2;\n      uVar6 = uVar5 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      puVar4 = (ulong *)((long)puVar9 + 4);\n      uVar5 = uVar5 + 4;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar6 = uVar6 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 3);\n    }\n    return 0;\n  }\n  if (uVar5 != 0) {\n    uVar8 = *param_2;\n    param_3 = param_3 - uVar5;\n    *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n    uVar8 = (ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1;\n    *param_1 = uVar8;\n    if (uVar5 - 1 != 0) {\n      bVar1 = *(byte *)((long)param_2 + 1);\n      *(short *)(param_1 + 0x33) = (short)(uVar11 + 2);\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }\n    }\n    uVar12 = *(ushort *)((long)param_1 + 0x19a);\n    param_2 = (ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1);\n    param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ uVar8;\n    uVar12 = uVar12 + 1;\n    *(undefined2 *)(param_1 + 0x33) = 0;\n    *param_1 = 0;\n    *(ushort *)((long)param_1 + 0x19a) = uVar12;\n    if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n      FUN_001534a0(param_1 + 1);\n      *(undefined2 *)((long)param_1 + 0x19a) = 0;\n    }\n  }\n  uVar8 = param_3 >> 3;\n  uVar11 = (int)param_3 + (int)uVar8 * -8;\n  puVar9 = param_2;\n  if (uVar8 != 0) {\n    puVar9 = param_2 + uVar8;\n    uVar6 = (int)(uVar8 * 8 - 8 >> 3) + 1U & 3;\n    if (uVar6 != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 1;\n      if (param_2 == puVar9) goto LAB_00153b88;\n    }\n    do {\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 4;\n    } while (param_2 != puVar9);\n  }\nLAB_00153b88:\n  if (uVar11 != 0) {\n    puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1);\n    uVar12 = (ushort)param_1[0x33];\n    uVar7 = (uint)uVar12;\n    uVar5 = (uint)uVar12;\n    uVar6 = (uint)uVar12;\n    uVar8 = *param_1;\n    uVar11 = uVar11 & 3;\n    puVar10 = puVar9;\n    if (uVar11 != 0) {\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }\n    do {\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar4);\n  }\n  return 0;\n}" (type_identifier "undefined8") (function_declarator "sha3_process(ulong *param_1,ulong *param_2,ulong param_3)" (identifier "sha3_process") (parameter_list "(ulong *param_1,ulong *param_2,ulong param_3)" (( "(") (parameter_declaration "ulong *param_1" (type_identifier "ulong") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "ulong *param_2" (type_identifier "ulong") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "ulong param_3" (type_identifier "ulong") (identifier "param_3")) () ")"))) (compound_statement "{\n  byte bVar1;\n  ulong uVar2;\n  int iVar3;\n  ulong *puVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  ulong uVar8;\n  ulong *puVar9;\n  ulong *puVar10;\n  uint uVar11;\n  ushort uVar12;\n  \n  if (param_3 == 0) {\n    return 0;\n  }\n  if (param_2 == (ulong *)0x0) {\n                    \n    crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);\n  }\n  uVar12 = (ushort)param_1[0x33];\n  uVar6 = (uint)uVar12;\n  uVar11 = (uint)uVar12;\n  uVar5 = -uVar11 & 7;\n  if (param_3 < uVar5) {\n    uVar8 = *param_1;\n    uVar7 = ~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3;\n    puVar9 = param_2;\n    uVar5 = uVar11;\n    if (uVar7 == 0) goto LAB_00153dc2;\n    puVar9 = (ulong *)((long)param_2 + 1);\n    uVar2 = *param_2;\n    uVar5 = uVar11 + 1;\n    *(short *)(param_1 + 0x33) = (short)uVar5;\n    uVar6 = uVar5 & 0xffff;\n    uVar8 = uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3);\n    *param_1 = uVar8;\n    if (uVar7 == 1) goto LAB_00153dc2;\n    if (uVar7 != 2) {\n      bVar1 = *(byte *)puVar9;\n      iVar3 = uVar6 << 3;\n      uVar5 = uVar11 + 2;\n      puVar9 = (ulong *)((long)param_2 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n    }\n    puVar4 = (ulong *)((long)puVar9 + 1);\n    bVar1 = (byte)*puVar9;\n    uVar5 = uVar5 + 1;\n    while( true ) {\n      iVar3 = uVar6 << 3;\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n      puVar9 = puVar4;\nLAB_00153dc2:\n      uVar2 = *puVar9;\n      uVar11 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);\n      *param_1 = uVar8;\n      if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;\n      bVar1 = *(byte *)((long)puVar9 + 1);\n      uVar7 = uVar5 + 2;\n      uVar6 = uVar5 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      puVar4 = (ulong *)((long)puVar9 + 4);\n      uVar5 = uVar5 + 4;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar6 = uVar6 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 3);\n    }\n    return 0;\n  }\n  if (uVar5 != 0) {\n    uVar8 = *param_2;\n    param_3 = param_3 - uVar5;\n    *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n    uVar8 = (ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1;\n    *param_1 = uVar8;\n    if (uVar5 - 1 != 0) {\n      bVar1 = *(byte *)((long)param_2 + 1);\n      *(short *)(param_1 + 0x33) = (short)(uVar11 + 2);\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }\n    }\n    uVar12 = *(ushort *)((long)param_1 + 0x19a);\n    param_2 = (ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1);\n    param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ uVar8;\n    uVar12 = uVar12 + 1;\n    *(undefined2 *)(param_1 + 0x33) = 0;\n    *param_1 = 0;\n    *(ushort *)((long)param_1 + 0x19a) = uVar12;\n    if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n      FUN_001534a0(param_1 + 1);\n      *(undefined2 *)((long)param_1 + 0x19a) = 0;\n    }\n  }\n  uVar8 = param_3 >> 3;\n  uVar11 = (int)param_3 + (int)uVar8 * -8;\n  puVar9 = param_2;\n  if (uVar8 != 0) {\n    puVar9 = param_2 + uVar8;\n    uVar6 = (int)(uVar8 * 8 - 8 >> 3) + 1U & 3;\n    if (uVar6 != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 1;\n      if (param_2 == puVar9) goto LAB_00153b88;\n    }\n    do {\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 4;\n    } while (param_2 != puVar9);\n  }\nLAB_00153b88:\n  if (uVar11 != 0) {\n    puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1);\n    uVar12 = (ushort)param_1[0x33];\n    uVar7 = (uint)uVar12;\n    uVar5 = (uint)uVar12;\n    uVar6 = (uint)uVar12;\n    uVar8 = *param_1;\n    uVar11 = uVar11 & 3;\n    puVar10 = puVar9;\n    if (uVar11 != 0) {\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }\n    do {\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar4);\n  }\n  return 0;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "ulong uVar2;" (type_identifier "ulong") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "ulong *puVar4;" (type_identifier "ulong") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "ulong *puVar9;" (type_identifier "ulong") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "ulong *puVar10;" (type_identifier "ulong") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "ushort uVar12;" (type_identifier "ushort") (identifier "uVar12") (; ";")) (if_statement "if (param_3 == 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (param_2 == (ulong *)0x0) {\n                    \n    crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);\n  }" (if "if") (parenthesized_expression "(param_2 == (ulong *)0x0)" (( "(") (binary_expression "param_2 == (ulong *)0x0" (identifier "param_2") (== "==") (cast_expression "(ulong *)0x0" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n    crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);\n  }" ({ "{") (expression_statement "crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);" (call_expression "crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf)" (identifier "crypt_argchk") (argument_list "("in != NULL","src/hashes/sha3.c",0xbf)" (( "(") (string_literal ""in != NULL"" (" """) (string_content "in != NULL") (" """)) (, ",") (string_literal ""src/hashes/sha3.c"" (" """) (string_content "src/hashes/sha3.c") (" """)) (, ",") (number_literal "0xbf") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar12 = (ushort)param_1[0x33];" (assignment_expression "uVar12 = (ushort)param_1[0x33]" (identifier "uVar12") (= "=") (cast_expression "(ushort)param_1[0x33]" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (subscript_expression "param_1[0x33]" (identifier "param_1") ([ "[") (number_literal "0x33") (] "]")))) (; ";")) (expression_statement "uVar6 = (uint)uVar12;" (assignment_expression "uVar6 = (uint)uVar12" (identifier "uVar6") (= "=") (cast_expression "(uint)uVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar12"))) (; ";")) (expression_statement "uVar11 = (uint)uVar12;" (assignment_expression "uVar11 = (uint)uVar12" (identifier "uVar11") (= "=") (cast_expression "(uint)uVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar12"))) (; ";")) (expression_statement "uVar5 = -uVar11 & 7;" (assignment_expression "uVar5 = -uVar11 & 7" (identifier "uVar5") (= "=") (binary_expression "-uVar11 & 7" (unary_expression "-uVar11" (- "-") (identifier "uVar11")) (& "&") (number_literal "7"))) (; ";")) (if_statement "if (param_3 < uVar5) {\n    uVar8 = *param_1;\n    uVar7 = ~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3;\n    puVar9 = param_2;\n    uVar5 = uVar11;\n    if (uVar7 == 0) goto LAB_00153dc2;\n    puVar9 = (ulong *)((long)param_2 + 1);\n    uVar2 = *param_2;\n    uVar5 = uVar11 + 1;\n    *(short *)(param_1 + 0x33) = (short)uVar5;\n    uVar6 = uVar5 & 0xffff;\n    uVar8 = uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3);\n    *param_1 = uVar8;\n    if (uVar7 == 1) goto LAB_00153dc2;\n    if (uVar7 != 2) {\n      bVar1 = *(byte *)puVar9;\n      iVar3 = uVar6 << 3;\n      uVar5 = uVar11 + 2;\n      puVar9 = (ulong *)((long)param_2 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n    }\n    puVar4 = (ulong *)((long)puVar9 + 1);\n    bVar1 = (byte)*puVar9;\n    uVar5 = uVar5 + 1;\n    while( true ) {\n      iVar3 = uVar6 << 3;\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n      puVar9 = puVar4;\nLAB_00153dc2:\n      uVar2 = *puVar9;\n      uVar11 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);\n      *param_1 = uVar8;\n      if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;\n      bVar1 = *(byte *)((long)puVar9 + 1);\n      uVar7 = uVar5 + 2;\n      uVar6 = uVar5 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      puVar4 = (ulong *)((long)puVar9 + 4);\n      uVar5 = uVar5 + 4;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar6 = uVar6 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 3);\n    }\n    return 0;\n  }" (if "if") (parenthesized_expression "(param_3 < uVar5)" (( "(") (binary_expression "param_3 < uVar5" (identifier "param_3") (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\n    uVar8 = *param_1;\n    uVar7 = ~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3;\n    puVar9 = param_2;\n    uVar5 = uVar11;\n    if (uVar7 == 0) goto LAB_00153dc2;\n    puVar9 = (ulong *)((long)param_2 + 1);\n    uVar2 = *param_2;\n    uVar5 = uVar11 + 1;\n    *(short *)(param_1 + 0x33) = (short)uVar5;\n    uVar6 = uVar5 & 0xffff;\n    uVar8 = uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3);\n    *param_1 = uVar8;\n    if (uVar7 == 1) goto LAB_00153dc2;\n    if (uVar7 != 2) {\n      bVar1 = *(byte *)puVar9;\n      iVar3 = uVar6 << 3;\n      uVar5 = uVar11 + 2;\n      puVar9 = (ulong *)((long)param_2 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n    }\n    puVar4 = (ulong *)((long)puVar9 + 1);\n    bVar1 = (byte)*puVar9;\n    uVar5 = uVar5 + 1;\n    while( true ) {\n      iVar3 = uVar6 << 3;\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n      puVar9 = puVar4;\nLAB_00153dc2:\n      uVar2 = *puVar9;\n      uVar11 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);\n      *param_1 = uVar8;\n      if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;\n      bVar1 = *(byte *)((long)puVar9 + 1);\n      uVar7 = uVar5 + 2;\n      uVar6 = uVar5 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      puVar4 = (ulong *)((long)puVar9 + 4);\n      uVar5 = uVar5 + 4;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar6 = uVar6 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 3);\n    }\n    return 0;\n  }" ({ "{") (expression_statement "uVar8 = *param_1;" (assignment_expression "uVar8 = *param_1" (identifier "uVar8") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar7 = ~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3;" (assignment_expression "uVar7 = ~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3" (identifier "uVar7") (= "=") (binary_expression "~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3" (binary_expression "~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2)" (unary_expression "~(uint)param_2" (~ "~") (cast_expression "(uint)param_2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_2"))) (+ "+") (cast_expression "(int)(byte *)(param_3 + (long)param_2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(byte *)(param_3 + (long)param_2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + (long)param_2)" (( "(") (binary_expression "param_3 + (long)param_2" (identifier "param_3") (+ "+") (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2"))) () ")"))))) (& "&") (number_literal "3"))) (; ";")) (expression_statement "puVar9 = param_2;" (assignment_expression "puVar9 = param_2" (identifier "puVar9") (= "=") (identifier "param_2")) (; ";")) (expression_statement "uVar5 = uVar11;" (assignment_expression "uVar5 = uVar11" (identifier "uVar5") (= "=") (identifier "uVar11")) (; ";")) (if_statement "if (uVar7 == 0) goto LAB_00153dc2;" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00153dc2;" (goto "goto") (statement_identifier "LAB_00153dc2") (; ";"))) (expression_statement "puVar9 = (ulong *)((long)param_2 + 1);" (assignment_expression "puVar9 = (ulong *)((long)param_2 + 1)" (identifier "puVar9") (= "=") (cast_expression "(ulong *)((long)param_2 + 1)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 1)" (( "(") (binary_expression "(long)param_2 + 1" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" (identifier "uVar2") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "uVar5 = uVar11 + 1;" (assignment_expression "uVar5 = uVar11 + 1" (identifier "uVar5") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar5;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar5" (pointer_expression "*(short *)(param_1 + 0x33)" (* "*") (cast_expression "(short *)(param_1 + 0x33)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (= "=") (cast_expression "(short)uVar5" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar5"))) (; ";")) (expression_statement "uVar6 = uVar5 & 0xffff;" (assignment_expression "uVar6 = uVar5 & 0xffff" (identifier "uVar6") (= "=") (binary_expression "uVar5 & 0xffff" (identifier "uVar5") (& "&") (number_literal "0xffff"))) (; ";")) (expression_statement "uVar8 = uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3);" (assignment_expression "uVar8 = uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3)" (identifier "uVar8") (= "=") (binary_expression "uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3)" (identifier "uVar8") (| "|") (binary_expression "(ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3)" (cast_expression "(ulong)(byte)uVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(byte)uVar2" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar2"))) (<< "<<") (parenthesized_expression "(((byte)uVar12 & 7) << 3)" (( "(") (binary_expression "((byte)uVar12 & 7) << 3" (parenthesized_expression "((byte)uVar12 & 7)" (( "(") (binary_expression "(byte)uVar12 & 7" (cast_expression "(byte)uVar12" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar12")) (& "&") (number_literal "7")) () ")")) (<< "<<") (number_literal "3")) () ")"))))) (; ";")) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (uVar7 == 1) goto LAB_00153dc2;" (if "if") (parenthesized_expression "(uVar7 == 1)" (( "(") (binary_expression "uVar7 == 1" (identifier "uVar7") (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_00153dc2;" (goto "goto") (statement_identifier "LAB_00153dc2") (; ";"))) (if_statement "if (uVar7 != 2) {\n      bVar1 = *(byte *)puVar9;\n      iVar3 = uVar6 << 3;\n      uVar5 = uVar11 + 2;\n      puVar9 = (ulong *)((long)param_2 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n    }" (if "if") (parenthesized_expression "(uVar7 != 2)" (( "(") (binary_expression "uVar7 != 2" (identifier "uVar7") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n      bVar1 = *(byte *)puVar9;\n      iVar3 = uVar6 << 3;\n      uVar5 = uVar11 + 2;\n      puVar9 = (ulong *)((long)param_2 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n    }" ({ "{") (expression_statement "bVar1 = *(byte *)puVar9;" (assignment_expression "bVar1 = *(byte *)puVar9" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)puVar9" (* "*") (cast_expression "(byte *)puVar9" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar9")))) (; ";")) (expression_statement "iVar3 = uVar6 << 3;" (assignment_expression "iVar3 = uVar6 << 3" (identifier "iVar3") (= "=") (binary_expression "uVar6 << 3" (identifier "uVar6") (<< "<<") (number_literal "3"))) (; ";")) (expression_statement "uVar5 = uVar11 + 2;" (assignment_expression "uVar5 = uVar11 + 2" (identifier "uVar5") (= "=") (binary_expression "uVar11 + 2" (identifier "uVar11") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar9 = (ulong *)((long)param_2 + 2);" (assignment_expression "puVar9 = (ulong *)((long)param_2 + 2)" (identifier "puVar9") (= "=") (cast_expression "(ulong *)((long)param_2 + 2)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 2)" (( "(") (binary_expression "(long)param_2 + 2" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar5;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar5" (pointer_expression "*(short *)(param_1 + 0x33)" (* "*") (cast_expression "(short *)(param_1 + 0x33)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (= "=") (cast_expression "(short)uVar5" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar5"))) (; ";")) (expression_statement "uVar6 = uVar5 & 0xffff;" (assignment_expression "uVar6 = uVar5 & 0xffff" (identifier "uVar6") (= "=") (binary_expression "uVar5 & 0xffff" (identifier "uVar5") (& "&") (number_literal "0xffff"))) (; ";")) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f)" (identifier "uVar8") (= "=") (binary_expression "uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f)" (identifier "uVar8") (| "|") (binary_expression "(ulong)bVar1 << ((byte)iVar3 & 0x3f)" (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1")) (<< "<<") (parenthesized_expression "((byte)iVar3 & 0x3f)" (( "(") (binary_expression "(byte)iVar3 & 0x3f" (cast_expression "(byte)iVar3" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar3")) (& "&") (number_literal "0x3f")) () ")"))))) (; ";")) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar8")) (; ";")) (} "}"))) (expression_statement "puVar4 = (ulong *)((long)puVar9 + 1);" (assignment_expression "puVar4 = (ulong *)((long)puVar9 + 1)" (identifier "puVar4") (= "=") (cast_expression "(ulong *)((long)puVar9 + 1)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar9 + 1)" (( "(") (binary_expression "(long)puVar9 + 1" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "bVar1 = (byte)*puVar9;" (assignment_expression "bVar1 = (byte)*puVar9" (identifier "bVar1") (= "=") (binary_expression "(byte)*puVar9" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (* "*") (identifier "puVar9"))) (; ";")) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" (identifier "uVar5") (= "=") (binary_expression "uVar5 + 1" (identifier "uVar5") (+ "+") (number_literal "1"))) (; ";")) (while_statement "while( true ) {\n      iVar3 = uVar6 << 3;\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n      puVar9 = puVar4;\nLAB_00153dc2:\n      uVar2 = *puVar9;\n      uVar11 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);\n      *param_1 = uVar8;\n      if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;\n      bVar1 = *(byte *)((long)puVar9 + 1);\n      uVar7 = uVar5 + 2;\n      uVar6 = uVar5 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      puVar4 = (ulong *)((long)puVar9 + 4);\n      uVar5 = uVar5 + 4;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar6 = uVar6 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 3);\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      iVar3 = uVar6 << 3;\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar6 = uVar5 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);\n      *param_1 = uVar8;\n      puVar9 = puVar4;\nLAB_00153dc2:\n      uVar2 = *puVar9;\n      uVar11 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);\n      *param_1 = uVar8;\n      if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;\n      bVar1 = *(byte *)((long)puVar9 + 1);\n      uVar7 = uVar5 + 2;\n      uVar6 = uVar5 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      puVar4 = (ulong *)((long)puVar9 + 4);\n      uVar5 = uVar5 + 4;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar6 = uVar6 & 0xffff;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar9 + 3);\n    }" ({ "{") (expression_statement "iVar3 = uVar6 << 3;" (assignment_expression "iVar3 = uVar6 << 3" (identifier "iVar3") (= "=") (binary_expression "uVar6 << 3" (identifier "uVar6") (<< "<<") (number_literal "3"))) (; ";")) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar5;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar5" (pointer_expression "*(short *)(param_1 + 0x33)" (* "*") (cast_expression "(short *)(param_1 + 0x33)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (= "=") (cast_expression "(short)uVar5" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar5"))) (; ";")) (expression_statement "uVar6 = uVar5 & 0xffff;" (assignment_expression "uVar6 = uVar5 & 0xffff" (identifier "uVar6") (= "=") (binary_expression "uVar5 & 0xffff" (identifier "uVar5") (& "&") (number_literal "0xffff"))) (; ";")) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f)" (identifier "uVar8") (= "=") (binary_expression "uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f)" (identifier "uVar8") (| "|") (binary_expression "(ulong)bVar1 << ((byte)iVar3 & 0x3f)" (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1")) (<< "<<") (parenthesized_expression "((byte)iVar3 & 0x3f)" (( "(") (binary_expression "(byte)iVar3 & 0x3f" (cast_expression "(byte)iVar3" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar3")) (& "&") (number_literal "0x3f")) () ")"))))) (; ";")) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "puVar9 = puVar4;" (assignment_expression "puVar9 = puVar4" (identifier "puVar9") (= "=") (identifier "puVar4")) (; ";")) (labeled_statement "LAB_00153dc2:\n      uVar2 = *puVar9;" (statement_identifier "LAB_00153dc2") (: ":") (expression_statement "uVar2 = *puVar9;" (assignment_expression "uVar2 = *puVar9" (identifier "uVar2") (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";"))) (expression_statement "uVar11 = uVar5 + 1;" (assignment_expression "uVar11 = uVar5 + 1" (identifier "uVar11") (= "=") (binary_expression "uVar5 + 1" (identifier "uVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar11;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar11" (pointer_expression "*(short *)(param_1 + 0x33)" (* "*") (cast_expression "(short *)(param_1 + 0x33)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (= "=") (cast_expression "(short)uVar11" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar11"))) (; ";")) (expression_statement "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f)" (identifier "uVar8") (= "=") (binary_expression "uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f)" (identifier "uVar8") (| "|") (binary_expression "(ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f)" (cast_expression "(ulong)(byte)uVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(byte)uVar2" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar2"))) (<< "<<") (parenthesized_expression "((byte)(uVar6 << 3) & 0x3f)" (( "(") (binary_expression "(byte)(uVar6 << 3) & 0x3f" (call_expression "(byte)(uVar6 << 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar6 << 3)" (( "(") (binary_expression "uVar6 << 3" (identifier "uVar6") (<< "<<") (number_literal "3")) () ")"))) (& "&") (number_literal "0x3f")) () ")"))))) (; ";")) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar8")) (; ";")) (if_statement "if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;" (if "if") (parenthesized_expression "((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2))" (( "(") (binary_expression "(byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)" (cast_expression "(byte *)((long)puVar9 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar9 + 1)" (( "(") (binary_expression "(long)puVar9 + 1" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (+ "+") (number_literal "1")) () ")"))) (== "==") (cast_expression "(byte *)(param_3 + (long)param_2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + (long)param_2)" (( "(") (binary_expression "param_3 + (long)param_2" (identifier "param_3") (+ "+") (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2"))) () ")")))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "bVar1 = *(byte *)((long)puVar9 + 1);" (assignment_expression "bVar1 = *(byte *)((long)puVar9 + 1)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)((long)puVar9 + 1)" (* "*") (cast_expression "(byte *)((long)puVar9 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar9 + 1)" (( "(") (binary_expression "(long)puVar9 + 1" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "uVar7 = uVar5 + 2;" (assignment_expression "uVar7 = uVar5 + 2" (identifier "uVar7") (= "=") (binary_expression "uVar5 + 2" (identifier "uVar5") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar6 = uVar5 + 3;" (assignment_expression "uVar6 = uVar5 + 3" (identifier "uVar6") (= "=") (binary_expression "uVar5 + 3" (identifier "uVar5") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar7;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar7" (pointer_expression "*(short *)(param_1 + 0x33)" (* "*") (cast_expression "(short *)(param_1 + 0x33)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (= "=") (cast_expression "(short)uVar7" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar7"))) (; ";")) (expression_statement "puVar4 = (ulong *)((long)puVar9 + 4);" (assignment_expression "puVar4 = (ulong *)((long)puVar9 + 4)" (identifier "puVar4") (= "=") (cast_expression "(ulong *)((long)puVar9 + 4)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar9 + 4)" (( "(") (binary_expression "(long)puVar9 + 4" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "uVar5 = uVar5 + 4;" (assignment_expression "uVar5 = uVar5 + 4" (identifier "uVar5") (= "=") (binary_expression "uVar5 + 4" (identifier "uVar5") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f)" (identifier "uVar8") (= "=") (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f)" (identifier "uVar8") (| "|") (binary_expression "(ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1")) (<< "<<") (parenthesized_expression "((byte)((uVar11 & 0xffff) << 3) & 0x3f)" (( "(") (binary_expression "(byte)((uVar11 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar11 & 0xffff) << 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uVar11 & 0xffff) << 3)" (( "(") (binary_expression "(uVar11 & 0xffff) << 3" (parenthesized_expression "(uVar11 & 0xffff)" (( "(") (binary_expression "uVar11 & 0xffff" (identifier "uVar11") (& "&") (number_literal "0xffff")) () ")")) (<< "<<") (number_literal "3")) () ")"))) (& "&") (number_literal "0x3f")) () ")"))))) (; ";")) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "bVar1 = *(byte *)((long)puVar9 + 2);" (assignment_expression "bVar1 = *(byte *)((long)puVar9 + 2)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)((long)puVar9 + 2)" (* "*") (cast_expression "(byte *)((long)puVar9 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar9 + 2)" (( "(") (binary_expression "(long)puVar9 + 2" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar6;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar6" (pointer_expression "*(short *)(param_1 + 0x33)" (* "*") (cast_expression "(short *)(param_1 + 0x33)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (= "=") (cast_expression "(short)uVar6" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar6"))) (; ";")) (expression_statement "uVar6 = uVar6 & 0xffff;" (assignment_expression "uVar6 = uVar6 & 0xffff" (identifier "uVar6") (= "=") (binary_expression "uVar6 & 0xffff" (identifier "uVar6") (& "&") (number_literal "0xffff"))) (; ";")) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f)" (identifier "uVar8") (= "=") (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f)" (identifier "uVar8") (| "|") (binary_expression "(ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1")) (<< "<<") (parenthesized_expression "((byte)((uVar7 & 0xffff) << 3) & 0x3f)" (( "(") (binary_expression "(byte)((uVar7 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar7 & 0xffff) << 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uVar7 & 0xffff) << 3)" (( "(") (binary_expression "(uVar7 & 0xffff) << 3" (parenthesized_expression "(uVar7 & 0xffff)" (( "(") (binary_expression "uVar7 & 0xffff" (identifier "uVar7") (& "&") (number_literal "0xffff")) () ")")) (<< "<<") (number_literal "3")) () ")"))) (& "&") (number_literal "0x3f")) () ")"))))) (; ";")) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "bVar1 = *(byte *)((long)puVar9 + 3);" (assignment_expression "bVar1 = *(byte *)((long)puVar9 + 3)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)((long)puVar9 + 3)" (* "*") (cast_expression "(byte *)((long)puVar9 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar9 + 3)" (( "(") (binary_expression "(long)puVar9 + 3" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (+ "+") (number_literal "3")) () ")"))))) (; ";")) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (uVar5 != 0) {\n    uVar8 = *param_2;\n    param_3 = param_3 - uVar5;\n    *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n    uVar8 = (ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1;\n    *param_1 = uVar8;\n    if (uVar5 - 1 != 0) {\n      bVar1 = *(byte *)((long)param_2 + 1);\n      *(short *)(param_1 + 0x33) = (short)(uVar11 + 2);\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }\n    }\n    uVar12 = *(ushort *)((long)param_1 + 0x19a);\n    param_2 = (ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1);\n    param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ uVar8;\n    uVar12 = uVar12 + 1;\n    *(undefined2 *)(param_1 + 0x33) = 0;\n    *param_1 = 0;\n    *(ushort *)((long)param_1 + 0x19a) = uVar12;\n    if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n      FUN_001534a0(param_1 + 1);\n      *(undefined2 *)((long)param_1 + 0x19a) = 0;\n    }\n  }" (if "if") (parenthesized_expression "(uVar5 != 0)" (( "(") (binary_expression "uVar5 != 0" (identifier "uVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar8 = *param_2;\n    param_3 = param_3 - uVar5;\n    *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n    uVar8 = (ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1;\n    *param_1 = uVar8;\n    if (uVar5 - 1 != 0) {\n      bVar1 = *(byte *)((long)param_2 + 1);\n      *(short *)(param_1 + 0x33) = (short)(uVar11 + 2);\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }\n    }\n    uVar12 = *(ushort *)((long)param_1 + 0x19a);\n    param_2 = (ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1);\n    param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ uVar8;\n    uVar12 = uVar12 + 1;\n    *(undefined2 *)(param_1 + 0x33) = 0;\n    *param_1 = 0;\n    *(ushort *)((long)param_1 + 0x19a) = uVar12;\n    if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n      FUN_001534a0(param_1 + 1);\n      *(undefined2 *)((long)param_1 + 0x19a) = 0;\n    }\n  }" ({ "{") (expression_statement "uVar8 = *param_2;" (assignment_expression "uVar8 = *param_2" (identifier "uVar8") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "param_3 = param_3 - uVar5;" (assignment_expression "param_3 = param_3 - uVar5" (identifier "param_3") (= "=") (binary_expression "param_3 - uVar5" (identifier "param_3") (- "-") (identifier "uVar5"))) (; ";")) (expression_statement "*(short *)(param_1 + 0x33) = (short)(uVar12 + 1);" (assignment_expression "*(short *)(param_1 + 0x33) = (short)(uVar12 + 1)" (pointer_expression "*(short *)(param_1 + 0x33)" (* "*") (cast_expression "(short *)(param_1 + 0x33)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (= "=") (cast_expression "(short)(uVar12 + 1)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (parenthesized_expression "(uVar12 + 1)" (( "(") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar8 = (ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1;" (assignment_expression "uVar8 = (ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1" (identifier "uVar8") (= "=") (binary_expression "(ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1" (binary_expression "(ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3)" (cast_expression "(ulong)(byte)uVar8" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(byte)uVar8" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar8"))) (<< "<<") (parenthesized_expression "(((byte)uVar12 & 7) << 3)" (( "(") (binary_expression "((byte)uVar12 & 7) << 3" (parenthesized_expression "((byte)uVar12 & 7)" (( "(") (binary_expression "(byte)uVar12 & 7" (cast_expression "(byte)uVar12" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar12")) (& "&") (number_literal "7")) () ")")) (<< "<<") (number_literal "3")) () ")"))) (| "|") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (uVar5 - 1 != 0) {\n      bVar1 = *(byte *)((long)param_2 + 1);\n      *(short *)(param_1 + 0x33) = (short)(uVar11 + 2);\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }\n    }" (if "if") (parenthesized_expression "(uVar5 - 1 != 0)" (( "(") (binary_expression "uVar5 - 1 != 0" (binary_expression "uVar5 - 1" (identifier "uVar5") (- "-") (number_literal "1")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      bVar1 = *(byte *)((long)param_2 + 1);\n      *(short *)(param_1 + 0x33) = (short)(uVar11 + 2);\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }\n    }" ({ "{") (expression_statement "bVar1 = *(byte *)((long)param_2 + 1);" (assignment_expression "bVar1 = *(byte *)((long)param_2 + 1)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)((long)param_2 + 1)" (* "*") (cast_expression "(byte *)((long)param_2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 1)" (( "(") (binary_expression "(long)param_2 + 1" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "*(short *)(param_1 + 0x33) = (short)(uVar11 + 2);" (assignment_expression "*(short *)(param_1 + 0x33) = (short)(uVar11 + 2)" (pointer_expression "*(short *)(param_1 + 0x33)" (* "*") (cast_expression "(short *)(param_1 + 0x33)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (= "=") (cast_expression "(short)(uVar11 + 2)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (parenthesized_expression "(uVar11 + 2)" (( "(") (binary_expression "uVar11 + 2" (identifier "uVar11") (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f)" (identifier "uVar8") (= "=") (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f)" (identifier "uVar8") (| "|") (binary_expression "(ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1")) (<< "<<") (parenthesized_expression "((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f)" (( "(") (binary_expression "(byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar12 + 1 & 0xffff) << 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uVar12 + 1 & 0xffff) << 3)" (( "(") (binary_expression "(uVar12 + 1 & 0xffff) << 3" (parenthesized_expression "(uVar12 + 1 & 0xffff)" (( "(") (binary_expression "uVar12 + 1 & 0xffff" (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1")) (& "&") (number_literal "0xffff")) () ")")) (<< "<<") (number_literal "3")) () ")"))) (& "&") (number_literal "0x3f")) () ")"))))) (; ";")) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (uVar5 != 2) {\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "(uVar5 != 2)" (( "(") (binary_expression "uVar5 != 2" (identifier "uVar5") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n        bVar1 = *(byte *)((long)param_2 + 2);\n        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);\n        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);\n        *param_1 = uVar8;\n        if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }\n      }" ({ "{") (expression_statement "bVar1 = *(byte *)((long)param_2 + 2);" (assignment_expression "bVar1 = *(byte *)((long)param_2 + 2)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)((long)param_2 + 2)" (* "*") (cast_expression "(byte *)((long)param_2 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 2)" (( "(") (binary_expression "(long)param_2 + 2" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(short *)(param_1 + 0x33) = (short)(uVar11 + 3);" (assignment_expression "*(short *)(param_1 + 0x33) = (short)(uVar11 + 3)" (pointer_expression "*(short *)(param_1 + 0x33)" (* "*") (cast_expression "(short *)(param_1 + 0x33)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (= "=") (cast_expression "(short)(uVar11 + 3)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (parenthesized_expression "(uVar11 + 3)" (( "(") (binary_expression "uVar11 + 3" (identifier "uVar11") (+ "+") (number_literal "3")) () ")")))) (; ";")) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f)" (identifier "uVar8") (= "=") (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f)" (identifier "uVar8") (| "|") (binary_expression "(ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1")) (<< "<<") (parenthesized_expression "((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f)" (( "(") (binary_expression "(byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar11 + 2 & 0xffff) << 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uVar11 + 2 & 0xffff) << 3)" (( "(") (binary_expression "(uVar11 + 2 & 0xffff) << 3" (parenthesized_expression "(uVar11 + 2 & 0xffff)" (( "(") (binary_expression "uVar11 + 2 & 0xffff" (binary_expression "uVar11 + 2" (identifier "uVar11") (+ "+") (number_literal "2")) (& "&") (number_literal "0xffff")) () ")")) (<< "<<") (number_literal "3")) () ")"))) (& "&") (number_literal "0x3f")) () ")"))))) (; ";")) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (uVar5 != 3) {\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }" (if "if") (parenthesized_expression "(uVar5 != 3)" (( "(") (binary_expression "uVar5 != 3" (identifier "uVar5") (!= "!=") (number_literal "3")) () ")")) (compound_statement "{\n          bVar1 = *(byte *)((long)param_2 + 3);\n          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);\n          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);\n          *param_1 = uVar8;\n          if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }\n        }" ({ "{") (expression_statement "bVar1 = *(byte *)((long)param_2 + 3);" (assignment_expression "bVar1 = *(byte *)((long)param_2 + 3)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)((long)param_2 + 3)" (* "*") (cast_expression "(byte *)((long)param_2 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 3)" (( "(") (binary_expression "(long)param_2 + 3" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "3")) () ")"))))) (; ";")) (expression_statement "*(short *)(param_1 + 0x33) = (short)(uVar11 + 4);" (assignment_expression "*(short *)(param_1 + 0x33) = (short)(uVar11 + 4)" (pointer_expression "*(short *)(param_1 + 0x33)" (* "*") (cast_expression "(short *)(param_1 + 0x33)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (= "=") (cast_expression "(short)(uVar11 + 4)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (parenthesized_expression "(uVar11 + 4)" (( "(") (binary_expression "uVar11 + 4" (identifier "uVar11") (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f)" (identifier "uVar8") (= "=") (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f)" (identifier "uVar8") (| "|") (binary_expression "(ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1")) (<< "<<") (parenthesized_expression "((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f)" (( "(") (binary_expression "(byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar11 + 3 & 0xffff) << 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uVar11 + 3 & 0xffff) << 3)" (( "(") (binary_expression "(uVar11 + 3 & 0xffff) << 3" (parenthesized_expression "(uVar11 + 3 & 0xffff)" (( "(") (binary_expression "uVar11 + 3 & 0xffff" (binary_expression "uVar11 + 3" (identifier "uVar11") (+ "+") (number_literal "3")) (& "&") (number_literal "0xffff")) () ")")) (<< "<<") (number_literal "3")) () ")"))) (& "&") (number_literal "0x3f")) () ")"))))) (; ";")) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (uVar5 != 4) {\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }" (if "if") (parenthesized_expression "(uVar5 != 4)" (( "(") (binary_expression "uVar5 != 4" (identifier "uVar5") (!= "!=") (number_literal "4")) () ")")) (compound_statement "{\n            bVar1 = *(byte *)((long)param_2 + 4);\n            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);\n            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);\n            *param_1 = uVar8;\n            if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }\n          }" ({ "{") (expression_statement "bVar1 = *(byte *)((long)param_2 + 4);" (assignment_expression "bVar1 = *(byte *)((long)param_2 + 4)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)((long)param_2 + 4)" (* "*") (cast_expression "(byte *)((long)param_2 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 4)" (( "(") (binary_expression "(long)param_2 + 4" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*(short *)(param_1 + 0x33) = (short)(uVar11 + 5);" (assignment_expression "*(short *)(param_1 + 0x33) = (short)(uVar11 + 5)" (pointer_expression "*(short *)(param_1 + 0x33)" (* "*") (cast_expression "(short *)(param_1 + 0x33)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (= "=") (cast_expression "(short)(uVar11 + 5)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (parenthesized_expression "(uVar11 + 5)" (( "(") (binary_expression "uVar11 + 5" (identifier "uVar11") (+ "+") (number_literal "5")) () ")")))) (; ";")) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f)" (identifier "uVar8") (= "=") (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f)" (identifier "uVar8") (| "|") (binary_expression "(ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1")) (<< "<<") (parenthesized_expression "((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f)" (( "(") (binary_expression "(byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar11 + 4 & 0xffff) << 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uVar11 + 4 & 0xffff) << 3)" (( "(") (binary_expression "(uVar11 + 4 & 0xffff) << 3" (parenthesized_expression "(uVar11 + 4 & 0xffff)" (( "(") (binary_expression "uVar11 + 4 & 0xffff" (binary_expression "uVar11 + 4" (identifier "uVar11") (+ "+") (number_literal "4")) (& "&") (number_literal "0xffff")) () ")")) (<< "<<") (number_literal "3")) () ")"))) (& "&") (number_literal "0x3f")) () ")"))))) (; ";")) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (uVar5 != 5) {\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }" (if "if") (parenthesized_expression "(uVar5 != 5)" (( "(") (binary_expression "uVar5 != 5" (identifier "uVar5") (!= "!=") (number_literal "5")) () ")")) (compound_statement "{\n              bVar1 = *(byte *)((long)param_2 + 5);\n              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);\n              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);\n              *param_1 = uVar8;\n              if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }\n            }" ({ "{") (expression_statement "bVar1 = *(byte *)((long)param_2 + 5);" (assignment_expression "bVar1 = *(byte *)((long)param_2 + 5)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)((long)param_2 + 5)" (* "*") (cast_expression "(byte *)((long)param_2 + 5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 5)" (( "(") (binary_expression "(long)param_2 + 5" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "5")) () ")"))))) (; ";")) (expression_statement "*(short *)(param_1 + 0x33) = (short)(uVar11 + 6);" (assignment_expression "*(short *)(param_1 + 0x33) = (short)(uVar11 + 6)" (pointer_expression "*(short *)(param_1 + 0x33)" (* "*") (cast_expression "(short *)(param_1 + 0x33)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (= "=") (cast_expression "(short)(uVar11 + 6)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (parenthesized_expression "(uVar11 + 6)" (( "(") (binary_expression "uVar11 + 6" (identifier "uVar11") (+ "+") (number_literal "6")) () ")")))) (; ";")) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f)" (identifier "uVar8") (= "=") (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f)" (identifier "uVar8") (| "|") (binary_expression "(ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1")) (<< "<<") (parenthesized_expression "((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f)" (( "(") (binary_expression "(byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar11 + 5 & 0xffff) << 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uVar11 + 5 & 0xffff) << 3)" (( "(") (binary_expression "(uVar11 + 5 & 0xffff) << 3" (parenthesized_expression "(uVar11 + 5 & 0xffff)" (( "(") (binary_expression "uVar11 + 5 & 0xffff" (binary_expression "uVar11 + 5" (identifier "uVar11") (+ "+") (number_literal "5")) (& "&") (number_literal "0xffff")) () ")")) (<< "<<") (number_literal "3")) () ")"))) (& "&") (number_literal "0x3f")) () ")"))))) (; ";")) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (uVar5 != 6) {\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }" (if "if") (parenthesized_expression "(uVar5 != 6)" (( "(") (binary_expression "uVar5 != 6" (identifier "uVar5") (!= "!=") (number_literal "6")) () ")")) (compound_statement "{\n                bVar1 = *(byte *)((long)param_2 + 6);\n                *(ushort *)(param_1 + 0x33) = uVar12 + 7;\n                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);\n                *param_1 = uVar8;\n              }" ({ "{") (expression_statement "bVar1 = *(byte *)((long)param_2 + 6);" (assignment_expression "bVar1 = *(byte *)((long)param_2 + 6)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)((long)param_2 + 6)" (* "*") (cast_expression "(byte *)((long)param_2 + 6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 6)" (( "(") (binary_expression "(long)param_2 + 6" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "6")) () ")"))))) (; ";")) (expression_statement "*(ushort *)(param_1 + 0x33) = uVar12 + 7;" (assignment_expression "*(ushort *)(param_1 + 0x33) = uVar12 + 7" (pointer_expression "*(ushort *)(param_1 + 0x33)" (* "*") (cast_expression "(ushort *)(param_1 + 0x33)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (= "=") (binary_expression "uVar12 + 7" (identifier "uVar12") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f)" (identifier "uVar8") (= "=") (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f)" (identifier "uVar8") (| "|") (binary_expression "(ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1")) (<< "<<") (parenthesized_expression "((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f)" (( "(") (binary_expression "(byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar11 + 6 & 0xffff) << 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uVar11 + 6 & 0xffff) << 3)" (( "(") (binary_expression "(uVar11 + 6 & 0xffff) << 3" (parenthesized_expression "(uVar11 + 6 & 0xffff)" (( "(") (binary_expression "uVar11 + 6 & 0xffff" (binary_expression "uVar11 + 6" (identifier "uVar11") (+ "+") (number_literal "6")) (& "&") (number_literal "0xffff")) () ")")) (<< "<<") (number_literal "3")) () ")"))) (& "&") (number_literal "0x3f")) () ")"))))) (; ";")) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar8")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" (identifier "uVar12") (= "=") (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")"))))) (; ";")) (expression_statement "param_2 = (ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1);" (assignment_expression "param_2 = (ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1)" (identifier "param_2") (= "=") (cast_expression "(ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + (ulong)(uVar5 - 1) + 1)" (( "(") (binary_expression "(long)param_2 + (ulong)(uVar5 - 1) + 1" (binary_expression "(long)param_2 + (ulong)(uVar5 - 1)" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (call_expression "(ulong)(uVar5 - 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar5 - 1)" (( "(") (binary_expression "uVar5 - 1" (identifier "uVar5") (- "-") (number_literal "1")) () ")")))) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ uVar8;" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ uVar8" (subscript_expression "param_1[(ulong)uVar12 + 1]" (identifier "param_1") ([ "[") (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar12")) (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "param_1[(ulong)uVar12 + 1] ^ uVar8" (subscript_expression "param_1[(ulong)uVar12 + 1]" (identifier "param_1") ([ "[") (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar12")) (+ "+") (number_literal "1")) (] "]")) (^ "^") (identifier "uVar8"))) (; ";")) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" (identifier "uVar12") (= "=") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined2 *)(param_1 + 0x33) = 0;" (assignment_expression "*(undefined2 *)(param_1 + 0x33) = 0" (pointer_expression "*(undefined2 *)(param_1 + 0x33)" (* "*") (cast_expression "(undefined2 *)(param_1 + 0x33)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n      FUN_001534a0(param_1 + 1);\n      *(undefined2 *)((long)param_1 + 0x19a) = 0;\n    }" (if "if") (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" (( "(") (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar12")) (== "==") (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" (number_literal "0x19") (- "-") (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19c)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19c)" (( "(") (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19c")) () ")")))))) () ")")) (compound_statement "{\n      FUN_001534a0(param_1 + 1);\n      *(undefined2 *)((long)param_1 + 0x19a) = 0;\n    }" ({ "{") (expression_statement "FUN_001534a0(param_1 + 1);" (call_expression "FUN_001534a0(param_1 + 1)" (identifier "FUN_001534a0") (argument_list "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar8 = param_3 >> 3;" (assignment_expression "uVar8 = param_3 >> 3" (identifier "uVar8") (= "=") (binary_expression "param_3 >> 3" (identifier "param_3") (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "uVar11 = (int)param_3 + (int)uVar8 * -8;" (assignment_expression "uVar11 = (int)param_3 + (int)uVar8 * -8" (identifier "uVar11") (= "=") (binary_expression "(int)param_3 + (int)uVar8 * -8" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (+ "+") (binary_expression "(int)uVar8 * -8" (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8")) (* "*") (number_literal "-8")))) (; ";")) (expression_statement "puVar9 = param_2;" (assignment_expression "puVar9 = param_2" (identifier "puVar9") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (uVar8 != 0) {\n    puVar9 = param_2 + uVar8;\n    uVar6 = (int)(uVar8 * 8 - 8 >> 3) + 1U & 3;\n    if (uVar6 != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 1;\n      if (param_2 == puVar9) goto LAB_00153b88;\n    }\n    do {\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 4;\n    } while (param_2 != puVar9);\n  }" (if "if") (parenthesized_expression "(uVar8 != 0)" (( "(") (binary_expression "uVar8 != 0" (identifier "uVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    puVar9 = param_2 + uVar8;\n    uVar6 = (int)(uVar8 * 8 - 8 >> 3) + 1U & 3;\n    if (uVar6 != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 1;\n      if (param_2 == puVar9) goto LAB_00153b88;\n    }\n    do {\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 4;\n    } while (param_2 != puVar9);\n  }" ({ "{") (expression_statement "puVar9 = param_2 + uVar8;" (assignment_expression "puVar9 = param_2 + uVar8" (identifier "puVar9") (= "=") (binary_expression "param_2 + uVar8" (identifier "param_2") (+ "+") (identifier "uVar8"))) (; ";")) (expression_statement "uVar6 = (int)(uVar8 * 8 - 8 >> 3) + 1U & 3;" (assignment_expression "uVar6 = (int)(uVar8 * 8 - 8 >> 3) + 1U & 3" (identifier "uVar6") (= "=") (binary_expression "(int)(uVar8 * 8 - 8 >> 3) + 1U & 3" (binary_expression "(int)(uVar8 * 8 - 8 >> 3) + 1U" (cast_expression "(int)(uVar8 * 8 - 8 >> 3)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar8 * 8 - 8 >> 3)" (( "(") (binary_expression "uVar8 * 8 - 8 >> 3" (binary_expression "uVar8 * 8 - 8" (binary_expression "uVar8 * 8" (identifier "uVar8") (* "*") (number_literal "8")) (- "-") (number_literal "8")) (>> ">>") (number_literal "3")) () ")"))) (+ "+") (number_literal "1U")) (& "&") (number_literal "3"))) (; ";")) (if_statement "if (uVar6 != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 1;\n      if (param_2 == puVar9) goto LAB_00153b88;\n    }" (if "if") (parenthesized_expression "(uVar6 != 0)" (( "(") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 1;\n      if (param_2 == puVar9) goto LAB_00153b88;\n    }" ({ "{") (if_statement "if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }" (if "if") (parenthesized_expression "(uVar6 != 1)" (( "(") (binary_expression "uVar6 != 1" (identifier "uVar6") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n        if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }\n        uVar12 = *(ushort *)((long)param_1 + 0x19a);\n        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n        uVar12 = uVar12 + 1;\n        *(ushort *)((long)param_1 + 0x19a) = uVar12;\n        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }\n        param_2 = param_2 + 1;\n      }" ({ "{") (if_statement "if (uVar6 != 2) {\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }" (if "if") (parenthesized_expression "(uVar6 != 2)" (( "(") (binary_expression "uVar6 != 2" (identifier "uVar6") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n          uVar12 = *(ushort *)((long)param_1 + 0x19a);\n          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n          uVar12 = uVar12 + 1;\n          *(ushort *)((long)param_1 + 0x19a) = uVar12;\n          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }\n          param_2 = param_2 + 1;\n        }" ({ "{") (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" (identifier "uVar12") (= "=") (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")"))))) (; ";")) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" (identifier "param_1") ([ "[") (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar12")) (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" (identifier "param_1") ([ "[") (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar12")) (+ "+") (number_literal "1")) (] "]")) (^ "^") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" (identifier "uVar12") (= "=") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }" (if "if") (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" (( "(") (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar12")) (== "==") (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" (number_literal "0x19") (- "-") (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19c)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19c)" (( "(") (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19c")) () ")")))))) () ")")) (compound_statement "{\n            FUN_001534a0(param_1 + 1);\n            *(undefined2 *)((long)param_1 + 0x19a) = 0;\n          }" ({ "{") (expression_statement "FUN_001534a0(param_1 + 1);" (call_expression "FUN_001534a0(param_1 + 1)" (identifier "FUN_001534a0") (argument_list "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" (identifier "uVar12") (= "=") (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")"))))) (; ";")) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" (identifier "param_1") ([ "[") (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar12")) (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" (identifier "param_1") ([ "[") (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar12")) (+ "+") (number_literal "1")) (] "]")) (^ "^") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" (identifier "uVar12") (= "=") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }" (if "if") (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" (( "(") (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar12")) (== "==") (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" (number_literal "0x19") (- "-") (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19c)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19c)" (( "(") (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19c")) () ")")))))) () ")")) (compound_statement "{\n          FUN_001534a0(param_1 + 1);\n          *(undefined2 *)((long)param_1 + 0x19a) = 0;\n        }" ({ "{") (expression_statement "FUN_001534a0(param_1 + 1);" (call_expression "FUN_001534a0(param_1 + 1)" (identifier "FUN_001534a0") (argument_list "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" (identifier "uVar12") (= "=") (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")"))))) (; ";")) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" (identifier "param_1") ([ "[") (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar12")) (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" (identifier "param_1") ([ "[") (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar12")) (+ "+") (number_literal "1")) (] "]")) (^ "^") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" (identifier "uVar12") (= "=") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" (if "if") (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" (( "(") (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar12")) (== "==") (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" (number_literal "0x19") (- "-") (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19c)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19c)" (( "(") (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19c")) () ")")))))) () ")")) (compound_statement "{\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" ({ "{") (expression_statement "FUN_001534a0(param_1 + 1);" (call_expression "FUN_001534a0(param_1 + 1)" (identifier "FUN_001534a0") (argument_list "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (param_2 == puVar9) goto LAB_00153b88;" (if "if") (parenthesized_expression "(param_2 == puVar9)" (( "(") (binary_expression "param_2 == puVar9" (identifier "param_2") (== "==") (identifier "puVar9")) () ")")) (goto_statement "goto LAB_00153b88;" (goto "goto") (statement_identifier "LAB_00153b88") (; ";"))) (} "}"))) (do_statement "do {\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 4;\n    } while (param_2 != puVar9);" (do "do") (compound_statement "{\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      uVar12 = *(ushort *)((long)param_1 + 0x19a);\n      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];\n      uVar12 = uVar12 + 1;\n      *(ushort *)((long)param_1 + 0x19a) = uVar12;\n      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }\n      param_2 = param_2 + 4;\n    }" ({ "{") (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" (identifier "uVar12") (= "=") (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")"))))) (; ";")) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" (identifier "param_1") ([ "[") (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar12")) (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "param_1[(ulong)uVar12 + 1] ^ *param_2" (subscript_expression "param_1[(ulong)uVar12 + 1]" (identifier "param_1") ([ "[") (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar12")) (+ "+") (number_literal "1")) (] "]")) (^ "^") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" (identifier "uVar12") (= "=") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" (if "if") (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" (( "(") (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar12")) (== "==") (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" (number_literal "0x19") (- "-") (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19c)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19c)" (( "(") (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19c")) () ")")))))) () ")")) (compound_statement "{\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" ({ "{") (expression_statement "FUN_001534a0(param_1 + 1);" (call_expression "FUN_001534a0(param_1 + 1)" (identifier "FUN_001534a0") (argument_list "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" (identifier "uVar12") (= "=") (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")"))))) (; ";")) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1]" (subscript_expression "param_1[(ulong)uVar12 + 1]" (identifier "param_1") ([ "[") (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar12")) (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "param_1[(ulong)uVar12 + 1] ^ param_2[1]" (subscript_expression "param_1[(ulong)uVar12 + 1]" (identifier "param_1") ([ "[") (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar12")) (+ "+") (number_literal "1")) (] "]")) (^ "^") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" (identifier "uVar12") (= "=") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" (if "if") (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" (( "(") (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar12")) (== "==") (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" (number_literal "0x19") (- "-") (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19c)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19c)" (( "(") (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19c")) () ")")))))) () ")")) (compound_statement "{\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" ({ "{") (expression_statement "FUN_001534a0(param_1 + 1);" (call_expression "FUN_001534a0(param_1 + 1)" (identifier "FUN_001534a0") (argument_list "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" (identifier "uVar12") (= "=") (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")"))))) (; ";")) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2]" (subscript_expression "param_1[(ulong)uVar12 + 1]" (identifier "param_1") ([ "[") (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar12")) (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "param_1[(ulong)uVar12 + 1] ^ param_2[2]" (subscript_expression "param_1[(ulong)uVar12 + 1]" (identifier "param_1") ([ "[") (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar12")) (+ "+") (number_literal "1")) (] "]")) (^ "^") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" (identifier "uVar12") (= "=") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" (if "if") (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" (( "(") (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar12")) (== "==") (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" (number_literal "0x19") (- "-") (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19c)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19c)" (( "(") (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19c")) () ")")))))) () ")")) (compound_statement "{\n        FUN_001534a0();\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" ({ "{") (expression_statement "FUN_001534a0();" (call_expression "FUN_001534a0()" (identifier "FUN_001534a0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar12 = *(ushort *)((long)param_1 + 0x19a);" (assignment_expression "uVar12 = *(ushort *)((long)param_1 + 0x19a)" (identifier "uVar12") (= "=") (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")"))))) (; ";")) (expression_statement "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];" (assignment_expression "param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3]" (subscript_expression "param_1[(ulong)uVar12 + 1]" (identifier "param_1") ([ "[") (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar12")) (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "param_1[(ulong)uVar12 + 1] ^ param_2[3]" (subscript_expression "param_1[(ulong)uVar12 + 1]" (identifier "param_1") ([ "[") (binary_expression "(ulong)uVar12 + 1" (cast_expression "(ulong)uVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar12")) (+ "+") (number_literal "1")) (] "]")) (^ "^") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" (identifier "uVar12") (= "=") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(ushort *)((long)param_1 + 0x19a) = uVar12;" (assignment_expression "*(ushort *)((long)param_1 + 0x19a) = uVar12" (pointer_expression "*(ushort *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (if_statement "if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" (if "if") (parenthesized_expression "((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c))" (( "(") (binary_expression "(uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)" (cast_expression "(uint)uVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar12")) (== "==") (binary_expression "0x19 - *(ushort *)((long)param_1 + 0x19c)" (number_literal "0x19") (- "-") (pointer_expression "*(ushort *)((long)param_1 + 0x19c)" (* "*") (cast_expression "(ushort *)((long)param_1 + 0x19c)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19c)" (( "(") (binary_expression "(long)param_1 + 0x19c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19c")) () ")")))))) () ")")) (compound_statement "{\n        FUN_001534a0(param_1 + 1);\n        *(undefined2 *)((long)param_1 + 0x19a) = 0;\n      }" ({ "{") (expression_statement "FUN_001534a0(param_1 + 1);" (call_expression "FUN_001534a0(param_1 + 1)" (identifier "FUN_001534a0") (argument_list "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "*(undefined2 *)((long)param_1 + 0x19a) = 0;" (assignment_expression "*(undefined2 *)((long)param_1 + 0x19a) = 0" (pointer_expression "*(undefined2 *)((long)param_1 + 0x19a)" (* "*") (cast_expression "(undefined2 *)((long)param_1 + 0x19a)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x19a)" (( "(") (binary_expression "(long)param_1 + 0x19a" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x19a")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" (identifier "param_2") (= "=") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_2 != puVar9)" (( "(") (binary_expression "param_2 != puVar9" (identifier "param_2") (!= "!=") (identifier "puVar9")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00153b88:\n  if (uVar11 != 0) {\n    puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1);\n    uVar12 = (ushort)param_1[0x33];\n    uVar7 = (uint)uVar12;\n    uVar5 = (uint)uVar12;\n    uVar6 = (uint)uVar12;\n    uVar8 = *param_1;\n    uVar11 = uVar11 & 3;\n    puVar10 = puVar9;\n    if (uVar11 != 0) {\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }\n    do {\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar4);\n  }" (statement_identifier "LAB_00153b88") (: ":") (if_statement "if (uVar11 != 0) {\n    puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1);\n    uVar12 = (ushort)param_1[0x33];\n    uVar7 = (uint)uVar12;\n    uVar5 = (uint)uVar12;\n    uVar6 = (uint)uVar12;\n    uVar8 = *param_1;\n    uVar11 = uVar11 & 3;\n    puVar10 = puVar9;\n    if (uVar11 != 0) {\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }\n    do {\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar4);\n  }" (if "if") (parenthesized_expression "(uVar11 != 0)" (( "(") (binary_expression "uVar11 != 0" (identifier "uVar11") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1);\n    uVar12 = (ushort)param_1[0x33];\n    uVar7 = (uint)uVar12;\n    uVar5 = (uint)uVar12;\n    uVar6 = (uint)uVar12;\n    uVar8 = *param_1;\n    uVar11 = uVar11 & 3;\n    puVar10 = puVar9;\n    if (uVar11 != 0) {\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }\n    do {\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar4);\n  }" ({ "{") (expression_statement "puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1);" (assignment_expression "puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1)" (identifier "puVar4") (= "=") (cast_expression "(ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar9 + (ulong)(uVar11 - 1) + 1)" (( "(") (binary_expression "(long)puVar9 + (ulong)(uVar11 - 1) + 1" (binary_expression "(long)puVar9 + (ulong)(uVar11 - 1)" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (+ "+") (call_expression "(ulong)(uVar11 - 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar11 - 1)" (( "(") (binary_expression "uVar11 - 1" (identifier "uVar11") (- "-") (number_literal "1")) () ")")))) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar12 = (ushort)param_1[0x33];" (assignment_expression "uVar12 = (ushort)param_1[0x33]" (identifier "uVar12") (= "=") (cast_expression "(ushort)param_1[0x33]" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (subscript_expression "param_1[0x33]" (identifier "param_1") ([ "[") (number_literal "0x33") (] "]")))) (; ";")) (expression_statement "uVar7 = (uint)uVar12;" (assignment_expression "uVar7 = (uint)uVar12" (identifier "uVar7") (= "=") (cast_expression "(uint)uVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar12"))) (; ";")) (expression_statement "uVar5 = (uint)uVar12;" (assignment_expression "uVar5 = (uint)uVar12" (identifier "uVar5") (= "=") (cast_expression "(uint)uVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar12"))) (; ";")) (expression_statement "uVar6 = (uint)uVar12;" (assignment_expression "uVar6 = (uint)uVar12" (identifier "uVar6") (= "=") (cast_expression "(uint)uVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar12"))) (; ";")) (expression_statement "uVar8 = *param_1;" (assignment_expression "uVar8 = *param_1" (identifier "uVar8") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar11 = uVar11 & 3;" (assignment_expression "uVar11 = uVar11 & 3" (identifier "uVar11") (= "=") (binary_expression "uVar11 & 3" (identifier "uVar11") (& "&") (number_literal "3"))) (; ";")) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" (identifier "puVar10") (= "=") (identifier "puVar9")) (; ";")) (if_statement "if (uVar11 != 0) {\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }" (if "if") (parenthesized_expression "(uVar11 != 0)" (( "(") (binary_expression "uVar11 != 0" (identifier "uVar11") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }\n      uVar2 = *puVar9;\n      uVar7 = uVar5 + 1;\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      puVar10 = (ulong *)((long)puVar9 + 1);\n      if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }\n    }" ({ "{") (if_statement "if (uVar11 != 1) {\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }" (if "if") (parenthesized_expression "(uVar11 != 1)" (( "(") (binary_expression "uVar11 != 1" (identifier "uVar11") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n        if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }\n        uVar2 = *puVar9;\n        uVar5 = uVar6 + 1;\n        puVar9 = (ulong *)((long)puVar9 + 1);\n        *(short *)(param_1 + 0x33) = (short)uVar5;\n        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);\n        *param_1 = uVar8;\n      }" ({ "{") (if_statement "if (uVar11 != 2) {\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }" (if "if") (parenthesized_expression "(uVar11 != 2)" (( "(") (binary_expression "uVar11 != 2" (identifier "uVar11") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n          uVar2 = *puVar9;\n          puVar9 = (ulong *)((long)puVar9 + 1);\n          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);\n          uVar6 = uVar12 + 1 & 0xffff;\n          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);\n          *param_1 = uVar8;\n        }" ({ "{") (expression_statement "uVar2 = *puVar9;" (assignment_expression "uVar2 = *puVar9" (identifier "uVar2") (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (expression_statement "puVar9 = (ulong *)((long)puVar9 + 1);" (assignment_expression "puVar9 = (ulong *)((long)puVar9 + 1)" (identifier "puVar9") (= "=") (cast_expression "(ulong *)((long)puVar9 + 1)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar9 + 1)" (( "(") (binary_expression "(long)puVar9 + 1" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*(short *)(param_1 + 0x33) = (short)(uVar12 + 1);" (assignment_expression "*(short *)(param_1 + 0x33) = (short)(uVar12 + 1)" (pointer_expression "*(short *)(param_1 + 0x33)" (* "*") (cast_expression "(short *)(param_1 + 0x33)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (= "=") (cast_expression "(short)(uVar12 + 1)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (parenthesized_expression "(uVar12 + 1)" (( "(") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar6 = uVar12 + 1 & 0xffff;" (assignment_expression "uVar6 = uVar12 + 1 & 0xffff" (identifier "uVar6") (= "=") (binary_expression "uVar12 + 1 & 0xffff" (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1")) (& "&") (number_literal "0xffff"))) (; ";")) (expression_statement "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);" (assignment_expression "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU)" (identifier "uVar8") (= "=") (binary_expression "uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU)" (identifier "uVar8") (| "|") (binary_expression "(ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU)" (cast_expression "(ulong)(byte)uVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(byte)uVar2" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar2"))) (<< "<<") (parenthesized_expression "((char)uVar12 * '\b' & 0x3fU)" (( "(") (binary_expression "(char)uVar12 * '\b' & 0x3fU" (binary_expression "(char)uVar12 * '\b'" (cast_expression "(char)uVar12" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar12")) (* "*") (char_literal "'\b'" (' "'") (escape_sequence "\b") (' "'"))) (& "&") (number_literal "0x3fU")) () ")"))))) (; ";")) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar8")) (; ";")) (} "}"))) (expression_statement "uVar2 = *puVar9;" (assignment_expression "uVar2 = *puVar9" (identifier "uVar2") (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (expression_statement "uVar5 = uVar6 + 1;" (assignment_expression "uVar5 = uVar6 + 1" (identifier "uVar5") (= "=") (binary_expression "uVar6 + 1" (identifier "uVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar9 = (ulong *)((long)puVar9 + 1);" (assignment_expression "puVar9 = (ulong *)((long)puVar9 + 1)" (identifier "puVar9") (= "=") (cast_expression "(ulong *)((long)puVar9 + 1)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar9 + 1)" (( "(") (binary_expression "(long)puVar9 + 1" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar5;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar5" (pointer_expression "*(short *)(param_1 + 0x33)" (* "*") (cast_expression "(short *)(param_1 + 0x33)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (= "=") (cast_expression "(short)uVar5" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar5"))) (; ";")) (expression_statement "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);" (assignment_expression "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU)" (identifier "uVar8") (= "=") (binary_expression "uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU)" (identifier "uVar8") (| "|") (binary_expression "(ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU)" (cast_expression "(ulong)(byte)uVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(byte)uVar2" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar2"))) (<< "<<") (parenthesized_expression "((char)uVar6 * '\b' & 0x3fU)" (( "(") (binary_expression "(char)uVar6 * '\b' & 0x3fU" (binary_expression "(char)uVar6 * '\b'" (cast_expression "(char)uVar6" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar6")) (* "*") (char_literal "'\b'" (' "'") (escape_sequence "\b") (' "'"))) (& "&") (number_literal "0x3fU")) () ")"))))) (; ";")) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar8")) (; ";")) (} "}"))) (expression_statement "uVar2 = *puVar9;" (assignment_expression "uVar2 = *puVar9" (identifier "uVar2") (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (expression_statement "uVar7 = uVar5 + 1;" (assignment_expression "uVar7 = uVar5 + 1" (identifier "uVar7") (= "=") (binary_expression "uVar5 + 1" (identifier "uVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar7;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar7" (pointer_expression "*(short *)(param_1 + 0x33)" (* "*") (cast_expression "(short *)(param_1 + 0x33)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (= "=") (cast_expression "(short)uVar7" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar7"))) (; ";")) (expression_statement "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f)" (identifier "uVar8") (= "=") (binary_expression "uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f)" (identifier "uVar8") (| "|") (binary_expression "(ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)(byte)uVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(byte)uVar2" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar2"))) (<< "<<") (parenthesized_expression "((byte)((uVar5 & 0xffff) << 3) & 0x3f)" (( "(") (binary_expression "(byte)((uVar5 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar5 & 0xffff) << 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uVar5 & 0xffff) << 3)" (( "(") (binary_expression "(uVar5 & 0xffff) << 3" (parenthesized_expression "(uVar5 & 0xffff)" (( "(") (binary_expression "uVar5 & 0xffff" (identifier "uVar5") (& "&") (number_literal "0xffff")) () ")")) (<< "<<") (number_literal "3")) () ")"))) (& "&") (number_literal "0x3f")) () ")"))))) (; ";")) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "puVar10 = (ulong *)((long)puVar9 + 1);" (assignment_expression "puVar10 = (ulong *)((long)puVar9 + 1)" (identifier "puVar10") (= "=") (cast_expression "(ulong *)((long)puVar9 + 1)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar9 + 1)" (( "(") (binary_expression "(long)puVar9 + 1" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if ((ulong *)((long)puVar9 + 1) == puVar4) {\n        return 0;\n      }" (if "if") (parenthesized_expression "((ulong *)((long)puVar9 + 1) == puVar4)" (( "(") (binary_expression "(ulong *)((long)puVar9 + 1) == puVar4" (cast_expression "(ulong *)((long)puVar9 + 1)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar9 + 1)" (( "(") (binary_expression "(long)puVar9 + 1" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (+ "+") (number_literal "1")) () ")"))) (== "==") (identifier "puVar4")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))) (do_statement "do {\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar4);" (do "do") (compound_statement "{\n      uVar2 = *puVar10;\n      uVar11 = uVar7 + 1;\n      uVar5 = uVar7 + 3;\n      *(short *)(param_1 + 0x33) = (short)uVar11;\n      puVar9 = (ulong *)((long)puVar10 + 4);\n      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;\n      uVar6 = uVar7 + 2;\n      uVar7 = uVar7 + 4;\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 1);\n      *(short *)(param_1 + 0x33) = (short)uVar6;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 2);\n      *(short *)(param_1 + 0x33) = (short)uVar5;\n      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);\n      *param_1 = uVar8;\n      bVar1 = *(byte *)((long)puVar10 + 3);\n      *(short *)(param_1 + 0x33) = (short)uVar7;\n      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;\n      *param_1 = uVar8;\n      puVar10 = puVar9;\n    }" ({ "{") (expression_statement "uVar2 = *puVar10;" (assignment_expression "uVar2 = *puVar10" (identifier "uVar2") (= "=") (pointer_expression "*puVar10" (* "*") (identifier "puVar10"))) (; ";")) (expression_statement "uVar11 = uVar7 + 1;" (assignment_expression "uVar11 = uVar7 + 1" (identifier "uVar11") (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar5 = uVar7 + 3;" (assignment_expression "uVar5 = uVar7 + 3" (identifier "uVar5") (= "=") (binary_expression "uVar7 + 3" (identifier "uVar7") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar11;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar11" (pointer_expression "*(short *)(param_1 + 0x33)" (* "*") (cast_expression "(short *)(param_1 + 0x33)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (= "=") (cast_expression "(short)uVar11" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar11"))) (; ";")) (expression_statement "puVar9 = (ulong *)((long)puVar10 + 4);" (assignment_expression "puVar9 = (ulong *)((long)puVar10 + 4)" (identifier "puVar9") (= "=") (cast_expression "(ulong *)((long)puVar10 + 4)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar10 + 4)" (( "(") (binary_expression "(long)puVar10 + 4" (cast_expression "(long)puVar10" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar10")) (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;" (assignment_expression "uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8" (identifier "uVar8") (= "=") (binary_expression "(ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8" (binary_expression "(ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)(byte)uVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(byte)uVar2" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar2"))) (<< "<<") (parenthesized_expression "((byte)((uVar7 & 0xffff) << 3) & 0x3f)" (( "(") (binary_expression "(byte)((uVar7 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar7 & 0xffff) << 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uVar7 & 0xffff) << 3)" (( "(") (binary_expression "(uVar7 & 0xffff) << 3" (parenthesized_expression "(uVar7 & 0xffff)" (( "(") (binary_expression "uVar7 & 0xffff" (identifier "uVar7") (& "&") (number_literal "0xffff")) () ")")) (<< "<<") (number_literal "3")) () ")"))) (& "&") (number_literal "0x3f")) () ")"))) (| "|") (identifier "uVar8"))) (; ";")) (expression_statement "uVar6 = uVar7 + 2;" (assignment_expression "uVar6 = uVar7 + 2" (identifier "uVar6") (= "=") (binary_expression "uVar7 + 2" (identifier "uVar7") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar7 = uVar7 + 4;" (assignment_expression "uVar7 = uVar7 + 4" (identifier "uVar7") (= "=") (binary_expression "uVar7 + 4" (identifier "uVar7") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "bVar1 = *(byte *)((long)puVar10 + 1);" (assignment_expression "bVar1 = *(byte *)((long)puVar10 + 1)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)((long)puVar10 + 1)" (* "*") (cast_expression "(byte *)((long)puVar10 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar10 + 1)" (( "(") (binary_expression "(long)puVar10 + 1" (cast_expression "(long)puVar10" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar10")) (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar6;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar6" (pointer_expression "*(short *)(param_1 + 0x33)" (* "*") (cast_expression "(short *)(param_1 + 0x33)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (= "=") (cast_expression "(short)uVar6" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar6"))) (; ";")) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f)" (identifier "uVar8") (= "=") (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f)" (identifier "uVar8") (| "|") (binary_expression "(ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1")) (<< "<<") (parenthesized_expression "((byte)((uVar11 & 0xffff) << 3) & 0x3f)" (( "(") (binary_expression "(byte)((uVar11 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar11 & 0xffff) << 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uVar11 & 0xffff) << 3)" (( "(") (binary_expression "(uVar11 & 0xffff) << 3" (parenthesized_expression "(uVar11 & 0xffff)" (( "(") (binary_expression "uVar11 & 0xffff" (identifier "uVar11") (& "&") (number_literal "0xffff")) () ")")) (<< "<<") (number_literal "3")) () ")"))) (& "&") (number_literal "0x3f")) () ")"))))) (; ";")) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "bVar1 = *(byte *)((long)puVar10 + 2);" (assignment_expression "bVar1 = *(byte *)((long)puVar10 + 2)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)((long)puVar10 + 2)" (* "*") (cast_expression "(byte *)((long)puVar10 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar10 + 2)" (( "(") (binary_expression "(long)puVar10 + 2" (cast_expression "(long)puVar10" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar10")) (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar5;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar5" (pointer_expression "*(short *)(param_1 + 0x33)" (* "*") (cast_expression "(short *)(param_1 + 0x33)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (= "=") (cast_expression "(short)uVar5" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar5"))) (; ";")) (expression_statement "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f)" (identifier "uVar8") (= "=") (binary_expression "uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f)" (identifier "uVar8") (| "|") (binary_expression "(ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1")) (<< "<<") (parenthesized_expression "((byte)((uVar6 & 0xffff) << 3) & 0x3f)" (( "(") (binary_expression "(byte)((uVar6 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar6 & 0xffff) << 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uVar6 & 0xffff) << 3)" (( "(") (binary_expression "(uVar6 & 0xffff) << 3" (parenthesized_expression "(uVar6 & 0xffff)" (( "(") (binary_expression "uVar6 & 0xffff" (identifier "uVar6") (& "&") (number_literal "0xffff")) () ")")) (<< "<<") (number_literal "3")) () ")"))) (& "&") (number_literal "0x3f")) () ")"))))) (; ";")) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "bVar1 = *(byte *)((long)puVar10 + 3);" (assignment_expression "bVar1 = *(byte *)((long)puVar10 + 3)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)((long)puVar10 + 3)" (* "*") (cast_expression "(byte *)((long)puVar10 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar10 + 3)" (( "(") (binary_expression "(long)puVar10 + 3" (cast_expression "(long)puVar10" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar10")) (+ "+") (number_literal "3")) () ")"))))) (; ";")) (expression_statement "*(short *)(param_1 + 0x33) = (short)uVar7;" (assignment_expression "*(short *)(param_1 + 0x33) = (short)uVar7" (pointer_expression "*(short *)(param_1 + 0x33)" (* "*") (cast_expression "(short *)(param_1 + 0x33)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (= "=") (cast_expression "(short)uVar7" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar7"))) (; ";")) (expression_statement "uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;" (assignment_expression "uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8" (identifier "uVar8") (= "=") (binary_expression "(ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8" (binary_expression "(ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f)" (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1")) (<< "<<") (parenthesized_expression "((byte)((uVar5 & 0xffff) << 3) & 0x3f)" (( "(") (binary_expression "(byte)((uVar5 & 0xffff) << 3) & 0x3f" (call_expression "(byte)((uVar5 & 0xffff) << 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uVar5 & 0xffff) << 3)" (( "(") (binary_expression "(uVar5 & 0xffff) << 3" (parenthesized_expression "(uVar5 & 0xffff)" (( "(") (binary_expression "uVar5 & 0xffff" (identifier "uVar5") (& "&") (number_literal "0xffff")) () ")")) (<< "<<") (number_literal "3")) () ")"))) (& "&") (number_literal "0x3f")) () ")"))) (| "|") (identifier "uVar8"))) (; ";")) (expression_statement "*param_1 = uVar8;" (assignment_expression "*param_1 = uVar8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" (identifier "puVar10") (= "=") (identifier "puVar9")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar9 != puVar4)" (( "(") (binary_expression "puVar9 != puVar4" (identifier "puVar9") (!= "!=") (identifier "puVar4")) () ")")) (; ";")) (} "}")))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

int function_1(type_1 *md,type_2 *var_2,type_3 var_1)

{
  type_3 *var_13;
  type_4 bVar2;
  type_3 uVar3;
  int iVar4;
  type_4 *var_9;
  type_4 *pbVar6;
  type_5 var_4;
  type_5 var_8;
  type_5 var_5;
  type_3 var_7;
  type_3 *var_12;
  type_3 *puVar12;
  type_5 var_6;
  type_6 var_10;
  
  if (var_1 == 0) {
    return 0;
  }
  if (var_2 == (type_2 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_3("in != NULL","src/hashes/sha3.c",0xbf);
  }
  var_10 = (md->sha3).byte_index;
  var_8 = (type_5)var_10;
  var_6 = (type_5)var_10;
  var_4 = -var_6 & 7;
  if (var_1 < var_4) {
    var_7 = (md->chc).length;
    var_5 = ~(type_5)var_2 + (int)(var_2 + var_1) & 3;
    var_9 = var_2;
    var_4 = var_6;
    if (var_5 == 0) goto LAB_00153dc2;
    var_9 = var_2 + 1;
    bVar2 = *var_2;
    var_4 = var_6 + 1;
    (md->sha3).byte_index = (type_6)var_4;
    var_8 = var_4 & 0xffff;
    var_7 = var_7 | (type_3)bVar2 << (((type_4)var_10 & 7) << 3);
    (md->chc).length = var_7;
    if (var_5 == 1) goto LAB_00153dc2;
    if (var_5 != 2) {
      bVar2 = *var_9;
      iVar4 = var_8 << 3;
      var_4 = var_6 + 2;
      var_9 = var_2 + 2;
      (md->sha3).byte_index = (type_6)var_4;
      var_8 = var_4 & 0xffff;
      var_7 = var_7 | (type_3)bVar2 << ((type_4)iVar4 & 0x3f);
      (md->chc).length = var_7;
    }
    pbVar6 = var_9 + 1;
    bVar2 = *var_9;
    var_4 = var_4 + 1;
    while( true ) {
      iVar4 = var_8 << 3;
      (md->sha3).byte_index = (type_6)var_4;
      var_8 = var_4 & 0xffff;
      var_7 = var_7 | (type_3)bVar2 << ((type_4)iVar4 & 0x3f);
      (md->chc).length = var_7;
      var_9 = pbVar6;
LAB_00153dc2:
      bVar2 = *var_9;
      var_6 = var_4 + 1;
      (md->sha3).byte_index = (type_6)var_6;
      var_7 = var_7 | (type_3)bVar2 << ((type_4)(var_8 << 3) & 0x3f);
      (md->chc).length = var_7;
      if (var_9 + 1 == var_2 + var_1) break;
      bVar2 = var_9[1];
      var_5 = var_4 + 2;
      var_8 = var_4 + 3;
      (md->sha3).byte_index = (type_6)var_5;
      pbVar6 = var_9 + 4;
      var_4 = var_4 + 4;
      var_7 = var_7 | (type_3)bVar2 << ((type_4)((var_6 & 0xffff) << 3) & 0x3f);
      (md->chc).length = var_7;
      bVar2 = var_9[2];
      (md->sha3).byte_index = (type_6)var_8;
      var_8 = var_8 & 0xffff;
      var_7 = var_7 | (type_3)bVar2 << ((type_4)((var_5 & 0xffff) << 3) & 0x3f);
      (md->chc).length = var_7;
      bVar2 = var_9[3];
    }
    return 0;
  }
  if (var_4 != 0) {
    bVar2 = *var_2;
    var_1 = var_1 - var_4;
    (md->sha3).byte_index = (type_6)(var_10 + 1);
    var_7 = (type_3)bVar2 << (((type_4)var_10 & 7) << 3) | (md->chc).length;
    (md->chc).length = var_7;
    if (var_4 - 1 != 0) {
      bVar2 = var_2[1];
      (md->sha3).byte_index = (type_6)(var_6 + 2);
      var_7 = var_7 | (type_3)bVar2 << ((type_4)((var_10 + 1 & 0xffff) << 3) & 0x3f);
      (md->chc).length = var_7;
      if (var_4 != 2) {
        bVar2 = var_2[2];
        (md->sha3).byte_index = (type_6)(var_6 + 3);
        var_7 = var_7 | (type_3)bVar2 << ((type_4)((var_6 + 2 & 0xffff) << 3) & 0x3f);
        (md->chc).length = var_7;
        if (var_4 != 3) {
          bVar2 = var_2[3];
          (md->sha3).byte_index = (type_6)(var_6 + 4);
          var_7 = var_7 | (type_3)bVar2 << ((type_4)((var_6 + 3 & 0xffff) << 3) & 0x3f);
          (md->chc).length = var_7;
          if (var_4 != 4) {
            bVar2 = var_2[4];
            (md->sha3).byte_index = (type_6)(var_6 + 5);
            var_7 = var_7 | (type_3)bVar2 << ((type_4)((var_6 + 4 & 0xffff) << 3) & 0x3f);
            (md->chc).length = var_7;
            if (var_4 != 5) {
              bVar2 = var_2[5];
              (md->sha3).byte_index = (type_6)(var_6 + 6);
              var_7 = var_7 | (type_3)bVar2 << ((type_4)((var_6 + 5 & 0xffff) << 3) & 0x3f);
              (md->chc).length = var_7;
              if (var_4 != 6) {
                bVar2 = var_2[6];
                (md->sha3).byte_index = var_10 + 7;
                var_7 = var_7 | (type_3)bVar2 << ((type_4)((var_6 + 6 & 0xffff) << 3) & 0x3f);
                (md->chc).length = var_7;
              }
            }
          }
        }
      }
    }
    var_10 = (md->sha3).word_index;
    var_2 = var_2 + (type_3)(var_4 - 1) + 1;
    var_12 = (type_3 *)((long)md + (type_3)var_10 * 8 + 8);
    *var_12 = *var_12 ^ var_7;
    var_10 = var_10 + 1;
    (md->sha3).byte_index = 0;
    (md->chc).length = 0;
    (md->sha3).word_index = var_10;
    if ((type_5)var_10 == 0x19 - (md->sha3).capacity_words) {
      var_11((md->whirlpool).state);
      (md->sha3).word_index = 0;
    }
  }
  var_7 = var_1 >> 3;
  var_6 = (int)var_1 + (int)var_7 * -8;
  var_12 = (type_3 *)var_2;
  if (var_7 != 0) {
    var_12 = (type_3 *)((long)var_2 + var_7 * 8);
    var_8 = (int)(var_7 * 8 - 8 >> 3) + 1U & 3;
    if (var_8 != 0) {
      if (var_8 != 1) {
        if (var_8 != 2) {
          var_10 = (md->sha3).word_index;
          var_13 = (type_3 *)((long)md + (type_3)var_10 * 8 + 8);
          *var_13 = *var_13 ^ *(type_3 *)var_2;
          var_10 = var_10 + 1;
          (md->sha3).word_index = var_10;
          if ((type_5)var_10 == 0x19 - (md->sha3).capacity_words) {
            var_11((md->whirlpool).state);
            (md->sha3).word_index = 0;
          }
          var_2 = (type_2 *)((long)var_2 + 8);
        }
        var_10 = (md->sha3).word_index;
        var_13 = (type_3 *)((long)md + (type_3)var_10 * 8 + 8);
        *var_13 = *var_13 ^ *(type_3 *)var_2;
        var_10 = var_10 + 1;
        (md->sha3).word_index = var_10;
        if ((type_5)var_10 == 0x19 - (md->sha3).capacity_words) {
          var_11((md->whirlpool).state);
          (md->sha3).word_index = 0;
        }
        var_2 = (type_2 *)((long)var_2 + 8);
      }
      var_10 = (md->sha3).word_index;
      var_13 = (type_3 *)((long)md + (type_3)var_10 * 8 + 8);
      *var_13 = *var_13 ^ *(type_3 *)var_2;
      var_10 = var_10 + 1;
      (md->sha3).word_index = var_10;
      if ((type_5)var_10 == 0x19 - (md->sha3).capacity_words) {
        var_11((md->whirlpool).state);
        (md->sha3).word_index = 0;
      }
      var_2 = (type_2 *)((long)var_2 + 8);
      if ((type_3 *)var_2 == var_12) goto LAB_00153b88;
    }
    do {
      var_10 = (md->sha3).word_index;
      var_13 = (type_3 *)((long)md + (type_3)var_10 * 8 + 8);
      *var_13 = *var_13 ^ *(type_3 *)var_2;
      var_10 = var_10 + 1;
      (md->sha3).word_index = var_10;
      if ((type_5)var_10 == 0x19 - (md->sha3).capacity_words) {
        var_11((md->whirlpool).state);
        (md->sha3).word_index = 0;
      }
      var_10 = (md->sha3).word_index;
      var_13 = (type_3 *)((long)md + (type_3)var_10 * 8 + 8);
      *var_13 = *var_13 ^ *(type_3 *)((long)var_2 + 8);
      var_10 = var_10 + 1;
      (md->sha3).word_index = var_10;
      if ((type_5)var_10 == 0x19 - (md->sha3).capacity_words) {
        var_11((md->whirlpool).state);
        (md->sha3).word_index = 0;
      }
      var_10 = (md->sha3).word_index;
      var_13 = (type_3 *)((long)md + (type_3)var_10 * 8 + 8);
      *var_13 = *var_13 ^ *(type_3 *)((long)var_2 + 0x10);
      var_10 = var_10 + 1;
      (md->sha3).word_index = var_10;
      if ((type_5)var_10 == 0x19 - (md->sha3).capacity_words) {
        var_11((md->whirlpool).state);
        (md->sha3).word_index = 0;
      }
      var_10 = (md->sha3).word_index;
      var_13 = (type_3 *)((long)md + (type_3)var_10 * 8 + 8);
      *var_13 = *var_13 ^ *(type_3 *)((long)var_2 + 0x18);
      var_10 = var_10 + 1;
      (md->sha3).word_index = var_10;
      if ((type_5)var_10 == 0x19 - (md->sha3).capacity_words) {
        var_11((md->whirlpool).state);
        (md->sha3).word_index = 0;
      }
      var_2 = (type_2 *)((long)var_2 + 0x20);
    } while ((type_3 *)var_2 != var_12);
  }
LAB_00153b88:
  if (var_6 != 0) {
    var_13 = (type_3 *)((long)var_12 + (type_3)(var_6 - 1) + 1);
    var_10 = (md->sha3).byte_index;
    var_5 = (type_5)var_10;
    var_4 = (type_5)var_10;
    var_8 = (type_5)var_10;
    var_7 = (md->chc).length;
    var_6 = var_6 & 3;
    puVar12 = var_12;
    if (var_6 != 0) {
      if (var_6 != 1) {
        if (var_6 != 2) {
          uVar3 = *var_12;
          var_12 = (type_3 *)((long)var_12 + 1);
          (md->sha3).byte_index = (type_6)(var_10 + 1);
          var_8 = var_10 + 1 & 0xffff;
          var_7 = var_7 | (type_3)(type_4)uVar3 << ((char)var_10 * '\b' & 0x3fU);
          (md->chc).length = var_7;
        }
        uVar3 = *var_12;
        var_4 = var_8 + 1;
        var_12 = (type_3 *)((long)var_12 + 1);
        (md->sha3).byte_index = (type_6)var_4;
        var_7 = var_7 | (type_3)(type_4)uVar3 << ((char)var_8 * '\b' & 0x3fU);
        (md->chc).length = var_7;
      }
      uVar3 = *var_12;
      var_5 = var_4 + 1;
      (md->sha3).byte_index = (type_6)var_5;
      var_7 = var_7 | (type_3)(type_4)uVar3 << ((type_4)((var_4 & 0xffff) << 3) & 0x3f);
      (md->chc).length = var_7;
      puVar12 = (type_3 *)((long)var_12 + 1);
      if ((type_3 *)((long)var_12 + 1) == var_13) {
        return 0;
      }
    }
    do {
      uVar3 = *puVar12;
      var_6 = var_5 + 1;
      var_4 = var_5 + 3;
      (md->sha3).byte_index = (type_6)var_6;
      var_12 = (type_3 *)((long)puVar12 + 4);
      var_7 = (type_3)(type_4)uVar3 << ((type_4)((var_5 & 0xffff) << 3) & 0x3f) | var_7;
      var_8 = var_5 + 2;
      var_5 = var_5 + 4;
      (md->chc).length = var_7;
      bVar2 = *(type_4 *)((long)puVar12 + 1);
      (md->sha3).byte_index = (type_6)var_8;
      var_7 = var_7 | (type_3)bVar2 << ((type_4)((var_6 & 0xffff) << 3) & 0x3f);
      (md->chc).length = var_7;
      bVar2 = *(type_4 *)((long)puVar12 + 2);
      (md->sha3).byte_index = (type_6)var_4;
      var_7 = var_7 | (type_3)bVar2 << ((type_4)((var_8 & 0xffff) << 3) & 0x3f);
      (md->chc).length = var_7;
      bVar2 = *(type_4 *)((long)puVar12 + 3);
      (md->sha3).byte_index = (type_6)var_5;
      var_7 = (type_3)bVar2 << ((type_4)((var_4 & 0xffff) << 3) & 0x3f) | var_7;
      (md->chc).length = var_7;
      puVar12 = var_12;
    } while (var_12 != var_13);
  }
  return 0;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) 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: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (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 (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (number_literal)))))) (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (binary_expression left: (unary_expression argument: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (unary_expression argument: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (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: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))) (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)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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: (identifier))))) (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: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (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)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))))))) consequence: (break_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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (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: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))))) (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (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: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) 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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (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: (identifier))))))))))))))) (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (binary_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (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))) (expression_statement (assignment_expression left: (pointer_expression argument: (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (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: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) (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: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)) right: (number_literal)))) right: (number_literal)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (binary_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (pointer_expression argument: (identifier))))) (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (binary_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (pointer_expression argument: (identifier))))) (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (binary_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (pointer_expression argument: (identifier))))) (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (do_statement body: (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (binary_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (pointer_expression argument: (identifier))))) (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) 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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (binary_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (subscript_expression argument: (identifier) index: (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) 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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (binary_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (subscript_expression argument: (identifier) index: (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) 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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (binary_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (subscript_expression argument: (identifier) index: (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (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)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (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: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (escape_sequence))) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) (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)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (escape_sequence))) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) (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)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))))) (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)))) (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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) right: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) right: (number_literal)))) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) (return_statement (number_literal)))))

undefined8 MASKED(ulong *param_1,ulong *param_2,ulong param_3)

{
  byte bVar1;
  ulong uVar2;
  int iVar3;
  ulong *puVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  ulong uVar8;
  ulong *puVar9;
  ulong *puVar10;
  uint uVar11;
  ushort uVar12;
  
  if (param_3 == 0) {
    return 0;
  }
  if (param_2 == (ulong *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("in != NULL","src/hashes/sha3.c",0xbf);
  }
  uVar12 = (ushort)param_1[0x33];
  uVar6 = (uint)uVar12;
  uVar11 = (uint)uVar12;
  uVar5 = -uVar11 & 7;
  if (param_3 < uVar5) {
    uVar8 = *param_1;
    uVar7 = ~(uint)param_2 + (int)(byte *)(param_3 + (long)param_2) & 3;
    puVar9 = param_2;
    uVar5 = uVar11;
    if (uVar7 == 0) goto LAB_00153dc2;
    puVar9 = (ulong *)((long)param_2 + 1);
    uVar2 = *param_2;
    uVar5 = uVar11 + 1;
    *(short *)(param_1 + 0x33) = (short)uVar5;
    uVar6 = uVar5 & 0xffff;
    uVar8 = uVar8 | (ulong)(byte)uVar2 << (((byte)uVar12 & 7) << 3);
    *param_1 = uVar8;
    if (uVar7 == 1) goto LAB_00153dc2;
    if (uVar7 != 2) {
      bVar1 = *(byte *)puVar9;
      iVar3 = uVar6 << 3;
      uVar5 = uVar11 + 2;
      puVar9 = (ulong *)((long)param_2 + 2);
      *(short *)(param_1 + 0x33) = (short)uVar5;
      uVar6 = uVar5 & 0xffff;
      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);
      *param_1 = uVar8;
    }
    puVar4 = (ulong *)((long)puVar9 + 1);
    bVar1 = (byte)*puVar9;
    uVar5 = uVar5 + 1;
    while( true ) {
      iVar3 = uVar6 << 3;
      *(short *)(param_1 + 0x33) = (short)uVar5;
      uVar6 = uVar5 & 0xffff;
      uVar8 = uVar8 | (ulong)bVar1 << ((byte)iVar3 & 0x3f);
      *param_1 = uVar8;
      puVar9 = puVar4;
LAB_00153dc2:
      uVar2 = *puVar9;
      uVar11 = uVar5 + 1;
      *(short *)(param_1 + 0x33) = (short)uVar11;
      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)(uVar6 << 3) & 0x3f);
      *param_1 = uVar8;
      if ((byte *)((long)puVar9 + 1) == (byte *)(param_3 + (long)param_2)) break;
      bVar1 = *(byte *)((long)puVar9 + 1);
      uVar7 = uVar5 + 2;
      uVar6 = uVar5 + 3;
      *(short *)(param_1 + 0x33) = (short)uVar7;
      puVar4 = (ulong *)((long)puVar9 + 4);
      uVar5 = uVar5 + 4;
      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);
      *param_1 = uVar8;
      bVar1 = *(byte *)((long)puVar9 + 2);
      *(short *)(param_1 + 0x33) = (short)uVar6;
      uVar6 = uVar6 & 0xffff;
      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f);
      *param_1 = uVar8;
      bVar1 = *(byte *)((long)puVar9 + 3);
    }
    return 0;
  }
  if (uVar5 != 0) {
    uVar8 = *param_2;
    param_3 = param_3 - uVar5;
    *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);
    uVar8 = (ulong)(byte)uVar8 << (((byte)uVar12 & 7) << 3) | *param_1;
    *param_1 = uVar8;
    if (uVar5 - 1 != 0) {
      bVar1 = *(byte *)((long)param_2 + 1);
      *(short *)(param_1 + 0x33) = (short)(uVar11 + 2);
      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar12 + 1 & 0xffff) << 3) & 0x3f);
      *param_1 = uVar8;
      if (uVar5 != 2) {
        bVar1 = *(byte *)((long)param_2 + 2);
        *(short *)(param_1 + 0x33) = (short)(uVar11 + 3);
        uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 2 & 0xffff) << 3) & 0x3f);
        *param_1 = uVar8;
        if (uVar5 != 3) {
          bVar1 = *(byte *)((long)param_2 + 3);
          *(short *)(param_1 + 0x33) = (short)(uVar11 + 4);
          uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 3 & 0xffff) << 3) & 0x3f);
          *param_1 = uVar8;
          if (uVar5 != 4) {
            bVar1 = *(byte *)((long)param_2 + 4);
            *(short *)(param_1 + 0x33) = (short)(uVar11 + 5);
            uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 4 & 0xffff) << 3) & 0x3f);
            *param_1 = uVar8;
            if (uVar5 != 5) {
              bVar1 = *(byte *)((long)param_2 + 5);
              *(short *)(param_1 + 0x33) = (short)(uVar11 + 6);
              uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 5 & 0xffff) << 3) & 0x3f);
              *param_1 = uVar8;
              if (uVar5 != 6) {
                bVar1 = *(byte *)((long)param_2 + 6);
                *(ushort *)(param_1 + 0x33) = uVar12 + 7;
                uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 + 6 & 0xffff) << 3) & 0x3f);
                *param_1 = uVar8;
              }
            }
          }
        }
      }
    }
    uVar12 = *(ushort *)((long)param_1 + 0x19a);
    param_2 = (ulong *)((long)param_2 + (ulong)(uVar5 - 1) + 1);
    param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ uVar8;
    uVar12 = uVar12 + 1;
    *(undefined2 *)(param_1 + 0x33) = 0;
    *param_1 = 0;
    *(ushort *)((long)param_1 + 0x19a) = uVar12;
    if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {
      FUN_001534a0(param_1 + 1);
      *(undefined2 *)((long)param_1 + 0x19a) = 0;
    }
  }
  uVar8 = param_3 >> 3;
  uVar11 = (int)param_3 + (int)uVar8 * -8;
  puVar9 = param_2;
  if (uVar8 != 0) {
    puVar9 = param_2 + uVar8;
    uVar6 = (int)(uVar8 * 8 - 8 >> 3) + 1U & 3;
    if (uVar6 != 0) {
      if (uVar6 != 1) {
        if (uVar6 != 2) {
          uVar12 = *(ushort *)((long)param_1 + 0x19a);
          param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;
          uVar12 = uVar12 + 1;
          *(ushort *)((long)param_1 + 0x19a) = uVar12;
          if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {
            FUN_001534a0(param_1 + 1);
            *(undefined2 *)((long)param_1 + 0x19a) = 0;
          }
          param_2 = param_2 + 1;
        }
        uVar12 = *(ushort *)((long)param_1 + 0x19a);
        param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;
        uVar12 = uVar12 + 1;
        *(ushort *)((long)param_1 + 0x19a) = uVar12;
        if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {
          FUN_001534a0(param_1 + 1);
          *(undefined2 *)((long)param_1 + 0x19a) = 0;
        }
        param_2 = param_2 + 1;
      }
      uVar12 = *(ushort *)((long)param_1 + 0x19a);
      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;
      uVar12 = uVar12 + 1;
      *(ushort *)((long)param_1 + 0x19a) = uVar12;
      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {
        FUN_001534a0(param_1 + 1);
        *(undefined2 *)((long)param_1 + 0x19a) = 0;
      }
      param_2 = param_2 + 1;
      if (param_2 == puVar9) goto LAB_00153b88;
    }
    do {
      uVar12 = *(ushort *)((long)param_1 + 0x19a);
      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ *param_2;
      uVar12 = uVar12 + 1;
      *(ushort *)((long)param_1 + 0x19a) = uVar12;
      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {
        FUN_001534a0(param_1 + 1);
        *(undefined2 *)((long)param_1 + 0x19a) = 0;
      }
      uVar12 = *(ushort *)((long)param_1 + 0x19a);
      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[1];
      uVar12 = uVar12 + 1;
      *(ushort *)((long)param_1 + 0x19a) = uVar12;
      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {
        FUN_001534a0(param_1 + 1);
        *(undefined2 *)((long)param_1 + 0x19a) = 0;
      }
      uVar12 = *(ushort *)((long)param_1 + 0x19a);
      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[2];
      uVar12 = uVar12 + 1;
      *(ushort *)((long)param_1 + 0x19a) = uVar12;
      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {
        FUN_001534a0();
        *(undefined2 *)((long)param_1 + 0x19a) = 0;
      }
      uVar12 = *(ushort *)((long)param_1 + 0x19a);
      param_1[(ulong)uVar12 + 1] = param_1[(ulong)uVar12 + 1] ^ param_2[3];
      uVar12 = uVar12 + 1;
      *(ushort *)((long)param_1 + 0x19a) = uVar12;
      if ((uint)uVar12 == 0x19 - *(ushort *)((long)param_1 + 0x19c)) {
        FUN_001534a0(param_1 + 1);
        *(undefined2 *)((long)param_1 + 0x19a) = 0;
      }
      param_2 = param_2 + 4;
    } while (param_2 != puVar9);
  }
LAB_00153b88:
  if (uVar11 != 0) {
    puVar4 = (ulong *)((long)puVar9 + (ulong)(uVar11 - 1) + 1);
    uVar12 = (ushort)param_1[0x33];
    uVar7 = (uint)uVar12;
    uVar5 = (uint)uVar12;
    uVar6 = (uint)uVar12;
    uVar8 = *param_1;
    uVar11 = uVar11 & 3;
    puVar10 = puVar9;
    if (uVar11 != 0) {
      if (uVar11 != 1) {
        if (uVar11 != 2) {
          uVar2 = *puVar9;
          puVar9 = (ulong *)((long)puVar9 + 1);
          *(short *)(param_1 + 0x33) = (short)(uVar12 + 1);
          uVar6 = uVar12 + 1 & 0xffff;
          uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar12 * '\b' & 0x3fU);
          *param_1 = uVar8;
        }
        uVar2 = *puVar9;
        uVar5 = uVar6 + 1;
        puVar9 = (ulong *)((long)puVar9 + 1);
        *(short *)(param_1 + 0x33) = (short)uVar5;
        uVar8 = uVar8 | (ulong)(byte)uVar2 << ((char)uVar6 * '\b' & 0x3fU);
        *param_1 = uVar8;
      }
      uVar2 = *puVar9;
      uVar7 = uVar5 + 1;
      *(short *)(param_1 + 0x33) = (short)uVar7;
      uVar8 = uVar8 | (ulong)(byte)uVar2 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f);
      *param_1 = uVar8;
      puVar10 = (ulong *)((long)puVar9 + 1);
      if ((ulong *)((long)puVar9 + 1) == puVar4) {
        return 0;
      }
    }
    do {
      uVar2 = *puVar10;
      uVar11 = uVar7 + 1;
      uVar5 = uVar7 + 3;
      *(short *)(param_1 + 0x33) = (short)uVar11;
      puVar9 = (ulong *)((long)puVar10 + 4);
      uVar8 = (ulong)(byte)uVar2 << ((byte)((uVar7 & 0xffff) << 3) & 0x3f) | uVar8;
      uVar6 = uVar7 + 2;
      uVar7 = uVar7 + 4;
      *param_1 = uVar8;
      bVar1 = *(byte *)((long)puVar10 + 1);
      *(short *)(param_1 + 0x33) = (short)uVar6;
      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar11 & 0xffff) << 3) & 0x3f);
      *param_1 = uVar8;
      bVar1 = *(byte *)((long)puVar10 + 2);
      *(short *)(param_1 + 0x33) = (short)uVar5;
      uVar8 = uVar8 | (ulong)bVar1 << ((byte)((uVar6 & 0xffff) << 3) & 0x3f);
      *param_1 = uVar8;
      bVar1 = *(byte *)((long)puVar10 + 3);
      *(short *)(param_1 + 0x33) = (short)uVar7;
      uVar8 = (ulong)bVar1 << ((byte)((uVar5 & 0xffff) << 3) & 0x3f) | uVar8;
      *param_1 = uVar8;
      puVar10 = puVar9;
    } while (puVar9 != puVar4);
  }
  return 0;
}

