
uint do_compress(uint8_t *in,uint in_len,uint8_t *out,uint *out_len,void *wrkmem)

{
  byte bVar1;
  bool bVar2;
  uint uVar3;
  byte *pbVar4;
  byte *pbVar5;
  byte *pbVar6;
  char cVar8;
  int iVar7;
  byte *pbVar9;
  byte *pbVar10;
  byte *pbVar11;
  byte *pbVar12;
  uint uVar13;
  byte *pbVar14;
  uint uVar15;
  int *piVar16;
  uint uVar17;
  uint uVar18;
  
  pbVar9 = in + in_len;
  pbVar6 = in + 4;
  pbVar5 = in;
  pbVar4 = out;
  do {
    while( true ) {
      uVar18 = (uint)pbVar6[3];
      uVar15 = (uint)*pbVar6;
      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;
      piVar16 = (int *)((int)wrkmem + (uVar3 & 0x7fff) * 4);
      uVar13 = (int)pbVar6 - *piVar16;
      pbVar10 = pbVar6 + -uVar13;
      uVar17 = uVar13 - 1;
      if ((in <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;
LAB_000ae5a0:
      pbVar10 = pbVar6 + 1;
      *piVar16 = (int)pbVar6;
joined_r0x000ae69c:
      pbVar6 = pbVar10;
      if (in + (in_len - 0xd) <= pbVar10) {
        uVar3 = (int)pbVar4 - (int)out;
        goto LAB_000ae5b8;
      }
    }
    if ((!bVar2) && (pbVar10[3] != uVar18)) {
      piVar16 = (int *)((int)wrkmem + (uVar3 & 0x7ff ^ 0x401f) * 4);
      uVar13 = (int)pbVar6 - *piVar16;
      pbVar10 = pbVar6 + -uVar13;
      uVar17 = uVar13 - 1;
      if ((in <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {
        if (bVar2) goto LAB_000ae5f4;
        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;
        bVar1 = pbVar10[1];
        goto LAB_000ae604;
      }
      goto LAB_000ae5a0;
    }
LAB_000ae5f4:
    if (*pbVar10 != uVar15) goto LAB_000ae5a0;
    bVar1 = pbVar10[1];
LAB_000ae604:
    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))
    goto LAB_000ae5a0;
    *piVar16 = (int)pbVar6;
    pbVar12 = pbVar5;
    pbVar11 = pbVar4;
    if (pbVar6 != pbVar5) {
      uVar3 = (int)pbVar6 - (int)pbVar5;
      if (uVar3 < 4) {
        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];
        pbVar14 = pbVar4;
      }
      else {
        pbVar14 = pbVar4 + 1;
        if (uVar3 < 0x13) {
          *pbVar4 = (byte)uVar3 - 3;
        }
        else {
          uVar15 = uVar3 - 0x12;
          *pbVar4 = 0;
          pbVar12 = pbVar4 + 2;
          pbVar11 = pbVar14;
          if (0xff < uVar15) {
            pbVar4[1] = 0;
            pbVar4 = pbVar14;
            pbVar11 = pbVar12;
            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {
              *pbVar11 = 0;
              pbVar4 = pbVar11;
              pbVar11 = pbVar11 + 1;
            }
          }
          pbVar14 = pbVar4 + 2;
          *pbVar11 = (byte)uVar15;
        }
      }
      pbVar11 = pbVar14 + uVar3;
      do {
        pbVar4 = pbVar14 + 1;
        *pbVar14 = *pbVar5;
        pbVar14 = pbVar4;
        pbVar12 = pbVar6;
        pbVar5 = pbVar5 + 1;
      } while (pbVar4 != pbVar11);
    }
    pbVar5 = pbVar6 + 4;
    if (pbVar10[3] != pbVar6[3]) {
LAB_000ae668:
      pbVar5 = pbVar5 + -1;
      cVar8 = (char)((int)pbVar5 - (int)pbVar12);
      if (!bVar2) {
LAB_000ae900:
        if (uVar13 < 0x4001) {
          *pbVar11 = cVar8 - 2U | 0x20;
          pbVar4 = pbVar11 + 3;
          pbVar11[1] = (byte)(uVar17 << 2);
          pbVar11[2] = (byte)(uVar17 >> 6);
        }
        else {
          uVar13 = uVar13 - 0x4000;
          *pbVar11 = cVar8 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;
          pbVar4 = pbVar11 + 3;
          pbVar11[1] = (char)uVar13 * '\x04';
          pbVar11[2] = (byte)(uVar13 >> 6);
        }
        goto LAB_000ae83c;
      }
      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;
LAB_000ae67c:
      *pbVar11 = (byte)(iVar7 << 5) | (byte)((uVar17 & 7) << 2);
      pbVar4 = pbVar11 + 2;
      pbVar11[1] = (byte)(uVar17 >> 3);
      pbVar10 = pbVar5;
      goto joined_r0x000ae69c;
    }
    if (pbVar10[4] != pbVar6[4]) {
      pbVar5 = pbVar6 + 4;
      cVar8 = (char)((int)pbVar5 - (int)pbVar12);
      if (!bVar2) goto LAB_000ae900;
      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;
      goto LAB_000ae67c;
    }
    if (pbVar10[5] != pbVar6[5]) {
      pbVar5 = pbVar6 + 5;
      cVar8 = (char)((int)pbVar5 - (int)pbVar12);
      if (!bVar2) goto LAB_000ae900;
      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;
      goto LAB_000ae67c;
    }
    if (pbVar10[6] != pbVar6[6]) {
      pbVar5 = pbVar6 + 6;
      cVar8 = (char)((int)pbVar5 - (int)pbVar12);
      if (!bVar2) goto LAB_000ae900;
      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;
      goto LAB_000ae67c;
    }
    if (pbVar10[7] != pbVar6[7]) {
      pbVar5 = pbVar6 + 7;
      cVar8 = (char)((int)pbVar5 - (int)pbVar12);
      if (!bVar2) goto LAB_000ae900;
      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;
      goto LAB_000ae67c;
    }
    pbVar5 = pbVar6 + 9;
    if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;
    if ((pbVar5 < pbVar9) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {
      do {
        pbVar5 = pbVar5 + 1;
        pbVar4 = pbVar4 + 1;
        if (pbVar9 == pbVar5) {
          uVar3 = (int)pbVar9 - (int)pbVar12;
          pbVar5 = pbVar9;
          goto joined_r0x000ae8f0;
        }
      } while (*pbVar4 == *pbVar5);
    }
    uVar3 = (int)pbVar5 - (int)pbVar12;
joined_r0x000ae8f0:
    if (uVar13 < 0x4001) {
      if (uVar3 < 0x22) {
        *pbVar11 = (char)uVar3 - 2U | 0x20;
        pbVar4 = pbVar11 + 3;
        pbVar11[1] = (byte)(uVar17 << 2);
        pbVar11[2] = (byte)(uVar17 >> 6);
      }
      else {
        uVar3 = uVar3 - 0x21;
        *pbVar11 = 0x20;
joined_r0x000ae874:
        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {
          *pbVar4 = 0;
          pbVar11 = pbVar4;
        }
        *pbVar4 = (byte)uVar3;
        pbVar4 = pbVar11 + 4;
        pbVar11[2] = (byte)(uVar17 << 2);
        pbVar11[3] = (byte)(uVar17 >> 6);
      }
    }
    else {
      uVar17 = uVar13 - 0x4000;
      bVar1 = (byte)(uVar17 >> 0xb) & 8;
      if (9 < uVar3) {
        uVar3 = uVar3 - 9;
        *pbVar11 = bVar1 | 0x10;
        goto joined_r0x000ae874;
      }
      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;
      pbVar4 = pbVar11 + 3;
      pbVar11[1] = (char)uVar17 * '\x04';
      pbVar11[2] = (byte)(uVar17 >> 6);
    }
LAB_000ae83c:
    pbVar6 = pbVar5;
  } while (pbVar5 < in + (in_len - 0xd));
  uVar3 = (int)pbVar4 - (int)out;
LAB_000ae5b8:
  *out_len = uVar3;
  return (int)pbVar9 - (int)pbVar5;
}



int FUN_000ae504(byte *param_1,int param_2,byte *param_3,int *param_4,int param_5)

{
  byte bVar1;
  bool bVar2;
  uint uVar3;
  byte *pbVar4;
  byte *pbVar5;
  byte *pbVar6;
  char cVar7;
  byte *pbVar8;
  int iVar9;
  byte *pbVar10;
  byte *pbVar11;
  byte *pbVar12;
  uint uVar13;
  byte *pbVar14;
  uint uVar15;
  int *piVar16;
  uint uVar17;
  uint uVar18;
  
  pbVar8 = param_1 + param_2;
  pbVar6 = param_1 + 4;
  pbVar5 = param_1;
  pbVar4 = param_3;
  do {
    while( true ) {
      uVar18 = (uint)pbVar6[3];
      uVar15 = (uint)*pbVar6;
      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;
      piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);
      uVar13 = (int)pbVar6 - *piVar16;
      pbVar10 = pbVar6 + -uVar13;
      uVar17 = uVar13 - 1;
      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;
LAB_000ae5a0:
      pbVar10 = pbVar6 + 1;
      *piVar16 = (int)pbVar6;
joined_r0x000ae69c:
      pbVar6 = pbVar10;
      if (param_1 + param_2 + -0xd <= pbVar10) {
        iVar9 = (int)pbVar4 - (int)param_3;
        goto LAB_000ae5b8;
      }
    }
    if ((!bVar2) && (pbVar10[3] != uVar18)) {
      piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);
      uVar13 = (int)pbVar6 - *piVar16;
      pbVar10 = pbVar6 + -uVar13;
      uVar17 = uVar13 - 1;
      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {
        if (bVar2) goto LAB_000ae5f4;
        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;
        bVar1 = pbVar10[1];
        goto LAB_000ae604;
      }
      goto LAB_000ae5a0;
    }
LAB_000ae5f4:
    if (*pbVar10 != uVar15) goto LAB_000ae5a0;
    bVar1 = pbVar10[1];
LAB_000ae604:
    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))
    goto LAB_000ae5a0;
    *piVar16 = (int)pbVar6;
    pbVar12 = pbVar5;
    pbVar11 = pbVar4;
    if (pbVar6 != pbVar5) {
      uVar3 = (int)pbVar6 - (int)pbVar5;
      if (uVar3 < 4) {
        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];
        pbVar14 = pbVar4;
      }
      else {
        pbVar14 = pbVar4 + 1;
        if (uVar3 < 0x13) {
          *pbVar4 = (byte)uVar3 - 3;
        }
        else {
          uVar15 = uVar3 - 0x12;
          *pbVar4 = 0;
          pbVar12 = pbVar4 + 2;
          pbVar11 = pbVar14;
          if (0xff < uVar15) {
            pbVar4[1] = 0;
            pbVar4 = pbVar14;
            pbVar11 = pbVar12;
            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {
              *pbVar11 = 0;
              pbVar4 = pbVar11;
              pbVar11 = pbVar11 + 1;
            }
          }
          pbVar14 = pbVar4 + 2;
          *pbVar11 = (byte)uVar15;
        }
      }
      pbVar11 = pbVar14 + uVar3;
      do {
        pbVar4 = pbVar14 + 1;
        *pbVar14 = *pbVar5;
        pbVar14 = pbVar4;
        pbVar12 = pbVar6;
        pbVar5 = pbVar5 + 1;
      } while (pbVar4 != pbVar11);
    }
    pbVar5 = pbVar6 + 4;
    if (pbVar10[3] != pbVar6[3]) {
LAB_000ae668:
      pbVar5 = pbVar5 + -1;
      cVar7 = (char)((int)pbVar5 - (int)pbVar12);
      if (!bVar2) {
LAB_000ae900:
        if (uVar13 < 0x4001) {
          *pbVar11 = cVar7 - 2U | 0x20;
          pbVar4 = pbVar11 + 3;
          pbVar11[1] = (byte)(uVar17 << 2);
          pbVar11[2] = (byte)(uVar17 >> 6);
        }
        else {
          uVar13 = uVar13 - 0x4000;
          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;
          pbVar4 = pbVar11 + 3;
          pbVar11[1] = (char)uVar13 * '\x04';
          pbVar11[2] = (byte)(uVar13 >> 6);
        }
        goto LAB_000ae83c;
      }
      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;
LAB_000ae67c:
      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);
      pbVar4 = pbVar11 + 2;
      pbVar11[1] = (byte)(uVar17 >> 3);
      pbVar10 = pbVar5;
      goto joined_r0x000ae69c;
    }
    if (pbVar10[4] != pbVar6[4]) {
      pbVar5 = pbVar6 + 4;
      cVar7 = (char)((int)pbVar5 - (int)pbVar12);
      if (!bVar2) goto LAB_000ae900;
      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;
      goto LAB_000ae67c;
    }
    if (pbVar10[5] != pbVar6[5]) {
      pbVar5 = pbVar6 + 5;
      cVar7 = (char)((int)pbVar5 - (int)pbVar12);
      if (!bVar2) goto LAB_000ae900;
      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;
      goto LAB_000ae67c;
    }
    if (pbVar10[6] != pbVar6[6]) {
      pbVar5 = pbVar6 + 6;
      cVar7 = (char)((int)pbVar5 - (int)pbVar12);
      if (!bVar2) goto LAB_000ae900;
      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;
      goto LAB_000ae67c;
    }
    if (pbVar10[7] != pbVar6[7]) {
      pbVar5 = pbVar6 + 7;
      cVar7 = (char)((int)pbVar5 - (int)pbVar12);
      if (!bVar2) goto LAB_000ae900;
      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;
      goto LAB_000ae67c;
    }
    pbVar5 = pbVar6 + 9;
    if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;
    if ((pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {
      do {
        pbVar5 = pbVar5 + 1;
        pbVar4 = pbVar4 + 1;
        if (pbVar8 == pbVar5) {
          uVar3 = (int)pbVar8 - (int)pbVar12;
          pbVar5 = pbVar8;
          goto joined_r0x000ae8f0;
        }
      } while (*pbVar4 == *pbVar5);
    }
    uVar3 = (int)pbVar5 - (int)pbVar12;
joined_r0x000ae8f0:
    if (uVar13 < 0x4001) {
      if (uVar3 < 0x22) {
        *pbVar11 = (char)uVar3 - 2U | 0x20;
        pbVar4 = pbVar11 + 3;
        pbVar11[1] = (byte)(uVar17 << 2);
        pbVar11[2] = (byte)(uVar17 >> 6);
      }
      else {
        uVar3 = uVar3 - 0x21;
        *pbVar11 = 0x20;
joined_r0x000ae874:
        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {
          *pbVar4 = 0;
          pbVar11 = pbVar4;
        }
        *pbVar4 = (byte)uVar3;
        pbVar4 = pbVar11 + 4;
        pbVar11[2] = (byte)(uVar17 << 2);
        pbVar11[3] = (byte)(uVar17 >> 6);
      }
    }
    else {
      uVar17 = uVar13 - 0x4000;
      bVar1 = (byte)(uVar17 >> 0xb) & 8;
      if (9 < uVar3) {
        uVar3 = uVar3 - 9;
        *pbVar11 = bVar1 | 0x10;
        goto joined_r0x000ae874;
      }
      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;
      pbVar4 = pbVar11 + 3;
      pbVar11[1] = (char)uVar17 * '\x04';
      pbVar11[2] = (byte)(uVar17 >> 6);
    }
LAB_000ae83c:
    pbVar6 = pbVar5;
  } while (pbVar5 < param_1 + param_2 + -0xd);
  iVar9 = (int)pbVar4 - (int)param_3;
LAB_000ae5b8:
  *param_4 = iVar9;
  return (int)pbVar8 - (int)pbVar5;
}


addiu sp,sp,-0x18
addiu t2,a1,-0xd
addiu v1,a0,0x4
lw t4,0x28(sp)
addu a1,a0,a1
addu t2,a0,t2
sw s5,0x14(sp)
ori t3,zero,0xbfff
sw s4,0x10(sp)
li t6,0x20
sw s3,0xc(sp)
sw s2,0x8(sp)
or t5,a0,zero
sw s1,0x4(sp)
or t1,a2,zero
sw s0,0x0(sp)
lbu t9,0x3(v1)
lbu s0,0x2(v1)
lbu s1,0x1(v1)
sll v0,t9,0x6
lbu s2,0x0(v1)
xor v0,v0,s0
sll v0,v0,0x5
xor v0,v0,s1
sll v0,v0,0x5
xor v0,v0,s2
sll t0,v0,0x5
addu v0,t0,v0
srl v0,v0,0x5
andi t0,v0,0x7fff
sll t0,t0,0x2
addu s4,t4,t0
lw t7,0x0(s4)
subu t7,v1,t7
subu t0,v1,t7
sltu t8,t0,t5
beq t8,zero,0x000ae5e0
_addiu t8,t7,-0x1
addiu v0,v1,0x1
sw v1,0x0(s4)
sltu v1,v0,t2
bne v1,zero,0x000ae544
_or v1,v0,zero
or v0,a0,zero
subu a2,t1,a2
lw s5,0x14(sp)
lw s4,0x10(sp)
subu v0,a1,v0
lw s3,0xc(sp)
lw s2,0x8(sp)
lw s1,0x4(sp)
lw s0,0x0(sp)
addiu sp,sp,0x18
jr ra
_sw a2,0x0(a3)
sltu s3,t8,t3
beq s3,zero,0x000ae59c
_sltiu s3,t7,0x801
beq s3,zero,0x000ae6b0
_nop
lbu v0,0x0(t0)
bne v0,s2,0x000ae5a0
_addiu v0,v1,0x1
lbu v0,0x1(t0)
bne v0,s1,0x000ae5a0
_addiu v0,v1,0x1
lbu v0,0x2(t0)
bne v0,s0,0x000ae5a0
_addiu v0,v1,0x1
beq v1,a0,0x000ae658
_sw v1,0x0(s4)
subu t9,v1,a0
sltiu v0,t9,0x4
beq v0,zero,0x000ae968
_or v0,t1,zero
lbu s0,-0x2(t1)
or s0,t9,s0
sb s0,-0x2(t1)
addu t1,v0,t9
addiu a0,a0,0x1
lbu t9,-0x1(a0)
addiu v0,v0,0x1
bne v0,t1,0x000ae640
_sb t9,-0x1(v0)
or a0,v1,zero
lbu t9,0x3(t0)
lbu v0,0x3(v1)
beq t9,v0,0x000ae714
_addiu v0,v1,0x4
addiu v0,v0,-0x1
subu a0,v0,a0
beq s3,zero,0x000ae900
_andi a0,a0,0xff
addiu a0,a0,-0x1
sll v1,t8,0x2
sll a0,a0,0x5
andi v1,v1,0x1c
or a0,a0,v1
sb a0,0x0(t1)
addiu t1,t1,0x2
srl t7,t8,0x3
sltu v1,v0,t2
beq v1,zero,0x000ae5b4
_sb t7,-0x1(t1)
or a0,v0,zero
b 0x000ae544
_or v1,v0,zero
lbu s5,0x3(t0)
beq s5,t9,0x000ae5f4
_andi v0,v0,0x7ff
xori v0,v0,0x401f
sll v0,v0,0x2
addu s4,t4,v0
lw t7,0x0(s4)
subu t7,v1,t7
subu t0,v1,t7
sltu v0,t0,t5
bne v0,zero,0x000ae59c
_addiu t8,t7,-0x1
sltu v0,t8,t3
beq v0,zero,0x000ae59c
_sltiu s3,t7,0x801
bne s3,zero,0x000ae5f4
_nop
lbu v0,0x3(t0)
bne v0,t9,0x000ae5a0
_addiu v0,v1,0x1
lbu v0,0x0(t0)
bne v0,s2,0x000ae59c
_nop
b 0x000ae604
_lbu v0,0x1(t0)
lbu t9,0x4(t0)
lbu v0,0x4(v1)
beq t9,v0,0x000ae73c
_addiu v0,v1,0x5
addiu v0,v0,-0x1
subu a0,v0,a0
beq s3,zero,0x000ae900
_andi a0,a0,0xff
b 0x000ae67c
_addiu a0,a0,-0x1
lbu t9,0x5(t0)
lbu v0,0x5(v1)
beq t9,v0,0x000ae764
_addiu v0,v1,0x6
addiu v0,v0,-0x1
subu a0,v0,a0
beq s3,zero,0x000ae900
_andi a0,a0,0xff
b 0x000ae67c
_addiu a0,a0,-0x1
lbu t9,0x6(t0)
lbu v0,0x6(v1)
beq t9,v0,0x000ae78c
_addiu v0,v1,0x7
addiu v0,v0,-0x1
subu a0,v0,a0
beq s3,zero,0x000ae900
_andi a0,a0,0xff
b 0x000ae67c
_addiu a0,a0,-0x1
lbu t9,0x7(t0)
lbu v0,0x7(v1)
beq t9,v0,0x000ae7b8
_nop
addiu v0,v1,0x8
addiu v0,v0,-0x1
subu a0,v0,a0
beq s3,zero,0x000ae900
_andi a0,a0,0xff
b 0x000ae67c
_addiu a0,a0,-0x1
lbu s0,0x8(t0)
lbu t9,0x8(v1)
bne s0,t9,0x000ae668
_addiu v0,v1,0x9
sltu t9,v0,a1
beq t9,zero,0x000ae800
_nop
lbu t9,0x9(v1)
lbu v1,0x9(t0)
bne t9,v1,0x000ae800
_addiu t0,t0,0x9
addiu v0,v0,0x1
beq a1,v0,0x000ae8e4
_addiu t0,t0,0x1
lbu v1,0x0(v0)
lbu t9,0x0(t0)
beq t9,v1,0x000ae7e4
_nop
sltiu t0,t7,0x4001
subu a0,v0,a0
beq t0,zero,0x000ae850
_addiu v1,t1,0x1
sltiu t0,a0,0x22
beq t0,zero,0x000ae8d8
_or t7,t8,zero
addiu a0,a0,-0x2
ori a0,a0,0x20
sb a0,0x0(t1)
sll a0,t7,0x2
srl t7,t7,0x6
addiu t1,v1,0x2
sb a0,0x0(v1)
sb t7,0x1(v1)
sltu v1,v0,t2
bne v1,zero,0x000ae6a8
_or a0,v0,zero
b 0x000ae5b8
_subu a2,t1,a2
addiu t7,t7,-0x4000
sltiu t8,a0,0xa
srl t0,t7,0xb
bne t8,zero,0x000ae8b0
_andi t0,t0,0x8
ori t0,t0,0x10
addiu a0,a0,-0x9
sb t0,0x0(t1)
sltiu t0,a0,0x100
bne t0,zero,0x000ae890
_nop
addiu a0,a0,-0xff
sb zero,0x0(v1)
sltiu t0,a0,0x100
beq t0,zero,0x000ae87c
_addiu v1,v1,0x1
sb a0,0x0(v1)
addiu v1,v1,0x1
sll a0,t7,0x2
srl t7,t7,0x6
addiu t1,v1,0x2
sb a0,0x0(v1)
b 0x000ae83c
_sb t7,0x1(v1)
addiu a0,a0,-0x2
or a0,t0,a0
ori a0,a0,0x10
sb a0,0x0(t1)
sll a0,t7,0x2
srl t7,t7,0x6
addiu t1,v1,0x2
sb a0,0x0(v1)
b 0x000ae83c
_sb t7,0x1(v1)
addiu a0,a0,-0x21
b 0x000ae870
_sb t6,0x0(t1)
or v0,a1,zero
sltiu t0,t7,0x4001
subu a0,v0,a0
beq t0,zero,0x000ae850
_addiu v1,t1,0x1
b 0x000ae814
_sltiu t0,a0,0x22
addiu a0,a0,-0x2
sltiu t0,t7,0x4001
andi a0,a0,0xff
beq t0,zero,0x000ae938
_addiu v1,t1,0x1
ori a0,a0,0x20
or t7,t8,zero
sb a0,0x0(t1)
sll a0,t7,0x2
srl t7,t7,0x6
addiu t1,v1,0x2
sb a0,0x0(v1)
b 0x000ae83c
_sb t7,0x1(v1)
addiu t7,t7,-0x4000
srl t0,t7,0xb
andi t0,t0,0x8
or a0,a0,t0
ori a0,a0,0x10
sb a0,0x0(t1)
sll a0,t7,0x2
srl t7,t7,0x6
addiu t1,v1,0x2
sb a0,0x0(v1)
b 0x000ae83c
_sb t7,0x1(v1)
sltiu v0,t9,0x13
beq v0,zero,0x000ae984
_addiu s0,t1,0x1
addiu s1,t9,-0x3
or v0,s0,zero
b 0x000ae63c
_sb s1,0x0(t1)
addiu s1,t9,-0x12
sb zero,0x0(t1)
addiu v0,t1,0x2
sltiu t1,s1,0x100
bne t1,zero,0x000ae9cc
_addiu t1,s0,0x1
addiu s1,s1,-0xff
sltiu v0,s1,0x100
bne v0,zero,0x000ae9c4
_sb zero,-0x1(t1)
or s0,t1,zero
addiu t1,s0,0x1
addiu s1,s1,-0xff
sltiu v0,s1,0x100
beq v0,zero,0x000ae9ac
_sb zero,-0x1(t1)
addiu v0,s0,0x2
or s0,t1,zero
b 0x000ae63c
_sb s1,0x0(s0)
(translation_unit "int FUN_000ae504(byte *param_1,int param_2,byte *param_3,int *param_4,int param_5)\n\n{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  char cVar7;\n  byte *pbVar8;\n  int iVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  uint uVar13;\n  byte *pbVar14;\n  uint uVar15;\n  int *piVar16;\n  uint uVar17;\n  uint uVar18;\n  \n  pbVar8 = param_1 + param_2;\n  pbVar6 = param_1 + 4;\n  pbVar5 = param_1;\n  pbVar4 = param_3;\n  do {\n    while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }\n    }\n    if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }\nLAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;\n    bVar1 = pbVar10[1];\nLAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;\n    *piVar16 = (int)pbVar6;\n    pbVar12 = pbVar5;\n    pbVar11 = pbVar4;\n    if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }\n    pbVar5 = pbVar6 + 4;\n    if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }\n    if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    pbVar5 = pbVar6 + 9;\n    if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;\n    if ((pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }\n    uVar3 = (int)pbVar5 - (int)pbVar12;\njoined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }\nLAB_000ae83c:\n    pbVar6 = pbVar5;\n  } while (pbVar5 < param_1 + param_2 + -0xd);\n  iVar9 = (int)pbVar4 - (int)param_3;\nLAB_000ae5b8:\n  *param_4 = iVar9;\n  return (int)pbVar8 - (int)pbVar5;\n}\n\n" (function_definition "int FUN_000ae504(byte *param_1,int param_2,byte *param_3,int *param_4,int param_5)\n\n{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  char cVar7;\n  byte *pbVar8;\n  int iVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  uint uVar13;\n  byte *pbVar14;\n  uint uVar15;\n  int *piVar16;\n  uint uVar17;\n  uint uVar18;\n  \n  pbVar8 = param_1 + param_2;\n  pbVar6 = param_1 + 4;\n  pbVar5 = param_1;\n  pbVar4 = param_3;\n  do {\n    while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }\n    }\n    if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }\nLAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;\n    bVar1 = pbVar10[1];\nLAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;\n    *piVar16 = (int)pbVar6;\n    pbVar12 = pbVar5;\n    pbVar11 = pbVar4;\n    if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }\n    pbVar5 = pbVar6 + 4;\n    if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }\n    if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    pbVar5 = pbVar6 + 9;\n    if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;\n    if ((pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }\n    uVar3 = (int)pbVar5 - (int)pbVar12;\njoined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }\nLAB_000ae83c:\n    pbVar6 = pbVar5;\n  } while (pbVar5 < param_1 + param_2 + -0xd);\n  iVar9 = (int)pbVar4 - (int)param_3;\nLAB_000ae5b8:\n  *param_4 = iVar9;\n  return (int)pbVar8 - (int)pbVar5;\n}" primitive_type (function_declarator "FUN_000ae504(byte *param_1,int param_2,byte *param_3,int *param_4,int param_5)" identifier (parameter_list "(byte *param_1,int param_2,byte *param_3,int *param_4,int param_5)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  char cVar7;\n  byte *pbVar8;\n  int iVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  uint uVar13;\n  byte *pbVar14;\n  uint uVar15;\n  int *piVar16;\n  uint uVar17;\n  uint uVar18;\n  \n  pbVar8 = param_1 + param_2;\n  pbVar6 = param_1 + 4;\n  pbVar5 = param_1;\n  pbVar4 = param_3;\n  do {\n    while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }\n    }\n    if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }\nLAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;\n    bVar1 = pbVar10[1];\nLAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;\n    *piVar16 = (int)pbVar6;\n    pbVar12 = pbVar5;\n    pbVar11 = pbVar4;\n    if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }\n    pbVar5 = pbVar6 + 4;\n    if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }\n    if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    pbVar5 = pbVar6 + 9;\n    if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;\n    if ((pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }\n    uVar3 = (int)pbVar5 - (int)pbVar12;\njoined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }\nLAB_000ae83c:\n    pbVar6 = pbVar5;\n  } while (pbVar5 < param_1 + param_2 + -0xd);\n  iVar9 = (int)pbVar4 - (int)param_3;\nLAB_000ae5b8:\n  *param_4 = iVar9;\n  return (int)pbVar8 - (int)pbVar5;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (expression_statement "pbVar8 = param_1 + param_2;" (assignment_expression "pbVar8 = param_1 + param_2" identifier = (binary_expression "param_1 + param_2" identifier + identifier)) ;) (expression_statement "pbVar6 = param_1 + 4;" (assignment_expression "pbVar6 = param_1 + 4" identifier = (binary_expression "param_1 + 4" identifier + number_literal)) ;) (expression_statement "pbVar5 = param_1;" (assignment_expression "pbVar5 = param_1" identifier = identifier) ;) (expression_statement "pbVar4 = param_3;" (assignment_expression "pbVar4 = param_3" identifier = identifier) ;) (do_statement "do {\n    while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }\n    }\n    if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }\nLAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;\n    bVar1 = pbVar10[1];\nLAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;\n    *piVar16 = (int)pbVar6;\n    pbVar12 = pbVar5;\n    pbVar11 = pbVar4;\n    if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }\n    pbVar5 = pbVar6 + 4;\n    if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }\n    if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    pbVar5 = pbVar6 + 9;\n    if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;\n    if ((pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }\n    uVar3 = (int)pbVar5 - (int)pbVar12;\njoined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }\nLAB_000ae83c:\n    pbVar6 = pbVar5;\n  } while (pbVar5 < param_1 + param_2 + -0xd);" do (compound_statement "{\n    while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }\n    }\n    if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }\nLAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;\n    bVar1 = pbVar10[1];\nLAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;\n    *piVar16 = (int)pbVar6;\n    pbVar12 = pbVar5;\n    pbVar11 = pbVar4;\n    if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }\n    pbVar5 = pbVar6 + 4;\n    if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }\n    if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    pbVar5 = pbVar6 + 9;\n    if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;\n    if ((pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }\n    uVar3 = (int)pbVar5 - (int)pbVar12;\njoined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }\nLAB_000ae83c:\n    pbVar6 = pbVar5;\n  }" { (while_statement "while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }\n    }" { (expression_statement "uVar18 = (uint)pbVar6[3];" (assignment_expression "uVar18 = (uint)pbVar6[3]" identifier = (cast_expression "(uint)pbVar6[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar15 = (uint)*pbVar6;" (assignment_expression "uVar15 = (uint)*pbVar6" identifier = (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;" (assignment_expression "uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5" identifier = (binary_expression "(((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5" (binary_expression "(((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21" (parenthesized_expression "(((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15)" ( (binary_expression "((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15" (binary_expression "((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5" (parenthesized_expression "((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1])" ( (binary_expression "(uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]" (binary_expression "(uVar18 << 6 ^ (uint)pbVar6[2]) << 5" (parenthesized_expression "(uVar18 << 6 ^ (uint)pbVar6[2])" ( (binary_expression "uVar18 << 6 ^ (uint)pbVar6[2]" (binary_expression "uVar18 << 6" identifier << number_literal) ^ (cast_expression "(uint)pbVar6[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[2]" identifier [ number_literal ]))) )) << number_literal) ^ (cast_expression "(uint)pbVar6[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[1]" identifier [ number_literal ]))) )) << number_literal) ^ identifier) )) * number_literal) >> number_literal)) ;) (expression_statement "piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);" (assignment_expression "piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4)" identifier = (cast_expression "(int *)(param_5 + (uVar3 & 0x7fff) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + (uVar3 & 0x7fff) * 4)" ( (binary_expression "param_5 + (uVar3 & 0x7fff) * 4" identifier + (binary_expression "(uVar3 & 0x7fff) * 4" (parenthesized_expression "(uVar3 & 0x7fff)" ( (binary_expression "uVar3 & 0x7fff" identifier & number_literal) )) * number_literal)) )))) ;) (expression_statement "uVar13 = (int)pbVar6 - *piVar16;" (assignment_expression "uVar13 = (int)pbVar6 - *piVar16" identifier = (binary_expression "(int)pbVar6 - *piVar16" (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (pointer_expression "*piVar16" * identifier))) ;) (expression_statement "pbVar10 = pbVar6 + -uVar13;" (assignment_expression "pbVar10 = pbVar6 + -uVar13" identifier = (binary_expression "pbVar6 + -uVar13" identifier + (unary_expression "-uVar13" - identifier))) ;) (expression_statement "uVar17 = uVar13 - 1;" (assignment_expression "uVar17 = uVar13 - 1" identifier = (binary_expression "uVar13 - 1" identifier - number_literal)) ;) (if_statement "if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;" if (parenthesized_expression "((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff))" ( (binary_expression "(param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)" (parenthesized_expression "(param_1 <= pbVar10)" ( (binary_expression "param_1 <= pbVar10" identifier <= identifier) )) && (parenthesized_expression "(bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)" ( (comma_expression "bVar2 = uVar13 < 0x801, uVar17 < 0xbfff" (assignment_expression "bVar2 = uVar13 < 0x801" identifier = (binary_expression "uVar13 < 0x801" identifier < number_literal)) , (binary_expression "uVar17 < 0xbfff" identifier < number_literal)) ))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;" statement_identifier : (expression_statement "pbVar10 = pbVar6 + 1;" (assignment_expression "pbVar10 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;)) (expression_statement "*piVar16 = (int)pbVar6;" (assignment_expression "*piVar16 = (int)pbVar6" (pointer_expression "*piVar16" * identifier) = (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (labeled_statement "joined_r0x000ae69c:\n      pbVar6 = pbVar10;" statement_identifier : (expression_statement "pbVar6 = pbVar10;" (assignment_expression "pbVar6 = pbVar10" identifier = identifier) ;)) (if_statement "if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }" if (parenthesized_expression "(param_1 + param_2 + -0xd <= pbVar10)" ( (binary_expression "param_1 + param_2 + -0xd <= pbVar10" (binary_expression "param_1 + param_2 + -0xd" (binary_expression "param_1 + param_2" identifier + identifier) + number_literal) <= identifier) )) (compound_statement "{\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }" { (expression_statement "iVar9 = (int)pbVar4 - (int)param_3;" (assignment_expression "iVar9 = (int)pbVar4 - (int)param_3" identifier = (binary_expression "(int)pbVar4 - (int)param_3" (cast_expression "(int)pbVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_000ae5b8;" goto statement_identifier ;) })) })) (if_statement "if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }" if (parenthesized_expression "((!bVar2) && (pbVar10[3] != uVar18))" ( (binary_expression "(!bVar2) && (pbVar10[3] != uVar18)" (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) && (parenthesized_expression "(pbVar10[3] != uVar18)" ( (binary_expression "pbVar10[3] != uVar18" (subscript_expression "pbVar10[3]" identifier [ number_literal ]) != identifier) ))) )) (compound_statement "{\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }" { (expression_statement "piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);" (assignment_expression "piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4)" identifier = (cast_expression "(int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4)" ( (binary_expression "param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4" identifier + (binary_expression "(uVar3 & 0x7ff ^ 0x401f) * 4" (parenthesized_expression "(uVar3 & 0x7ff ^ 0x401f)" ( (binary_expression "uVar3 & 0x7ff ^ 0x401f" (binary_expression "uVar3 & 0x7ff" identifier & number_literal) ^ number_literal) )) * number_literal)) )))) ;) (expression_statement "uVar13 = (int)pbVar6 - *piVar16;" (assignment_expression "uVar13 = (int)pbVar6 - *piVar16" identifier = (binary_expression "(int)pbVar6 - *piVar16" (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (pointer_expression "*piVar16" * identifier))) ;) (expression_statement "pbVar10 = pbVar6 + -uVar13;" (assignment_expression "pbVar10 = pbVar6 + -uVar13" identifier = (binary_expression "pbVar6 + -uVar13" identifier + (unary_expression "-uVar13" - identifier))) ;) (expression_statement "uVar17 = uVar13 - 1;" (assignment_expression "uVar17 = uVar13 - 1" identifier = (binary_expression "uVar13 - 1" identifier - number_literal)) ;) (if_statement "if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }" if (parenthesized_expression "((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff))" ( (binary_expression "(param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)" (parenthesized_expression "(param_1 <= pbVar10)" ( (binary_expression "param_1 <= pbVar10" identifier <= identifier) )) && (parenthesized_expression "(bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)" ( (comma_expression "bVar2 = uVar13 < 0x801, uVar17 < 0xbfff" (assignment_expression "bVar2 = uVar13 < 0x801" identifier = (binary_expression "uVar13 < 0x801" identifier < number_literal)) , (binary_expression "uVar17 < 0xbfff" identifier < number_literal)) ))) )) (compound_statement "{\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }" { (if_statement "if (bVar2) goto LAB_000ae5f4;" if (parenthesized_expression "(bVar2)" ( identifier )) (goto_statement "goto LAB_000ae5f4;" goto statement_identifier ;)) (if_statement "if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;" if (parenthesized_expression "((pbVar10[3] != uVar18) || (*pbVar10 != uVar15))" ( (binary_expression "(pbVar10[3] != uVar18) || (*pbVar10 != uVar15)" (parenthesized_expression "(pbVar10[3] != uVar18)" ( (binary_expression "pbVar10[3] != uVar18" (subscript_expression "pbVar10[3]" identifier [ number_literal ]) != identifier) )) || (parenthesized_expression "(*pbVar10 != uVar15)" ( (binary_expression "*pbVar10 != uVar15" (pointer_expression "*pbVar10" * identifier) != identifier) ))) )) (goto_statement "goto LAB_000ae5a0;" goto statement_identifier ;)) (expression_statement "bVar1 = pbVar10[1];" (assignment_expression "bVar1 = pbVar10[1]" identifier = (subscript_expression "pbVar10[1]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_000ae604;" goto statement_identifier ;) })) (goto_statement "goto LAB_000ae5a0;" goto statement_identifier ;) })) (labeled_statement "LAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;" statement_identifier : (if_statement "if (*pbVar10 != uVar15) goto LAB_000ae5a0;" if (parenthesized_expression "(*pbVar10 != uVar15)" ( (binary_expression "*pbVar10 != uVar15" (pointer_expression "*pbVar10" * identifier) != identifier) )) (goto_statement "goto LAB_000ae5a0;" goto statement_identifier ;))) (expression_statement "bVar1 = pbVar10[1];" (assignment_expression "bVar1 = pbVar10[1]" identifier = (subscript_expression "pbVar10[1]" identifier [ number_literal ])) ;) (labeled_statement "LAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;" statement_identifier : (if_statement "if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;" if (parenthesized_expression "(((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))" ( (binary_expression "((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2])" (parenthesized_expression "((uint)bVar1 != (uint)pbVar6[1])" ( (binary_expression "(uint)bVar1 != (uint)pbVar6[1]" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) != (cast_expression "(uint)pbVar6[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[1]" identifier [ number_literal ]))) )) || (parenthesized_expression "((uint)pbVar10[2] != (uint)pbVar6[2])" ( (binary_expression "(uint)pbVar10[2] != (uint)pbVar6[2]" (cast_expression "(uint)pbVar10[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar10[2]" identifier [ number_literal ])) != (cast_expression "(uint)pbVar6[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[2]" identifier [ number_literal ]))) ))) )) (goto_statement "goto LAB_000ae5a0;" goto statement_identifier ;))) (expression_statement "*piVar16 = (int)pbVar6;" (assignment_expression "*piVar16 = (int)pbVar6" (pointer_expression "*piVar16" * identifier) = (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pbVar12 = pbVar5;" (assignment_expression "pbVar12 = pbVar5" identifier = identifier) ;) (expression_statement "pbVar11 = pbVar4;" (assignment_expression "pbVar11 = pbVar4" identifier = identifier) ;) (if_statement "if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }" if (parenthesized_expression "(pbVar6 != pbVar5)" ( (binary_expression "pbVar6 != pbVar5" identifier != identifier) )) (compound_statement "{\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }" { (expression_statement "uVar3 = (int)pbVar6 - (int)pbVar5;" (assignment_expression "uVar3 = (int)pbVar6 - (int)pbVar5" identifier = (binary_expression "(int)pbVar6 - (int)pbVar5" (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }" if (parenthesized_expression "(uVar3 < 4)" ( (binary_expression "uVar3 < 4" identifier < number_literal) )) (compound_statement "{\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }" { (expression_statement "pbVar4[-2] = (byte)uVar3 | pbVar4[-2];" (assignment_expression "pbVar4[-2] = (byte)uVar3 | pbVar4[-2]" (subscript_expression "pbVar4[-2]" identifier [ number_literal ]) = (binary_expression "(byte)uVar3 | pbVar4[-2]" (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) | (subscript_expression "pbVar4[-2]" identifier [ number_literal ]))) ;) (expression_statement "pbVar14 = pbVar4;" (assignment_expression "pbVar14 = pbVar4" identifier = identifier) ;) }) (else_clause "else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }" else (compound_statement "{\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }" { (expression_statement "pbVar14 = pbVar4 + 1;" (assignment_expression "pbVar14 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (if_statement "if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }" if (parenthesized_expression "(uVar3 < 0x13)" ( (binary_expression "uVar3 < 0x13" identifier < number_literal) )) (compound_statement "{\n          *pbVar4 = (byte)uVar3 - 3;\n        }" { (expression_statement "*pbVar4 = (byte)uVar3 - 3;" (assignment_expression "*pbVar4 = (byte)uVar3 - 3" (pointer_expression "*pbVar4" * identifier) = (binary_expression "(byte)uVar3 - 3" (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) - number_literal)) ;) }) (else_clause "else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }" else (compound_statement "{\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }" { (expression_statement "uVar15 = uVar3 - 0x12;" (assignment_expression "uVar15 = uVar3 - 0x12" identifier = (binary_expression "uVar3 - 0x12" identifier - number_literal)) ;) (expression_statement "*pbVar4 = 0;" (assignment_expression "*pbVar4 = 0" (pointer_expression "*pbVar4" * identifier) = number_literal) ;) (expression_statement "pbVar12 = pbVar4 + 2;" (assignment_expression "pbVar12 = pbVar4 + 2" identifier = (binary_expression "pbVar4 + 2" identifier + number_literal)) ;) (expression_statement "pbVar11 = pbVar14;" (assignment_expression "pbVar11 = pbVar14" identifier = identifier) ;) (if_statement "if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }" if (parenthesized_expression "(0xff < uVar15)" ( (binary_expression "0xff < uVar15" number_literal < identifier) )) (compound_statement "{\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }" { (expression_statement "pbVar4[1] = 0;" (assignment_expression "pbVar4[1] = 0" (subscript_expression "pbVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar4 = pbVar14;" (assignment_expression "pbVar4 = pbVar14" identifier = identifier) ;) (expression_statement "pbVar11 = pbVar12;" (assignment_expression "pbVar11 = pbVar12" identifier = identifier) ;) (for_statement "for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }" for ( (assignment_expression "uVar15 = uVar3 - 0x111" identifier = (binary_expression "uVar3 - 0x111" identifier - number_literal)) ; (binary_expression "0xff < uVar15" number_literal < identifier) ; (assignment_expression "uVar15 = uVar15 - 0xff" identifier = (binary_expression "uVar15 - 0xff" identifier - number_literal)) ) (compound_statement "{\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }" { (expression_statement "*pbVar11 = 0;" (assignment_expression "*pbVar11 = 0" (pointer_expression "*pbVar11" * identifier) = number_literal) ;) (expression_statement "pbVar4 = pbVar11;" (assignment_expression "pbVar4 = pbVar11" identifier = identifier) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) })) })) (expression_statement "pbVar14 = pbVar4 + 2;" (assignment_expression "pbVar14 = pbVar4 + 2" identifier = (binary_expression "pbVar4 + 2" identifier + number_literal)) ;) (expression_statement "*pbVar11 = (byte)uVar15;" (assignment_expression "*pbVar11 = (byte)uVar15" (pointer_expression "*pbVar11" * identifier) = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) }))) (expression_statement "pbVar11 = pbVar14 + uVar3;" (assignment_expression "pbVar11 = pbVar14 + uVar3" identifier = (binary_expression "pbVar14 + uVar3" identifier + identifier)) ;) (do_statement "do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);" do (compound_statement "{\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      }" { (expression_statement "pbVar4 = pbVar14 + 1;" (assignment_expression "pbVar4 = pbVar14 + 1" identifier = (binary_expression "pbVar14 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar14 = *pbVar5;" (assignment_expression "*pbVar14 = *pbVar5" (pointer_expression "*pbVar14" * identifier) = (pointer_expression "*pbVar5" * identifier)) ;) (expression_statement "pbVar14 = pbVar4;" (assignment_expression "pbVar14 = pbVar4" identifier = identifier) ;) (expression_statement "pbVar12 = pbVar6;" (assignment_expression "pbVar12 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar4 != pbVar11)" ( (binary_expression "pbVar4 != pbVar11" identifier != identifier) )) ;) })) (expression_statement "pbVar5 = pbVar6 + 4;" (assignment_expression "pbVar5 = pbVar6 + 4" identifier = (binary_expression "pbVar6 + 4" identifier + number_literal)) ;) (if_statement "if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }" if (parenthesized_expression "(pbVar10[3] != pbVar6[3])" ( (binary_expression "pbVar10[3] != pbVar6[3]" (subscript_expression "pbVar10[3]" identifier [ number_literal ]) != (subscript_expression "pbVar6[3]" identifier [ number_literal ])) )) (compound_statement "{\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }" { (labeled_statement "LAB_000ae668:\n      pbVar5 = pbVar5 + -1;" statement_identifier : (expression_statement "pbVar5 = pbVar5 + -1;" (assignment_expression "pbVar5 = pbVar5 + -1" identifier = (binary_expression "pbVar5 + -1" identifier + number_literal)) ;)) (expression_statement "cVar7 = (char)((int)pbVar5 - (int)pbVar12);" (assignment_expression "cVar7 = (char)((int)pbVar5 - (int)pbVar12)" identifier = (cast_expression "(char)((int)pbVar5 - (int)pbVar12)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((int)pbVar5 - (int)pbVar12)" ( (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (compound_statement "{\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }" { (labeled_statement "LAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }" statement_identifier : (if_statement "if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }" if (parenthesized_expression "(uVar13 < 0x4001)" ( (binary_expression "uVar13 < 0x4001" identifier < number_literal) )) (compound_statement "{\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }" { (expression_statement "*pbVar11 = cVar7 - 2U | 0x20;" (assignment_expression "*pbVar11 = cVar7 - 2U | 0x20" (pointer_expression "*pbVar11" * identifier) = (binary_expression "cVar7 - 2U | 0x20" (binary_expression "cVar7 - 2U" identifier - number_literal) | number_literal)) ;) (expression_statement "pbVar4 = pbVar11 + 3;" (assignment_expression "pbVar4 = pbVar11 + 3" identifier = (binary_expression "pbVar11 + 3" identifier + number_literal)) ;) (expression_statement "pbVar11[1] = (byte)(uVar17 << 2);" (assignment_expression "pbVar11[1] = (byte)(uVar17 << 2)" (subscript_expression "pbVar11[1]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 << 2)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 << 2)" ( (binary_expression "uVar17 << 2" identifier << number_literal) )))) ;) (expression_statement "pbVar11[2] = (byte)(uVar17 >> 6);" (assignment_expression "pbVar11[2] = (byte)(uVar17 >> 6)" (subscript_expression "pbVar11[2]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 >> 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 >> 6)" ( (binary_expression "uVar17 >> 6" identifier >> number_literal) )))) ;) }) (else_clause "else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }" else (compound_statement "{\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }" { (expression_statement "uVar13 = uVar13 - 0x4000;" (assignment_expression "uVar13 = uVar13 - 0x4000" identifier = (binary_expression "uVar13 - 0x4000" identifier - number_literal)) ;) (expression_statement "*pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;" (assignment_expression "*pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10" (pointer_expression "*pbVar11" * identifier) = (binary_expression "cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10" (binary_expression "cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8" (binary_expression "cVar7 - 2U" identifier - number_literal) | (binary_expression "(byte)(uVar13 >> 0xb) & 8" (call_expression "(byte)(uVar13 >> 0xb)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar13 >> 0xb)" ( (binary_expression "uVar13 >> 0xb" identifier >> number_literal) ))) & number_literal)) | number_literal)) ;) (expression_statement "pbVar4 = pbVar11 + 3;" (assignment_expression "pbVar4 = pbVar11 + 3" identifier = (binary_expression "pbVar11 + 3" identifier + number_literal)) ;) (expression_statement "pbVar11[1] = (char)uVar13 * '\x04';" (assignment_expression "pbVar11[1] = (char)uVar13 * '\x04'" (subscript_expression "pbVar11[1]" identifier [ number_literal ]) = (binary_expression "(char)uVar13 * '\x04'" (cast_expression "(char)uVar13" ( (type_descriptor "char" primitive_type) ) identifier) * (char_literal "'\x04'" ' escape_sequence '))) ;) (expression_statement "pbVar11[2] = (byte)(uVar13 >> 6);" (assignment_expression "pbVar11[2] = (byte)(uVar13 >> 6)" (subscript_expression "pbVar11[2]" identifier [ number_literal ]) = (call_expression "(byte)(uVar13 >> 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar13 >> 6)" ( (binary_expression "uVar13 >> 6" identifier >> number_literal) )))) ;) })))) (goto_statement "goto LAB_000ae83c;" goto statement_identifier ;) })) (expression_statement "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;" (assignment_expression "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" identifier = (binary_expression "((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (parenthesized_expression "((int)pbVar5 - (int)pbVar12 & 0xffU)" ( (binary_expression "(int)pbVar5 - (int)pbVar12 & 0xffU" (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )) - number_literal)) ;) (labeled_statement "LAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);" statement_identifier : (expression_statement "*pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);" (assignment_expression "*pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2)" (pointer_expression "*pbVar11" * identifier) = (binary_expression "(byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2)" (call_expression "(byte)(iVar9 << 5)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(iVar9 << 5)" ( (binary_expression "iVar9 << 5" identifier << number_literal) ))) | (call_expression "(byte)((uVar17 & 7) << 2)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar17 & 7) << 2)" ( (binary_expression "(uVar17 & 7) << 2" (parenthesized_expression "(uVar17 & 7)" ( (binary_expression "uVar17 & 7" identifier & number_literal) )) << number_literal) ))))) ;)) (expression_statement "pbVar4 = pbVar11 + 2;" (assignment_expression "pbVar4 = pbVar11 + 2" identifier = (binary_expression "pbVar11 + 2" identifier + number_literal)) ;) (expression_statement "pbVar11[1] = (byte)(uVar17 >> 3);" (assignment_expression "pbVar11[1] = (byte)(uVar17 >> 3)" (subscript_expression "pbVar11[1]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 >> 3)" ( (binary_expression "uVar17 >> 3" identifier >> number_literal) )))) ;) (expression_statement "pbVar10 = pbVar5;" (assignment_expression "pbVar10 = pbVar5" identifier = identifier) ;) (goto_statement "goto joined_r0x000ae69c;" goto statement_identifier ;) })) (if_statement "if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" if (parenthesized_expression "(pbVar10[4] != pbVar6[4])" ( (binary_expression "pbVar10[4] != pbVar6[4]" (subscript_expression "pbVar10[4]" identifier [ number_literal ]) != (subscript_expression "pbVar6[4]" identifier [ number_literal ])) )) (compound_statement "{\n      pbVar5 = pbVar6 + 4;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" { (expression_statement "pbVar5 = pbVar6 + 4;" (assignment_expression "pbVar5 = pbVar6 + 4" identifier = (binary_expression "pbVar6 + 4" identifier + number_literal)) ;) (expression_statement "cVar7 = (char)((int)pbVar5 - (int)pbVar12);" (assignment_expression "cVar7 = (char)((int)pbVar5 - (int)pbVar12)" identifier = (cast_expression "(char)((int)pbVar5 - (int)pbVar12)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((int)pbVar5 - (int)pbVar12)" ( (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (!bVar2) goto LAB_000ae900;" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (goto_statement "goto LAB_000ae900;" goto statement_identifier ;)) (expression_statement "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;" (assignment_expression "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" identifier = (binary_expression "((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (parenthesized_expression "((int)pbVar5 - (int)pbVar12 & 0xffU)" ( (binary_expression "(int)pbVar5 - (int)pbVar12 & 0xffU" (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )) - number_literal)) ;) (goto_statement "goto LAB_000ae67c;" goto statement_identifier ;) })) (if_statement "if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" if (parenthesized_expression "(pbVar10[5] != pbVar6[5])" ( (binary_expression "pbVar10[5] != pbVar6[5]" (subscript_expression "pbVar10[5]" identifier [ number_literal ]) != (subscript_expression "pbVar6[5]" identifier [ number_literal ])) )) (compound_statement "{\n      pbVar5 = pbVar6 + 5;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" { (expression_statement "pbVar5 = pbVar6 + 5;" (assignment_expression "pbVar5 = pbVar6 + 5" identifier = (binary_expression "pbVar6 + 5" identifier + number_literal)) ;) (expression_statement "cVar7 = (char)((int)pbVar5 - (int)pbVar12);" (assignment_expression "cVar7 = (char)((int)pbVar5 - (int)pbVar12)" identifier = (cast_expression "(char)((int)pbVar5 - (int)pbVar12)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((int)pbVar5 - (int)pbVar12)" ( (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (!bVar2) goto LAB_000ae900;" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (goto_statement "goto LAB_000ae900;" goto statement_identifier ;)) (expression_statement "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;" (assignment_expression "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" identifier = (binary_expression "((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (parenthesized_expression "((int)pbVar5 - (int)pbVar12 & 0xffU)" ( (binary_expression "(int)pbVar5 - (int)pbVar12 & 0xffU" (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )) - number_literal)) ;) (goto_statement "goto LAB_000ae67c;" goto statement_identifier ;) })) (if_statement "if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" if (parenthesized_expression "(pbVar10[6] != pbVar6[6])" ( (binary_expression "pbVar10[6] != pbVar6[6]" (subscript_expression "pbVar10[6]" identifier [ number_literal ]) != (subscript_expression "pbVar6[6]" identifier [ number_literal ])) )) (compound_statement "{\n      pbVar5 = pbVar6 + 6;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" { (expression_statement "pbVar5 = pbVar6 + 6;" (assignment_expression "pbVar5 = pbVar6 + 6" identifier = (binary_expression "pbVar6 + 6" identifier + number_literal)) ;) (expression_statement "cVar7 = (char)((int)pbVar5 - (int)pbVar12);" (assignment_expression "cVar7 = (char)((int)pbVar5 - (int)pbVar12)" identifier = (cast_expression "(char)((int)pbVar5 - (int)pbVar12)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((int)pbVar5 - (int)pbVar12)" ( (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (!bVar2) goto LAB_000ae900;" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (goto_statement "goto LAB_000ae900;" goto statement_identifier ;)) (expression_statement "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;" (assignment_expression "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" identifier = (binary_expression "((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (parenthesized_expression "((int)pbVar5 - (int)pbVar12 & 0xffU)" ( (binary_expression "(int)pbVar5 - (int)pbVar12 & 0xffU" (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )) - number_literal)) ;) (goto_statement "goto LAB_000ae67c;" goto statement_identifier ;) })) (if_statement "if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" if (parenthesized_expression "(pbVar10[7] != pbVar6[7])" ( (binary_expression "pbVar10[7] != pbVar6[7]" (subscript_expression "pbVar10[7]" identifier [ number_literal ]) != (subscript_expression "pbVar6[7]" identifier [ number_literal ])) )) (compound_statement "{\n      pbVar5 = pbVar6 + 7;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" { (expression_statement "pbVar5 = pbVar6 + 7;" (assignment_expression "pbVar5 = pbVar6 + 7" identifier = (binary_expression "pbVar6 + 7" identifier + number_literal)) ;) (expression_statement "cVar7 = (char)((int)pbVar5 - (int)pbVar12);" (assignment_expression "cVar7 = (char)((int)pbVar5 - (int)pbVar12)" identifier = (cast_expression "(char)((int)pbVar5 - (int)pbVar12)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((int)pbVar5 - (int)pbVar12)" ( (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (!bVar2) goto LAB_000ae900;" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (goto_statement "goto LAB_000ae900;" goto statement_identifier ;)) (expression_statement "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;" (assignment_expression "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" identifier = (binary_expression "((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (parenthesized_expression "((int)pbVar5 - (int)pbVar12 & 0xffU)" ( (binary_expression "(int)pbVar5 - (int)pbVar12 & 0xffU" (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )) - number_literal)) ;) (goto_statement "goto LAB_000ae67c;" goto statement_identifier ;) })) (expression_statement "pbVar5 = pbVar6 + 9;" (assignment_expression "pbVar5 = pbVar6 + 9" identifier = (binary_expression "pbVar6 + 9" identifier + number_literal)) ;) (if_statement "if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;" if (parenthesized_expression "(pbVar10[8] != pbVar6[8])" ( (binary_expression "pbVar10[8] != pbVar6[8]" (subscript_expression "pbVar10[8]" identifier [ number_literal ]) != (subscript_expression "pbVar6[8]" identifier [ number_literal ])) )) (goto_statement "goto LAB_000ae668;" goto statement_identifier ;)) (if_statement "if ((pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }" if (parenthesized_expression "((pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9]))" ( (binary_expression "(pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])" (parenthesized_expression "(pbVar5 < pbVar8)" ( (binary_expression "pbVar5 < pbVar8" identifier < identifier) )) && (parenthesized_expression "(pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])" ( (comma_expression "pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9]" (assignment_expression "pbVar4 = pbVar10 + 9" identifier = (binary_expression "pbVar10 + 9" identifier + number_literal)) , (binary_expression "pbVar6[9] == pbVar10[9]" (subscript_expression "pbVar6[9]" identifier [ number_literal ]) == (subscript_expression "pbVar10[9]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }" { (do_statement "do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);" do (compound_statement "{\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      }" { (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }" if (parenthesized_expression "(pbVar8 == pbVar5)" ( (binary_expression "pbVar8 == pbVar5" identifier == identifier) )) (compound_statement "{\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }" { (expression_statement "uVar3 = (int)pbVar8 - (int)pbVar12;" (assignment_expression "uVar3 = (int)pbVar8 - (int)pbVar12" identifier = (binary_expression "(int)pbVar8 - (int)pbVar12" (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pbVar5 = pbVar8;" (assignment_expression "pbVar5 = pbVar8" identifier = identifier) ;) (goto_statement "goto joined_r0x000ae8f0;" goto statement_identifier ;) })) }) while (parenthesized_expression "(*pbVar4 == *pbVar5)" ( (binary_expression "*pbVar4 == *pbVar5" (pointer_expression "*pbVar4" * identifier) == (pointer_expression "*pbVar5" * identifier)) )) ;) })) (expression_statement "uVar3 = (int)pbVar5 - (int)pbVar12;" (assignment_expression "uVar3 = (int)pbVar5 - (int)pbVar12" identifier = (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (labeled_statement "joined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }" statement_identifier : (if_statement "if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }" if (parenthesized_expression "(uVar13 < 0x4001)" ( (binary_expression "uVar13 < 0x4001" identifier < number_literal) )) (compound_statement "{\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }" { (if_statement "if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }" if (parenthesized_expression "(uVar3 < 0x22)" ( (binary_expression "uVar3 < 0x22" identifier < number_literal) )) (compound_statement "{\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }" { (expression_statement "*pbVar11 = (char)uVar3 - 2U | 0x20;" (assignment_expression "*pbVar11 = (char)uVar3 - 2U | 0x20" (pointer_expression "*pbVar11" * identifier) = (binary_expression "(char)uVar3 - 2U | 0x20" (binary_expression "(char)uVar3 - 2U" (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier) - number_literal) | number_literal)) ;) (expression_statement "pbVar4 = pbVar11 + 3;" (assignment_expression "pbVar4 = pbVar11 + 3" identifier = (binary_expression "pbVar11 + 3" identifier + number_literal)) ;) (expression_statement "pbVar11[1] = (byte)(uVar17 << 2);" (assignment_expression "pbVar11[1] = (byte)(uVar17 << 2)" (subscript_expression "pbVar11[1]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 << 2)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 << 2)" ( (binary_expression "uVar17 << 2" identifier << number_literal) )))) ;) (expression_statement "pbVar11[2] = (byte)(uVar17 >> 6);" (assignment_expression "pbVar11[2] = (byte)(uVar17 >> 6)" (subscript_expression "pbVar11[2]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 >> 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 >> 6)" ( (binary_expression "uVar17 >> 6" identifier >> number_literal) )))) ;) }) (else_clause "else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }" else (compound_statement "{\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }" { (expression_statement "uVar3 = uVar3 - 0x21;" (assignment_expression "uVar3 = uVar3 - 0x21" identifier = (binary_expression "uVar3 - 0x21" identifier - number_literal)) ;) (expression_statement "*pbVar11 = 0x20;" (assignment_expression "*pbVar11 = 0x20" (pointer_expression "*pbVar11" * identifier) = number_literal) ;) (labeled_statement "joined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }" statement_identifier : (for_statement "for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }" for ( ; (comma_expression "pbVar4 = pbVar11 + 1, 0xff < uVar3" (assignment_expression "pbVar4 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) , (binary_expression "0xff < uVar3" number_literal < identifier)) ; (assignment_expression "uVar3 = uVar3 - 0xff" identifier = (binary_expression "uVar3 - 0xff" identifier - number_literal)) ) (compound_statement "{\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }" { (expression_statement "*pbVar4 = 0;" (assignment_expression "*pbVar4 = 0" (pointer_expression "*pbVar4" * identifier) = number_literal) ;) (expression_statement "pbVar11 = pbVar4;" (assignment_expression "pbVar11 = pbVar4" identifier = identifier) ;) }))) (expression_statement "*pbVar4 = (byte)uVar3;" (assignment_expression "*pbVar4 = (byte)uVar3" (pointer_expression "*pbVar4" * identifier) = (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "pbVar4 = pbVar11 + 4;" (assignment_expression "pbVar4 = pbVar11 + 4" identifier = (binary_expression "pbVar11 + 4" identifier + number_literal)) ;) (expression_statement "pbVar11[2] = (byte)(uVar17 << 2);" (assignment_expression "pbVar11[2] = (byte)(uVar17 << 2)" (subscript_expression "pbVar11[2]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 << 2)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 << 2)" ( (binary_expression "uVar17 << 2" identifier << number_literal) )))) ;) (expression_statement "pbVar11[3] = (byte)(uVar17 >> 6);" (assignment_expression "pbVar11[3] = (byte)(uVar17 >> 6)" (subscript_expression "pbVar11[3]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 >> 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 >> 6)" ( (binary_expression "uVar17 >> 6" identifier >> number_literal) )))) ;) }))) }) (else_clause "else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }" else (compound_statement "{\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }" { (expression_statement "uVar17 = uVar13 - 0x4000;" (assignment_expression "uVar17 = uVar13 - 0x4000" identifier = (binary_expression "uVar13 - 0x4000" identifier - number_literal)) ;) (expression_statement "bVar1 = (byte)(uVar17 >> 0xb) & 8;" (assignment_expression "bVar1 = (byte)(uVar17 >> 0xb) & 8" identifier = (binary_expression "(byte)(uVar17 >> 0xb) & 8" (call_expression "(byte)(uVar17 >> 0xb)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 >> 0xb)" ( (binary_expression "uVar17 >> 0xb" identifier >> number_literal) ))) & number_literal)) ;) (if_statement "if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }" if (parenthesized_expression "(9 < uVar3)" ( (binary_expression "9 < uVar3" number_literal < identifier) )) (compound_statement "{\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }" { (expression_statement "uVar3 = uVar3 - 9;" (assignment_expression "uVar3 = uVar3 - 9" identifier = (binary_expression "uVar3 - 9" identifier - number_literal)) ;) (expression_statement "*pbVar11 = bVar1 | 0x10;" (assignment_expression "*pbVar11 = bVar1 | 0x10" (pointer_expression "*pbVar11" * identifier) = (binary_expression "bVar1 | 0x10" identifier | number_literal)) ;) (goto_statement "goto joined_r0x000ae874;" goto statement_identifier ;) })) (expression_statement "*pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;" (assignment_expression "*pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10" (pointer_expression "*pbVar11" * identifier) = (binary_expression "bVar1 | (char)uVar3 - 2U | 0x10" (binary_expression "bVar1 | (char)uVar3 - 2U" identifier | (binary_expression "(char)uVar3 - 2U" (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier) - number_literal)) | number_literal)) ;) (expression_statement "pbVar4 = pbVar11 + 3;" (assignment_expression "pbVar4 = pbVar11 + 3" identifier = (binary_expression "pbVar11 + 3" identifier + number_literal)) ;) (expression_statement "pbVar11[1] = (char)uVar17 * '\x04';" (assignment_expression "pbVar11[1] = (char)uVar17 * '\x04'" (subscript_expression "pbVar11[1]" identifier [ number_literal ]) = (binary_expression "(char)uVar17 * '\x04'" (cast_expression "(char)uVar17" ( (type_descriptor "char" primitive_type) ) identifier) * (char_literal "'\x04'" ' escape_sequence '))) ;) (expression_statement "pbVar11[2] = (byte)(uVar17 >> 6);" (assignment_expression "pbVar11[2] = (byte)(uVar17 >> 6)" (subscript_expression "pbVar11[2]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 >> 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 >> 6)" ( (binary_expression "uVar17 >> 6" identifier >> number_literal) )))) ;) })))) (labeled_statement "LAB_000ae83c:\n    pbVar6 = pbVar5;" statement_identifier : (expression_statement "pbVar6 = pbVar5;" (assignment_expression "pbVar6 = pbVar5" identifier = identifier) ;)) }) while (parenthesized_expression "(pbVar5 < param_1 + param_2 + -0xd)" ( (binary_expression "pbVar5 < param_1 + param_2 + -0xd" identifier < (binary_expression "param_1 + param_2 + -0xd" (binary_expression "param_1 + param_2" identifier + identifier) + number_literal)) )) ;) (expression_statement "iVar9 = (int)pbVar4 - (int)param_3;" (assignment_expression "iVar9 = (int)pbVar4 - (int)param_3" identifier = (binary_expression "(int)pbVar4 - (int)param_3" (cast_expression "(int)pbVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (labeled_statement "LAB_000ae5b8:\n  *param_4 = iVar9;" statement_identifier : (expression_statement "*param_4 = iVar9;" (assignment_expression "*param_4 = iVar9" (pointer_expression "*param_4" * identifier) = identifier) ;)) (return_statement "return (int)pbVar8 - (int)pbVar5;" return (binary_expression "(int)pbVar8 - (int)pbVar5" (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })))
(translation_unit "uint do_compress(uint8_t *in,uint in_len,uint8_t *out,uint *out_len,void *wrkmem)\n\n{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  char cVar8;\n  int iVar7;\n  byte *pbVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  uint uVar13;\n  byte *pbVar14;\n  uint uVar15;\n  int *piVar16;\n  uint uVar17;\n  uint uVar18;\n  \n  pbVar9 = in + in_len;\n  pbVar6 = in + 4;\n  pbVar5 = in;\n  pbVar4 = out;\n  do {\n    while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)((int)wrkmem + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((in <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (in + (in_len - 0xd) <= pbVar10) {\n        uVar3 = (int)pbVar4 - (int)out;\n        goto LAB_000ae5b8;\n      }\n    }\n    if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)((int)wrkmem + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((in <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }\nLAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;\n    bVar1 = pbVar10[1];\nLAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;\n    *piVar16 = (int)pbVar6;\n    pbVar12 = pbVar5;\n    pbVar11 = pbVar4;\n    if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }\n    pbVar5 = pbVar6 + 4;\n    if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar8 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar8 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar7 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }\n    if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    pbVar5 = pbVar6 + 9;\n    if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;\n    if ((pbVar5 < pbVar9) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar9 == pbVar5) {\n          uVar3 = (int)pbVar9 - (int)pbVar12;\n          pbVar5 = pbVar9;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }\n    uVar3 = (int)pbVar5 - (int)pbVar12;\njoined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }\nLAB_000ae83c:\n    pbVar6 = pbVar5;\n  } while (pbVar5 < in + (in_len - 0xd));\n  uVar3 = (int)pbVar4 - (int)out;\nLAB_000ae5b8:\n  *out_len = uVar3;\n  return (int)pbVar9 - (int)pbVar5;\n}\n\n" (function_definition "uint do_compress(uint8_t *in,uint in_len,uint8_t *out,uint *out_len,void *wrkmem)\n\n{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  char cVar8;\n  int iVar7;\n  byte *pbVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  uint uVar13;\n  byte *pbVar14;\n  uint uVar15;\n  int *piVar16;\n  uint uVar17;\n  uint uVar18;\n  \n  pbVar9 = in + in_len;\n  pbVar6 = in + 4;\n  pbVar5 = in;\n  pbVar4 = out;\n  do {\n    while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)((int)wrkmem + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((in <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (in + (in_len - 0xd) <= pbVar10) {\n        uVar3 = (int)pbVar4 - (int)out;\n        goto LAB_000ae5b8;\n      }\n    }\n    if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)((int)wrkmem + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((in <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }\nLAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;\n    bVar1 = pbVar10[1];\nLAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;\n    *piVar16 = (int)pbVar6;\n    pbVar12 = pbVar5;\n    pbVar11 = pbVar4;\n    if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }\n    pbVar5 = pbVar6 + 4;\n    if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar8 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar8 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar7 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }\n    if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    pbVar5 = pbVar6 + 9;\n    if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;\n    if ((pbVar5 < pbVar9) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar9 == pbVar5) {\n          uVar3 = (int)pbVar9 - (int)pbVar12;\n          pbVar5 = pbVar9;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }\n    uVar3 = (int)pbVar5 - (int)pbVar12;\njoined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }\nLAB_000ae83c:\n    pbVar6 = pbVar5;\n  } while (pbVar5 < in + (in_len - 0xd));\n  uVar3 = (int)pbVar4 - (int)out;\nLAB_000ae5b8:\n  *out_len = uVar3;\n  return (int)pbVar9 - (int)pbVar5;\n}" type_identifier (function_declarator "do_compress(uint8_t *in,uint in_len,uint8_t *out,uint *out_len,void *wrkmem)" identifier (parameter_list "(uint8_t *in,uint in_len,uint8_t *out,uint *out_len,void *wrkmem)" ( (parameter_declaration "uint8_t *in" primitive_type (pointer_declarator "*in" * identifier)) , (parameter_declaration "uint in_len" type_identifier identifier) , (parameter_declaration "uint8_t *out" primitive_type (pointer_declarator "*out" * identifier)) , (parameter_declaration "uint *out_len" type_identifier (pointer_declarator "*out_len" * identifier)) , (parameter_declaration "void *wrkmem" primitive_type (pointer_declarator "*wrkmem" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  char cVar8;\n  int iVar7;\n  byte *pbVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  uint uVar13;\n  byte *pbVar14;\n  uint uVar15;\n  int *piVar16;\n  uint uVar17;\n  uint uVar18;\n  \n  pbVar9 = in + in_len;\n  pbVar6 = in + 4;\n  pbVar5 = in;\n  pbVar4 = out;\n  do {\n    while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)((int)wrkmem + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((in <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (in + (in_len - 0xd) <= pbVar10) {\n        uVar3 = (int)pbVar4 - (int)out;\n        goto LAB_000ae5b8;\n      }\n    }\n    if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)((int)wrkmem + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((in <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }\nLAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;\n    bVar1 = pbVar10[1];\nLAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;\n    *piVar16 = (int)pbVar6;\n    pbVar12 = pbVar5;\n    pbVar11 = pbVar4;\n    if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }\n    pbVar5 = pbVar6 + 4;\n    if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar8 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar8 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar7 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }\n    if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    pbVar5 = pbVar6 + 9;\n    if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;\n    if ((pbVar5 < pbVar9) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar9 == pbVar5) {\n          uVar3 = (int)pbVar9 - (int)pbVar12;\n          pbVar5 = pbVar9;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }\n    uVar3 = (int)pbVar5 - (int)pbVar12;\njoined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }\nLAB_000ae83c:\n    pbVar6 = pbVar5;\n  } while (pbVar5 < in + (in_len - 0xd));\n  uVar3 = (int)pbVar4 - (int)out;\nLAB_000ae5b8:\n  *out_len = uVar3;\n  return (int)pbVar9 - (int)pbVar5;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "char cVar8;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (expression_statement "pbVar9 = in + in_len;" (assignment_expression "pbVar9 = in + in_len" identifier = (binary_expression "in + in_len" identifier + identifier)) ;) (expression_statement "pbVar6 = in + 4;" (assignment_expression "pbVar6 = in + 4" identifier = (binary_expression "in + 4" identifier + number_literal)) ;) (expression_statement "pbVar5 = in;" (assignment_expression "pbVar5 = in" identifier = identifier) ;) (expression_statement "pbVar4 = out;" (assignment_expression "pbVar4 = out" identifier = identifier) ;) (do_statement "do {\n    while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)((int)wrkmem + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((in <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (in + (in_len - 0xd) <= pbVar10) {\n        uVar3 = (int)pbVar4 - (int)out;\n        goto LAB_000ae5b8;\n      }\n    }\n    if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)((int)wrkmem + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((in <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }\nLAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;\n    bVar1 = pbVar10[1];\nLAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;\n    *piVar16 = (int)pbVar6;\n    pbVar12 = pbVar5;\n    pbVar11 = pbVar4;\n    if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }\n    pbVar5 = pbVar6 + 4;\n    if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar8 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar8 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar7 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }\n    if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    pbVar5 = pbVar6 + 9;\n    if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;\n    if ((pbVar5 < pbVar9) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar9 == pbVar5) {\n          uVar3 = (int)pbVar9 - (int)pbVar12;\n          pbVar5 = pbVar9;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }\n    uVar3 = (int)pbVar5 - (int)pbVar12;\njoined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }\nLAB_000ae83c:\n    pbVar6 = pbVar5;\n  } while (pbVar5 < in + (in_len - 0xd));" do (compound_statement "{\n    while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)((int)wrkmem + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((in <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (in + (in_len - 0xd) <= pbVar10) {\n        uVar3 = (int)pbVar4 - (int)out;\n        goto LAB_000ae5b8;\n      }\n    }\n    if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)((int)wrkmem + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((in <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }\nLAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;\n    bVar1 = pbVar10[1];\nLAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;\n    *piVar16 = (int)pbVar6;\n    pbVar12 = pbVar5;\n    pbVar11 = pbVar4;\n    if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }\n    pbVar5 = pbVar6 + 4;\n    if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar8 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar8 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar7 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }\n    if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    pbVar5 = pbVar6 + 9;\n    if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;\n    if ((pbVar5 < pbVar9) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar9 == pbVar5) {\n          uVar3 = (int)pbVar9 - (int)pbVar12;\n          pbVar5 = pbVar9;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }\n    uVar3 = (int)pbVar5 - (int)pbVar12;\njoined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }\nLAB_000ae83c:\n    pbVar6 = pbVar5;\n  }" { (while_statement "while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)((int)wrkmem + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((in <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (in + (in_len - 0xd) <= pbVar10) {\n        uVar3 = (int)pbVar4 - (int)out;\n        goto LAB_000ae5b8;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)((int)wrkmem + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((in <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (in + (in_len - 0xd) <= pbVar10) {\n        uVar3 = (int)pbVar4 - (int)out;\n        goto LAB_000ae5b8;\n      }\n    }" { (expression_statement "uVar18 = (uint)pbVar6[3];" (assignment_expression "uVar18 = (uint)pbVar6[3]" identifier = (cast_expression "(uint)pbVar6[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar15 = (uint)*pbVar6;" (assignment_expression "uVar15 = (uint)*pbVar6" identifier = (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;" (assignment_expression "uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5" identifier = (binary_expression "(((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5" (binary_expression "(((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21" (parenthesized_expression "(((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15)" ( (binary_expression "((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15" (binary_expression "((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5" (parenthesized_expression "((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1])" ( (binary_expression "(uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]" (binary_expression "(uVar18 << 6 ^ (uint)pbVar6[2]) << 5" (parenthesized_expression "(uVar18 << 6 ^ (uint)pbVar6[2])" ( (binary_expression "uVar18 << 6 ^ (uint)pbVar6[2]" (binary_expression "uVar18 << 6" identifier << number_literal) ^ (cast_expression "(uint)pbVar6[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[2]" identifier [ number_literal ]))) )) << number_literal) ^ (cast_expression "(uint)pbVar6[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[1]" identifier [ number_literal ]))) )) << number_literal) ^ identifier) )) * number_literal) >> number_literal)) ;) (expression_statement "piVar16 = (int *)((int)wrkmem + (uVar3 & 0x7fff) * 4);" (assignment_expression "piVar16 = (int *)((int)wrkmem + (uVar3 & 0x7fff) * 4)" identifier = (cast_expression "(int *)((int)wrkmem + (uVar3 & 0x7fff) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)wrkmem + (uVar3 & 0x7fff) * 4)" ( (binary_expression "(int)wrkmem + (uVar3 & 0x7fff) * 4" (cast_expression "(int)wrkmem" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uVar3 & 0x7fff) * 4" (parenthesized_expression "(uVar3 & 0x7fff)" ( (binary_expression "uVar3 & 0x7fff" identifier & number_literal) )) * number_literal)) )))) ;) (expression_statement "uVar13 = (int)pbVar6 - *piVar16;" (assignment_expression "uVar13 = (int)pbVar6 - *piVar16" identifier = (binary_expression "(int)pbVar6 - *piVar16" (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (pointer_expression "*piVar16" * identifier))) ;) (expression_statement "pbVar10 = pbVar6 + -uVar13;" (assignment_expression "pbVar10 = pbVar6 + -uVar13" identifier = (binary_expression "pbVar6 + -uVar13" identifier + (unary_expression "-uVar13" - identifier))) ;) (expression_statement "uVar17 = uVar13 - 1;" (assignment_expression "uVar17 = uVar13 - 1" identifier = (binary_expression "uVar13 - 1" identifier - number_literal)) ;) (if_statement "if ((in <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;" if (parenthesized_expression "((in <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff))" ( (binary_expression "(in <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)" (parenthesized_expression "(in <= pbVar10)" ( (binary_expression "in <= pbVar10" identifier <= identifier) )) && (parenthesized_expression "(bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)" ( (comma_expression "bVar2 = uVar13 < 0x801, uVar17 < 0xbfff" (assignment_expression "bVar2 = uVar13 < 0x801" identifier = (binary_expression "uVar13 < 0x801" identifier < number_literal)) , (binary_expression "uVar17 < 0xbfff" identifier < number_literal)) ))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;" statement_identifier : (expression_statement "pbVar10 = pbVar6 + 1;" (assignment_expression "pbVar10 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;)) (expression_statement "*piVar16 = (int)pbVar6;" (assignment_expression "*piVar16 = (int)pbVar6" (pointer_expression "*piVar16" * identifier) = (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (labeled_statement "joined_r0x000ae69c:\n      pbVar6 = pbVar10;" statement_identifier : (expression_statement "pbVar6 = pbVar10;" (assignment_expression "pbVar6 = pbVar10" identifier = identifier) ;)) (if_statement "if (in + (in_len - 0xd) <= pbVar10) {\n        uVar3 = (int)pbVar4 - (int)out;\n        goto LAB_000ae5b8;\n      }" if (parenthesized_expression "(in + (in_len - 0xd) <= pbVar10)" ( (binary_expression "in + (in_len - 0xd) <= pbVar10" (binary_expression "in + (in_len - 0xd)" identifier + (parenthesized_expression "(in_len - 0xd)" ( (binary_expression "in_len - 0xd" identifier - number_literal) ))) <= identifier) )) (compound_statement "{\n        uVar3 = (int)pbVar4 - (int)out;\n        goto LAB_000ae5b8;\n      }" { (expression_statement "uVar3 = (int)pbVar4 - (int)out;" (assignment_expression "uVar3 = (int)pbVar4 - (int)out" identifier = (binary_expression "(int)pbVar4 - (int)out" (cast_expression "(int)pbVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)out" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_000ae5b8;" goto statement_identifier ;) })) })) (if_statement "if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)((int)wrkmem + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((in <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }" if (parenthesized_expression "((!bVar2) && (pbVar10[3] != uVar18))" ( (binary_expression "(!bVar2) && (pbVar10[3] != uVar18)" (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) && (parenthesized_expression "(pbVar10[3] != uVar18)" ( (binary_expression "pbVar10[3] != uVar18" (subscript_expression "pbVar10[3]" identifier [ number_literal ]) != identifier) ))) )) (compound_statement "{\n      piVar16 = (int *)((int)wrkmem + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((in <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }" { (expression_statement "piVar16 = (int *)((int)wrkmem + (uVar3 & 0x7ff ^ 0x401f) * 4);" (assignment_expression "piVar16 = (int *)((int)wrkmem + (uVar3 & 0x7ff ^ 0x401f) * 4)" identifier = (cast_expression "(int *)((int)wrkmem + (uVar3 & 0x7ff ^ 0x401f) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)wrkmem + (uVar3 & 0x7ff ^ 0x401f) * 4)" ( (binary_expression "(int)wrkmem + (uVar3 & 0x7ff ^ 0x401f) * 4" (cast_expression "(int)wrkmem" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uVar3 & 0x7ff ^ 0x401f) * 4" (parenthesized_expression "(uVar3 & 0x7ff ^ 0x401f)" ( (binary_expression "uVar3 & 0x7ff ^ 0x401f" (binary_expression "uVar3 & 0x7ff" identifier & number_literal) ^ number_literal) )) * number_literal)) )))) ;) (expression_statement "uVar13 = (int)pbVar6 - *piVar16;" (assignment_expression "uVar13 = (int)pbVar6 - *piVar16" identifier = (binary_expression "(int)pbVar6 - *piVar16" (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (pointer_expression "*piVar16" * identifier))) ;) (expression_statement "pbVar10 = pbVar6 + -uVar13;" (assignment_expression "pbVar10 = pbVar6 + -uVar13" identifier = (binary_expression "pbVar6 + -uVar13" identifier + (unary_expression "-uVar13" - identifier))) ;) (expression_statement "uVar17 = uVar13 - 1;" (assignment_expression "uVar17 = uVar13 - 1" identifier = (binary_expression "uVar13 - 1" identifier - number_literal)) ;) (if_statement "if ((in <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }" if (parenthesized_expression "((in <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff))" ( (binary_expression "(in <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)" (parenthesized_expression "(in <= pbVar10)" ( (binary_expression "in <= pbVar10" identifier <= identifier) )) && (parenthesized_expression "(bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)" ( (comma_expression "bVar2 = uVar13 < 0x801, uVar17 < 0xbfff" (assignment_expression "bVar2 = uVar13 < 0x801" identifier = (binary_expression "uVar13 < 0x801" identifier < number_literal)) , (binary_expression "uVar17 < 0xbfff" identifier < number_literal)) ))) )) (compound_statement "{\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }" { (if_statement "if (bVar2) goto LAB_000ae5f4;" if (parenthesized_expression "(bVar2)" ( identifier )) (goto_statement "goto LAB_000ae5f4;" goto statement_identifier ;)) (if_statement "if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;" if (parenthesized_expression "((pbVar10[3] != uVar18) || (*pbVar10 != uVar15))" ( (binary_expression "(pbVar10[3] != uVar18) || (*pbVar10 != uVar15)" (parenthesized_expression "(pbVar10[3] != uVar18)" ( (binary_expression "pbVar10[3] != uVar18" (subscript_expression "pbVar10[3]" identifier [ number_literal ]) != identifier) )) || (parenthesized_expression "(*pbVar10 != uVar15)" ( (binary_expression "*pbVar10 != uVar15" (pointer_expression "*pbVar10" * identifier) != identifier) ))) )) (goto_statement "goto LAB_000ae5a0;" goto statement_identifier ;)) (expression_statement "bVar1 = pbVar10[1];" (assignment_expression "bVar1 = pbVar10[1]" identifier = (subscript_expression "pbVar10[1]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_000ae604;" goto statement_identifier ;) })) (goto_statement "goto LAB_000ae5a0;" goto statement_identifier ;) })) (labeled_statement "LAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;" statement_identifier : (if_statement "if (*pbVar10 != uVar15) goto LAB_000ae5a0;" if (parenthesized_expression "(*pbVar10 != uVar15)" ( (binary_expression "*pbVar10 != uVar15" (pointer_expression "*pbVar10" * identifier) != identifier) )) (goto_statement "goto LAB_000ae5a0;" goto statement_identifier ;))) (expression_statement "bVar1 = pbVar10[1];" (assignment_expression "bVar1 = pbVar10[1]" identifier = (subscript_expression "pbVar10[1]" identifier [ number_literal ])) ;) (labeled_statement "LAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;" statement_identifier : (if_statement "if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;" if (parenthesized_expression "(((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))" ( (binary_expression "((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2])" (parenthesized_expression "((uint)bVar1 != (uint)pbVar6[1])" ( (binary_expression "(uint)bVar1 != (uint)pbVar6[1]" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) != (cast_expression "(uint)pbVar6[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[1]" identifier [ number_literal ]))) )) || (parenthesized_expression "((uint)pbVar10[2] != (uint)pbVar6[2])" ( (binary_expression "(uint)pbVar10[2] != (uint)pbVar6[2]" (cast_expression "(uint)pbVar10[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar10[2]" identifier [ number_literal ])) != (cast_expression "(uint)pbVar6[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[2]" identifier [ number_literal ]))) ))) )) (goto_statement "goto LAB_000ae5a0;" goto statement_identifier ;))) (expression_statement "*piVar16 = (int)pbVar6;" (assignment_expression "*piVar16 = (int)pbVar6" (pointer_expression "*piVar16" * identifier) = (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pbVar12 = pbVar5;" (assignment_expression "pbVar12 = pbVar5" identifier = identifier) ;) (expression_statement "pbVar11 = pbVar4;" (assignment_expression "pbVar11 = pbVar4" identifier = identifier) ;) (if_statement "if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }" if (parenthesized_expression "(pbVar6 != pbVar5)" ( (binary_expression "pbVar6 != pbVar5" identifier != identifier) )) (compound_statement "{\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }" { (expression_statement "uVar3 = (int)pbVar6 - (int)pbVar5;" (assignment_expression "uVar3 = (int)pbVar6 - (int)pbVar5" identifier = (binary_expression "(int)pbVar6 - (int)pbVar5" (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }" if (parenthesized_expression "(uVar3 < 4)" ( (binary_expression "uVar3 < 4" identifier < number_literal) )) (compound_statement "{\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }" { (expression_statement "pbVar4[-2] = (byte)uVar3 | pbVar4[-2];" (assignment_expression "pbVar4[-2] = (byte)uVar3 | pbVar4[-2]" (subscript_expression "pbVar4[-2]" identifier [ number_literal ]) = (binary_expression "(byte)uVar3 | pbVar4[-2]" (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) | (subscript_expression "pbVar4[-2]" identifier [ number_literal ]))) ;) (expression_statement "pbVar14 = pbVar4;" (assignment_expression "pbVar14 = pbVar4" identifier = identifier) ;) }) (else_clause "else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }" else (compound_statement "{\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }" { (expression_statement "pbVar14 = pbVar4 + 1;" (assignment_expression "pbVar14 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (if_statement "if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }" if (parenthesized_expression "(uVar3 < 0x13)" ( (binary_expression "uVar3 < 0x13" identifier < number_literal) )) (compound_statement "{\n          *pbVar4 = (byte)uVar3 - 3;\n        }" { (expression_statement "*pbVar4 = (byte)uVar3 - 3;" (assignment_expression "*pbVar4 = (byte)uVar3 - 3" (pointer_expression "*pbVar4" * identifier) = (binary_expression "(byte)uVar3 - 3" (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) - number_literal)) ;) }) (else_clause "else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }" else (compound_statement "{\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }" { (expression_statement "uVar15 = uVar3 - 0x12;" (assignment_expression "uVar15 = uVar3 - 0x12" identifier = (binary_expression "uVar3 - 0x12" identifier - number_literal)) ;) (expression_statement "*pbVar4 = 0;" (assignment_expression "*pbVar4 = 0" (pointer_expression "*pbVar4" * identifier) = number_literal) ;) (expression_statement "pbVar12 = pbVar4 + 2;" (assignment_expression "pbVar12 = pbVar4 + 2" identifier = (binary_expression "pbVar4 + 2" identifier + number_literal)) ;) (expression_statement "pbVar11 = pbVar14;" (assignment_expression "pbVar11 = pbVar14" identifier = identifier) ;) (if_statement "if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }" if (parenthesized_expression "(0xff < uVar15)" ( (binary_expression "0xff < uVar15" number_literal < identifier) )) (compound_statement "{\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }" { (expression_statement "pbVar4[1] = 0;" (assignment_expression "pbVar4[1] = 0" (subscript_expression "pbVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar4 = pbVar14;" (assignment_expression "pbVar4 = pbVar14" identifier = identifier) ;) (expression_statement "pbVar11 = pbVar12;" (assignment_expression "pbVar11 = pbVar12" identifier = identifier) ;) (for_statement "for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }" for ( (assignment_expression "uVar15 = uVar3 - 0x111" identifier = (binary_expression "uVar3 - 0x111" identifier - number_literal)) ; (binary_expression "0xff < uVar15" number_literal < identifier) ; (assignment_expression "uVar15 = uVar15 - 0xff" identifier = (binary_expression "uVar15 - 0xff" identifier - number_literal)) ) (compound_statement "{\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }" { (expression_statement "*pbVar11 = 0;" (assignment_expression "*pbVar11 = 0" (pointer_expression "*pbVar11" * identifier) = number_literal) ;) (expression_statement "pbVar4 = pbVar11;" (assignment_expression "pbVar4 = pbVar11" identifier = identifier) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) })) })) (expression_statement "pbVar14 = pbVar4 + 2;" (assignment_expression "pbVar14 = pbVar4 + 2" identifier = (binary_expression "pbVar4 + 2" identifier + number_literal)) ;) (expression_statement "*pbVar11 = (byte)uVar15;" (assignment_expression "*pbVar11 = (byte)uVar15" (pointer_expression "*pbVar11" * identifier) = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) }))) (expression_statement "pbVar11 = pbVar14 + uVar3;" (assignment_expression "pbVar11 = pbVar14 + uVar3" identifier = (binary_expression "pbVar14 + uVar3" identifier + identifier)) ;) (do_statement "do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);" do (compound_statement "{\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      }" { (expression_statement "pbVar4 = pbVar14 + 1;" (assignment_expression "pbVar4 = pbVar14 + 1" identifier = (binary_expression "pbVar14 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar14 = *pbVar5;" (assignment_expression "*pbVar14 = *pbVar5" (pointer_expression "*pbVar14" * identifier) = (pointer_expression "*pbVar5" * identifier)) ;) (expression_statement "pbVar14 = pbVar4;" (assignment_expression "pbVar14 = pbVar4" identifier = identifier) ;) (expression_statement "pbVar12 = pbVar6;" (assignment_expression "pbVar12 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar4 != pbVar11)" ( (binary_expression "pbVar4 != pbVar11" identifier != identifier) )) ;) })) (expression_statement "pbVar5 = pbVar6 + 4;" (assignment_expression "pbVar5 = pbVar6 + 4" identifier = (binary_expression "pbVar6 + 4" identifier + number_literal)) ;) (if_statement "if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar8 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar8 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar7 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }" if (parenthesized_expression "(pbVar10[3] != pbVar6[3])" ( (binary_expression "pbVar10[3] != pbVar6[3]" (subscript_expression "pbVar10[3]" identifier [ number_literal ]) != (subscript_expression "pbVar6[3]" identifier [ number_literal ])) )) (compound_statement "{\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar8 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar8 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar7 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }" { (labeled_statement "LAB_000ae668:\n      pbVar5 = pbVar5 + -1;" statement_identifier : (expression_statement "pbVar5 = pbVar5 + -1;" (assignment_expression "pbVar5 = pbVar5 + -1" identifier = (binary_expression "pbVar5 + -1" identifier + number_literal)) ;)) (expression_statement "cVar8 = (char)((int)pbVar5 - (int)pbVar12);" (assignment_expression "cVar8 = (char)((int)pbVar5 - (int)pbVar12)" identifier = (cast_expression "(char)((int)pbVar5 - (int)pbVar12)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((int)pbVar5 - (int)pbVar12)" ( (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar8 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar8 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (compound_statement "{\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar8 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar8 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }" { (labeled_statement "LAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar8 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar8 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }" statement_identifier : (if_statement "if (uVar13 < 0x4001) {\n          *pbVar11 = cVar8 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar8 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }" if (parenthesized_expression "(uVar13 < 0x4001)" ( (binary_expression "uVar13 < 0x4001" identifier < number_literal) )) (compound_statement "{\n          *pbVar11 = cVar8 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }" { (expression_statement "*pbVar11 = cVar8 - 2U | 0x20;" (assignment_expression "*pbVar11 = cVar8 - 2U | 0x20" (pointer_expression "*pbVar11" * identifier) = (binary_expression "cVar8 - 2U | 0x20" (binary_expression "cVar8 - 2U" identifier - number_literal) | number_literal)) ;) (expression_statement "pbVar4 = pbVar11 + 3;" (assignment_expression "pbVar4 = pbVar11 + 3" identifier = (binary_expression "pbVar11 + 3" identifier + number_literal)) ;) (expression_statement "pbVar11[1] = (byte)(uVar17 << 2);" (assignment_expression "pbVar11[1] = (byte)(uVar17 << 2)" (subscript_expression "pbVar11[1]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 << 2)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 << 2)" ( (binary_expression "uVar17 << 2" identifier << number_literal) )))) ;) (expression_statement "pbVar11[2] = (byte)(uVar17 >> 6);" (assignment_expression "pbVar11[2] = (byte)(uVar17 >> 6)" (subscript_expression "pbVar11[2]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 >> 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 >> 6)" ( (binary_expression "uVar17 >> 6" identifier >> number_literal) )))) ;) }) (else_clause "else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar8 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }" else (compound_statement "{\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar8 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }" { (expression_statement "uVar13 = uVar13 - 0x4000;" (assignment_expression "uVar13 = uVar13 - 0x4000" identifier = (binary_expression "uVar13 - 0x4000" identifier - number_literal)) ;) (expression_statement "*pbVar11 = cVar8 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;" (assignment_expression "*pbVar11 = cVar8 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10" (pointer_expression "*pbVar11" * identifier) = (binary_expression "cVar8 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10" (binary_expression "cVar8 - 2U | (byte)(uVar13 >> 0xb) & 8" (binary_expression "cVar8 - 2U" identifier - number_literal) | (binary_expression "(byte)(uVar13 >> 0xb) & 8" (call_expression "(byte)(uVar13 >> 0xb)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar13 >> 0xb)" ( (binary_expression "uVar13 >> 0xb" identifier >> number_literal) ))) & number_literal)) | number_literal)) ;) (expression_statement "pbVar4 = pbVar11 + 3;" (assignment_expression "pbVar4 = pbVar11 + 3" identifier = (binary_expression "pbVar11 + 3" identifier + number_literal)) ;) (expression_statement "pbVar11[1] = (char)uVar13 * '\x04';" (assignment_expression "pbVar11[1] = (char)uVar13 * '\x04'" (subscript_expression "pbVar11[1]" identifier [ number_literal ]) = (binary_expression "(char)uVar13 * '\x04'" (cast_expression "(char)uVar13" ( (type_descriptor "char" primitive_type) ) identifier) * (char_literal "'\x04'" ' escape_sequence '))) ;) (expression_statement "pbVar11[2] = (byte)(uVar13 >> 6);" (assignment_expression "pbVar11[2] = (byte)(uVar13 >> 6)" (subscript_expression "pbVar11[2]" identifier [ number_literal ]) = (call_expression "(byte)(uVar13 >> 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar13 >> 6)" ( (binary_expression "uVar13 >> 6" identifier >> number_literal) )))) ;) })))) (goto_statement "goto LAB_000ae83c;" goto statement_identifier ;) })) (expression_statement "iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;" (assignment_expression "iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" identifier = (binary_expression "((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (parenthesized_expression "((int)pbVar5 - (int)pbVar12 & 0xffU)" ( (binary_expression "(int)pbVar5 - (int)pbVar12 & 0xffU" (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )) - number_literal)) ;) (labeled_statement "LAB_000ae67c:\n      *pbVar11 = (byte)(iVar7 << 5) | (byte)((uVar17 & 7) << 2);" statement_identifier : (expression_statement "*pbVar11 = (byte)(iVar7 << 5) | (byte)((uVar17 & 7) << 2);" (assignment_expression "*pbVar11 = (byte)(iVar7 << 5) | (byte)((uVar17 & 7) << 2)" (pointer_expression "*pbVar11" * identifier) = (binary_expression "(byte)(iVar7 << 5) | (byte)((uVar17 & 7) << 2)" (call_expression "(byte)(iVar7 << 5)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(iVar7 << 5)" ( (binary_expression "iVar7 << 5" identifier << number_literal) ))) | (call_expression "(byte)((uVar17 & 7) << 2)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar17 & 7) << 2)" ( (binary_expression "(uVar17 & 7) << 2" (parenthesized_expression "(uVar17 & 7)" ( (binary_expression "uVar17 & 7" identifier & number_literal) )) << number_literal) ))))) ;)) (expression_statement "pbVar4 = pbVar11 + 2;" (assignment_expression "pbVar4 = pbVar11 + 2" identifier = (binary_expression "pbVar11 + 2" identifier + number_literal)) ;) (expression_statement "pbVar11[1] = (byte)(uVar17 >> 3);" (assignment_expression "pbVar11[1] = (byte)(uVar17 >> 3)" (subscript_expression "pbVar11[1]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 >> 3)" ( (binary_expression "uVar17 >> 3" identifier >> number_literal) )))) ;) (expression_statement "pbVar10 = pbVar5;" (assignment_expression "pbVar10 = pbVar5" identifier = identifier) ;) (goto_statement "goto joined_r0x000ae69c;" goto statement_identifier ;) })) (if_statement "if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" if (parenthesized_expression "(pbVar10[4] != pbVar6[4])" ( (binary_expression "pbVar10[4] != pbVar6[4]" (subscript_expression "pbVar10[4]" identifier [ number_literal ]) != (subscript_expression "pbVar6[4]" identifier [ number_literal ])) )) (compound_statement "{\n      pbVar5 = pbVar6 + 4;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" { (expression_statement "pbVar5 = pbVar6 + 4;" (assignment_expression "pbVar5 = pbVar6 + 4" identifier = (binary_expression "pbVar6 + 4" identifier + number_literal)) ;) (expression_statement "cVar8 = (char)((int)pbVar5 - (int)pbVar12);" (assignment_expression "cVar8 = (char)((int)pbVar5 - (int)pbVar12)" identifier = (cast_expression "(char)((int)pbVar5 - (int)pbVar12)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((int)pbVar5 - (int)pbVar12)" ( (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (!bVar2) goto LAB_000ae900;" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (goto_statement "goto LAB_000ae900;" goto statement_identifier ;)) (expression_statement "iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;" (assignment_expression "iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" identifier = (binary_expression "((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (parenthesized_expression "((int)pbVar5 - (int)pbVar12 & 0xffU)" ( (binary_expression "(int)pbVar5 - (int)pbVar12 & 0xffU" (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )) - number_literal)) ;) (goto_statement "goto LAB_000ae67c;" goto statement_identifier ;) })) (if_statement "if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" if (parenthesized_expression "(pbVar10[5] != pbVar6[5])" ( (binary_expression "pbVar10[5] != pbVar6[5]" (subscript_expression "pbVar10[5]" identifier [ number_literal ]) != (subscript_expression "pbVar6[5]" identifier [ number_literal ])) )) (compound_statement "{\n      pbVar5 = pbVar6 + 5;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" { (expression_statement "pbVar5 = pbVar6 + 5;" (assignment_expression "pbVar5 = pbVar6 + 5" identifier = (binary_expression "pbVar6 + 5" identifier + number_literal)) ;) (expression_statement "cVar8 = (char)((int)pbVar5 - (int)pbVar12);" (assignment_expression "cVar8 = (char)((int)pbVar5 - (int)pbVar12)" identifier = (cast_expression "(char)((int)pbVar5 - (int)pbVar12)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((int)pbVar5 - (int)pbVar12)" ( (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (!bVar2) goto LAB_000ae900;" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (goto_statement "goto LAB_000ae900;" goto statement_identifier ;)) (expression_statement "iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;" (assignment_expression "iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" identifier = (binary_expression "((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (parenthesized_expression "((int)pbVar5 - (int)pbVar12 & 0xffU)" ( (binary_expression "(int)pbVar5 - (int)pbVar12 & 0xffU" (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )) - number_literal)) ;) (goto_statement "goto LAB_000ae67c;" goto statement_identifier ;) })) (if_statement "if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" if (parenthesized_expression "(pbVar10[6] != pbVar6[6])" ( (binary_expression "pbVar10[6] != pbVar6[6]" (subscript_expression "pbVar10[6]" identifier [ number_literal ]) != (subscript_expression "pbVar6[6]" identifier [ number_literal ])) )) (compound_statement "{\n      pbVar5 = pbVar6 + 6;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" { (expression_statement "pbVar5 = pbVar6 + 6;" (assignment_expression "pbVar5 = pbVar6 + 6" identifier = (binary_expression "pbVar6 + 6" identifier + number_literal)) ;) (expression_statement "cVar8 = (char)((int)pbVar5 - (int)pbVar12);" (assignment_expression "cVar8 = (char)((int)pbVar5 - (int)pbVar12)" identifier = (cast_expression "(char)((int)pbVar5 - (int)pbVar12)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((int)pbVar5 - (int)pbVar12)" ( (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (!bVar2) goto LAB_000ae900;" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (goto_statement "goto LAB_000ae900;" goto statement_identifier ;)) (expression_statement "iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;" (assignment_expression "iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" identifier = (binary_expression "((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (parenthesized_expression "((int)pbVar5 - (int)pbVar12 & 0xffU)" ( (binary_expression "(int)pbVar5 - (int)pbVar12 & 0xffU" (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )) - number_literal)) ;) (goto_statement "goto LAB_000ae67c;" goto statement_identifier ;) })) (if_statement "if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" if (parenthesized_expression "(pbVar10[7] != pbVar6[7])" ( (binary_expression "pbVar10[7] != pbVar6[7]" (subscript_expression "pbVar10[7]" identifier [ number_literal ]) != (subscript_expression "pbVar6[7]" identifier [ number_literal ])) )) (compound_statement "{\n      pbVar5 = pbVar6 + 7;\n      cVar8 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" { (expression_statement "pbVar5 = pbVar6 + 7;" (assignment_expression "pbVar5 = pbVar6 + 7" identifier = (binary_expression "pbVar6 + 7" identifier + number_literal)) ;) (expression_statement "cVar8 = (char)((int)pbVar5 - (int)pbVar12);" (assignment_expression "cVar8 = (char)((int)pbVar5 - (int)pbVar12)" identifier = (cast_expression "(char)((int)pbVar5 - (int)pbVar12)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((int)pbVar5 - (int)pbVar12)" ( (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (!bVar2) goto LAB_000ae900;" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (goto_statement "goto LAB_000ae900;" goto statement_identifier ;)) (expression_statement "iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;" (assignment_expression "iVar7 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" identifier = (binary_expression "((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (parenthesized_expression "((int)pbVar5 - (int)pbVar12 & 0xffU)" ( (binary_expression "(int)pbVar5 - (int)pbVar12 & 0xffU" (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )) - number_literal)) ;) (goto_statement "goto LAB_000ae67c;" goto statement_identifier ;) })) (expression_statement "pbVar5 = pbVar6 + 9;" (assignment_expression "pbVar5 = pbVar6 + 9" identifier = (binary_expression "pbVar6 + 9" identifier + number_literal)) ;) (if_statement "if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;" if (parenthesized_expression "(pbVar10[8] != pbVar6[8])" ( (binary_expression "pbVar10[8] != pbVar6[8]" (subscript_expression "pbVar10[8]" identifier [ number_literal ]) != (subscript_expression "pbVar6[8]" identifier [ number_literal ])) )) (goto_statement "goto LAB_000ae668;" goto statement_identifier ;)) (if_statement "if ((pbVar5 < pbVar9) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar9 == pbVar5) {\n          uVar3 = (int)pbVar9 - (int)pbVar12;\n          pbVar5 = pbVar9;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }" if (parenthesized_expression "((pbVar5 < pbVar9) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9]))" ( (binary_expression "(pbVar5 < pbVar9) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])" (parenthesized_expression "(pbVar5 < pbVar9)" ( (binary_expression "pbVar5 < pbVar9" identifier < identifier) )) && (parenthesized_expression "(pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])" ( (comma_expression "pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9]" (assignment_expression "pbVar4 = pbVar10 + 9" identifier = (binary_expression "pbVar10 + 9" identifier + number_literal)) , (binary_expression "pbVar6[9] == pbVar10[9]" (subscript_expression "pbVar6[9]" identifier [ number_literal ]) == (subscript_expression "pbVar10[9]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar9 == pbVar5) {\n          uVar3 = (int)pbVar9 - (int)pbVar12;\n          pbVar5 = pbVar9;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }" { (do_statement "do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar9 == pbVar5) {\n          uVar3 = (int)pbVar9 - (int)pbVar12;\n          pbVar5 = pbVar9;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);" do (compound_statement "{\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar9 == pbVar5) {\n          uVar3 = (int)pbVar9 - (int)pbVar12;\n          pbVar5 = pbVar9;\n          goto joined_r0x000ae8f0;\n        }\n      }" { (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar9 == pbVar5) {\n          uVar3 = (int)pbVar9 - (int)pbVar12;\n          pbVar5 = pbVar9;\n          goto joined_r0x000ae8f0;\n        }" if (parenthesized_expression "(pbVar9 == pbVar5)" ( (binary_expression "pbVar9 == pbVar5" identifier == identifier) )) (compound_statement "{\n          uVar3 = (int)pbVar9 - (int)pbVar12;\n          pbVar5 = pbVar9;\n          goto joined_r0x000ae8f0;\n        }" { (expression_statement "uVar3 = (int)pbVar9 - (int)pbVar12;" (assignment_expression "uVar3 = (int)pbVar9 - (int)pbVar12" identifier = (binary_expression "(int)pbVar9 - (int)pbVar12" (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pbVar5 = pbVar9;" (assignment_expression "pbVar5 = pbVar9" identifier = identifier) ;) (goto_statement "goto joined_r0x000ae8f0;" goto statement_identifier ;) })) }) while (parenthesized_expression "(*pbVar4 == *pbVar5)" ( (binary_expression "*pbVar4 == *pbVar5" (pointer_expression "*pbVar4" * identifier) == (pointer_expression "*pbVar5" * identifier)) )) ;) })) (expression_statement "uVar3 = (int)pbVar5 - (int)pbVar12;" (assignment_expression "uVar3 = (int)pbVar5 - (int)pbVar12" identifier = (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (labeled_statement "joined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }" statement_identifier : (if_statement "if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }" if (parenthesized_expression "(uVar13 < 0x4001)" ( (binary_expression "uVar13 < 0x4001" identifier < number_literal) )) (compound_statement "{\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }" { (if_statement "if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }" if (parenthesized_expression "(uVar3 < 0x22)" ( (binary_expression "uVar3 < 0x22" identifier < number_literal) )) (compound_statement "{\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }" { (expression_statement "*pbVar11 = (char)uVar3 - 2U | 0x20;" (assignment_expression "*pbVar11 = (char)uVar3 - 2U | 0x20" (pointer_expression "*pbVar11" * identifier) = (binary_expression "(char)uVar3 - 2U | 0x20" (binary_expression "(char)uVar3 - 2U" (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier) - number_literal) | number_literal)) ;) (expression_statement "pbVar4 = pbVar11 + 3;" (assignment_expression "pbVar4 = pbVar11 + 3" identifier = (binary_expression "pbVar11 + 3" identifier + number_literal)) ;) (expression_statement "pbVar11[1] = (byte)(uVar17 << 2);" (assignment_expression "pbVar11[1] = (byte)(uVar17 << 2)" (subscript_expression "pbVar11[1]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 << 2)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 << 2)" ( (binary_expression "uVar17 << 2" identifier << number_literal) )))) ;) (expression_statement "pbVar11[2] = (byte)(uVar17 >> 6);" (assignment_expression "pbVar11[2] = (byte)(uVar17 >> 6)" (subscript_expression "pbVar11[2]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 >> 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 >> 6)" ( (binary_expression "uVar17 >> 6" identifier >> number_literal) )))) ;) }) (else_clause "else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }" else (compound_statement "{\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }" { (expression_statement "uVar3 = uVar3 - 0x21;" (assignment_expression "uVar3 = uVar3 - 0x21" identifier = (binary_expression "uVar3 - 0x21" identifier - number_literal)) ;) (expression_statement "*pbVar11 = 0x20;" (assignment_expression "*pbVar11 = 0x20" (pointer_expression "*pbVar11" * identifier) = number_literal) ;) (labeled_statement "joined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }" statement_identifier : (for_statement "for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }" for ( ; (comma_expression "pbVar4 = pbVar11 + 1, 0xff < uVar3" (assignment_expression "pbVar4 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) , (binary_expression "0xff < uVar3" number_literal < identifier)) ; (assignment_expression "uVar3 = uVar3 - 0xff" identifier = (binary_expression "uVar3 - 0xff" identifier - number_literal)) ) (compound_statement "{\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }" { (expression_statement "*pbVar4 = 0;" (assignment_expression "*pbVar4 = 0" (pointer_expression "*pbVar4" * identifier) = number_literal) ;) (expression_statement "pbVar11 = pbVar4;" (assignment_expression "pbVar11 = pbVar4" identifier = identifier) ;) }))) (expression_statement "*pbVar4 = (byte)uVar3;" (assignment_expression "*pbVar4 = (byte)uVar3" (pointer_expression "*pbVar4" * identifier) = (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "pbVar4 = pbVar11 + 4;" (assignment_expression "pbVar4 = pbVar11 + 4" identifier = (binary_expression "pbVar11 + 4" identifier + number_literal)) ;) (expression_statement "pbVar11[2] = (byte)(uVar17 << 2);" (assignment_expression "pbVar11[2] = (byte)(uVar17 << 2)" (subscript_expression "pbVar11[2]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 << 2)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 << 2)" ( (binary_expression "uVar17 << 2" identifier << number_literal) )))) ;) (expression_statement "pbVar11[3] = (byte)(uVar17 >> 6);" (assignment_expression "pbVar11[3] = (byte)(uVar17 >> 6)" (subscript_expression "pbVar11[3]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 >> 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 >> 6)" ( (binary_expression "uVar17 >> 6" identifier >> number_literal) )))) ;) }))) }) (else_clause "else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }" else (compound_statement "{\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }" { (expression_statement "uVar17 = uVar13 - 0x4000;" (assignment_expression "uVar17 = uVar13 - 0x4000" identifier = (binary_expression "uVar13 - 0x4000" identifier - number_literal)) ;) (expression_statement "bVar1 = (byte)(uVar17 >> 0xb) & 8;" (assignment_expression "bVar1 = (byte)(uVar17 >> 0xb) & 8" identifier = (binary_expression "(byte)(uVar17 >> 0xb) & 8" (call_expression "(byte)(uVar17 >> 0xb)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 >> 0xb)" ( (binary_expression "uVar17 >> 0xb" identifier >> number_literal) ))) & number_literal)) ;) (if_statement "if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }" if (parenthesized_expression "(9 < uVar3)" ( (binary_expression "9 < uVar3" number_literal < identifier) )) (compound_statement "{\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }" { (expression_statement "uVar3 = uVar3 - 9;" (assignment_expression "uVar3 = uVar3 - 9" identifier = (binary_expression "uVar3 - 9" identifier - number_literal)) ;) (expression_statement "*pbVar11 = bVar1 | 0x10;" (assignment_expression "*pbVar11 = bVar1 | 0x10" (pointer_expression "*pbVar11" * identifier) = (binary_expression "bVar1 | 0x10" identifier | number_literal)) ;) (goto_statement "goto joined_r0x000ae874;" goto statement_identifier ;) })) (expression_statement "*pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;" (assignment_expression "*pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10" (pointer_expression "*pbVar11" * identifier) = (binary_expression "bVar1 | (char)uVar3 - 2U | 0x10" (binary_expression "bVar1 | (char)uVar3 - 2U" identifier | (binary_expression "(char)uVar3 - 2U" (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier) - number_literal)) | number_literal)) ;) (expression_statement "pbVar4 = pbVar11 + 3;" (assignment_expression "pbVar4 = pbVar11 + 3" identifier = (binary_expression "pbVar11 + 3" identifier + number_literal)) ;) (expression_statement "pbVar11[1] = (char)uVar17 * '\x04';" (assignment_expression "pbVar11[1] = (char)uVar17 * '\x04'" (subscript_expression "pbVar11[1]" identifier [ number_literal ]) = (binary_expression "(char)uVar17 * '\x04'" (cast_expression "(char)uVar17" ( (type_descriptor "char" primitive_type) ) identifier) * (char_literal "'\x04'" ' escape_sequence '))) ;) (expression_statement "pbVar11[2] = (byte)(uVar17 >> 6);" (assignment_expression "pbVar11[2] = (byte)(uVar17 >> 6)" (subscript_expression "pbVar11[2]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 >> 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 >> 6)" ( (binary_expression "uVar17 >> 6" identifier >> number_literal) )))) ;) })))) (labeled_statement "LAB_000ae83c:\n    pbVar6 = pbVar5;" statement_identifier : (expression_statement "pbVar6 = pbVar5;" (assignment_expression "pbVar6 = pbVar5" identifier = identifier) ;)) }) while (parenthesized_expression "(pbVar5 < in + (in_len - 0xd))" ( (binary_expression "pbVar5 < in + (in_len - 0xd)" identifier < (binary_expression "in + (in_len - 0xd)" identifier + (parenthesized_expression "(in_len - 0xd)" ( (binary_expression "in_len - 0xd" identifier - number_literal) )))) )) ;) (expression_statement "uVar3 = (int)pbVar4 - (int)out;" (assignment_expression "uVar3 = (int)pbVar4 - (int)out" identifier = (binary_expression "(int)pbVar4 - (int)out" (cast_expression "(int)pbVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)out" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (labeled_statement "LAB_000ae5b8:\n  *out_len = uVar3;" statement_identifier : (expression_statement "*out_len = uVar3;" (assignment_expression "*out_len = uVar3" (pointer_expression "*out_len" * identifier) = identifier) ;)) (return_statement "return (int)pbVar9 - (int)pbVar5;" return (binary_expression "(int)pbVar9 - (int)pbVar5" (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })))
(translation_unit "int FUN_000ae504(byte *param_1,int param_2,byte *param_3,int *param_4,int param_5)\n\n{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  char cVar7;\n  byte *pbVar8;\n  int iVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  uint uVar13;\n  byte *pbVar14;\n  uint uVar15;\n  int *piVar16;\n  uint uVar17;\n  uint uVar18;\n  \n  pbVar8 = param_1 + param_2;\n  pbVar6 = param_1 + 4;\n  pbVar5 = param_1;\n  pbVar4 = param_3;\n  do {\n    while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }\n    }\n    if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }\nLAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;\n    bVar1 = pbVar10[1];\nLAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;\n    *piVar16 = (int)pbVar6;\n    pbVar12 = pbVar5;\n    pbVar11 = pbVar4;\n    if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }\n    pbVar5 = pbVar6 + 4;\n    if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }\n    if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    pbVar5 = pbVar6 + 9;\n    if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;\n    if ((pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }\n    uVar3 = (int)pbVar5 - (int)pbVar12;\njoined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }\nLAB_000ae83c:\n    pbVar6 = pbVar5;\n  } while (pbVar5 < param_1 + param_2 + -0xd);\n  iVar9 = (int)pbVar4 - (int)param_3;\nLAB_000ae5b8:\n  *param_4 = iVar9;\n  return (int)pbVar8 - (int)pbVar5;\n}\n\n" (function_definition "int FUN_000ae504(byte *param_1,int param_2,byte *param_3,int *param_4,int param_5)\n\n{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  char cVar7;\n  byte *pbVar8;\n  int iVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  uint uVar13;\n  byte *pbVar14;\n  uint uVar15;\n  int *piVar16;\n  uint uVar17;\n  uint uVar18;\n  \n  pbVar8 = param_1 + param_2;\n  pbVar6 = param_1 + 4;\n  pbVar5 = param_1;\n  pbVar4 = param_3;\n  do {\n    while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }\n    }\n    if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }\nLAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;\n    bVar1 = pbVar10[1];\nLAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;\n    *piVar16 = (int)pbVar6;\n    pbVar12 = pbVar5;\n    pbVar11 = pbVar4;\n    if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }\n    pbVar5 = pbVar6 + 4;\n    if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }\n    if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    pbVar5 = pbVar6 + 9;\n    if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;\n    if ((pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }\n    uVar3 = (int)pbVar5 - (int)pbVar12;\njoined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }\nLAB_000ae83c:\n    pbVar6 = pbVar5;\n  } while (pbVar5 < param_1 + param_2 + -0xd);\n  iVar9 = (int)pbVar4 - (int)param_3;\nLAB_000ae5b8:\n  *param_4 = iVar9;\n  return (int)pbVar8 - (int)pbVar5;\n}" primitive_type (function_declarator "FUN_000ae504(byte *param_1,int param_2,byte *param_3,int *param_4,int param_5)" identifier (parameter_list "(byte *param_1,int param_2,byte *param_3,int *param_4,int param_5)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  char cVar7;\n  byte *pbVar8;\n  int iVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  uint uVar13;\n  byte *pbVar14;\n  uint uVar15;\n  int *piVar16;\n  uint uVar17;\n  uint uVar18;\n  \n  pbVar8 = param_1 + param_2;\n  pbVar6 = param_1 + 4;\n  pbVar5 = param_1;\n  pbVar4 = param_3;\n  do {\n    while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }\n    }\n    if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }\nLAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;\n    bVar1 = pbVar10[1];\nLAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;\n    *piVar16 = (int)pbVar6;\n    pbVar12 = pbVar5;\n    pbVar11 = pbVar4;\n    if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }\n    pbVar5 = pbVar6 + 4;\n    if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }\n    if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    pbVar5 = pbVar6 + 9;\n    if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;\n    if ((pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }\n    uVar3 = (int)pbVar5 - (int)pbVar12;\njoined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }\nLAB_000ae83c:\n    pbVar6 = pbVar5;\n  } while (pbVar5 < param_1 + param_2 + -0xd);\n  iVar9 = (int)pbVar4 - (int)param_3;\nLAB_000ae5b8:\n  *param_4 = iVar9;\n  return (int)pbVar8 - (int)pbVar5;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (expression_statement "pbVar8 = param_1 + param_2;" (assignment_expression "pbVar8 = param_1 + param_2" identifier = (binary_expression "param_1 + param_2" identifier + identifier)) ;) (expression_statement "pbVar6 = param_1 + 4;" (assignment_expression "pbVar6 = param_1 + 4" identifier = (binary_expression "param_1 + 4" identifier + number_literal)) ;) (expression_statement "pbVar5 = param_1;" (assignment_expression "pbVar5 = param_1" identifier = identifier) ;) (expression_statement "pbVar4 = param_3;" (assignment_expression "pbVar4 = param_3" identifier = identifier) ;) (do_statement "do {\n    while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }\n    }\n    if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }\nLAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;\n    bVar1 = pbVar10[1];\nLAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;\n    *piVar16 = (int)pbVar6;\n    pbVar12 = pbVar5;\n    pbVar11 = pbVar4;\n    if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }\n    pbVar5 = pbVar6 + 4;\n    if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }\n    if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    pbVar5 = pbVar6 + 9;\n    if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;\n    if ((pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }\n    uVar3 = (int)pbVar5 - (int)pbVar12;\njoined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }\nLAB_000ae83c:\n    pbVar6 = pbVar5;\n  } while (pbVar5 < param_1 + param_2 + -0xd);" do (compound_statement "{\n    while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }\n    }\n    if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }\nLAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;\n    bVar1 = pbVar10[1];\nLAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;\n    *piVar16 = (int)pbVar6;\n    pbVar12 = pbVar5;\n    pbVar11 = pbVar4;\n    if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }\n    pbVar5 = pbVar6 + 4;\n    if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }\n    if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    pbVar5 = pbVar6 + 9;\n    if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;\n    if ((pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }\n    uVar3 = (int)pbVar5 - (int)pbVar12;\njoined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }\nLAB_000ae83c:\n    pbVar6 = pbVar5;\n  }" { (while_statement "while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }\n    }" { (expression_statement "uVar18 = (uint)pbVar6[3];" (assignment_expression "uVar18 = (uint)pbVar6[3]" identifier = (cast_expression "(uint)pbVar6[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar15 = (uint)*pbVar6;" (assignment_expression "uVar15 = (uint)*pbVar6" identifier = (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;" (assignment_expression "uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5" identifier = (binary_expression "(((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5" (binary_expression "(((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21" (parenthesized_expression "(((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15)" ( (binary_expression "((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15" (binary_expression "((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5" (parenthesized_expression "((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1])" ( (binary_expression "(uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]" (binary_expression "(uVar18 << 6 ^ (uint)pbVar6[2]) << 5" (parenthesized_expression "(uVar18 << 6 ^ (uint)pbVar6[2])" ( (binary_expression "uVar18 << 6 ^ (uint)pbVar6[2]" (binary_expression "uVar18 << 6" identifier << number_literal) ^ (cast_expression "(uint)pbVar6[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[2]" identifier [ number_literal ]))) )) << number_literal) ^ (cast_expression "(uint)pbVar6[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[1]" identifier [ number_literal ]))) )) << number_literal) ^ identifier) )) * number_literal) >> number_literal)) ;) (expression_statement "piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);" (assignment_expression "piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4)" identifier = (cast_expression "(int *)(param_5 + (uVar3 & 0x7fff) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + (uVar3 & 0x7fff) * 4)" ( (binary_expression "param_5 + (uVar3 & 0x7fff) * 4" identifier + (binary_expression "(uVar3 & 0x7fff) * 4" (parenthesized_expression "(uVar3 & 0x7fff)" ( (binary_expression "uVar3 & 0x7fff" identifier & number_literal) )) * number_literal)) )))) ;) (expression_statement "uVar13 = (int)pbVar6 - *piVar16;" (assignment_expression "uVar13 = (int)pbVar6 - *piVar16" identifier = (binary_expression "(int)pbVar6 - *piVar16" (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (pointer_expression "*piVar16" * identifier))) ;) (expression_statement "pbVar10 = pbVar6 + -uVar13;" (assignment_expression "pbVar10 = pbVar6 + -uVar13" identifier = (binary_expression "pbVar6 + -uVar13" identifier + (unary_expression "-uVar13" - identifier))) ;) (expression_statement "uVar17 = uVar13 - 1;" (assignment_expression "uVar17 = uVar13 - 1" identifier = (binary_expression "uVar13 - 1" identifier - number_literal)) ;) (if_statement "if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;" if (parenthesized_expression "((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff))" ( (binary_expression "(param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)" (parenthesized_expression "(param_1 <= pbVar10)" ( (binary_expression "param_1 <= pbVar10" identifier <= identifier) )) && (parenthesized_expression "(bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)" ( (comma_expression "bVar2 = uVar13 < 0x801, uVar17 < 0xbfff" (assignment_expression "bVar2 = uVar13 < 0x801" identifier = (binary_expression "uVar13 < 0x801" identifier < number_literal)) , (binary_expression "uVar17 < 0xbfff" identifier < number_literal)) ))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;" statement_identifier : (expression_statement "pbVar10 = pbVar6 + 1;" (assignment_expression "pbVar10 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;)) (expression_statement "*piVar16 = (int)pbVar6;" (assignment_expression "*piVar16 = (int)pbVar6" (pointer_expression "*piVar16" * identifier) = (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (labeled_statement "joined_r0x000ae69c:\n      pbVar6 = pbVar10;" statement_identifier : (expression_statement "pbVar6 = pbVar10;" (assignment_expression "pbVar6 = pbVar10" identifier = identifier) ;)) (if_statement "if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }" if (parenthesized_expression "(param_1 + param_2 + -0xd <= pbVar10)" ( (binary_expression "param_1 + param_2 + -0xd <= pbVar10" (binary_expression "param_1 + param_2 + -0xd" (binary_expression "param_1 + param_2" identifier + identifier) + number_literal) <= identifier) )) (compound_statement "{\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }" { (expression_statement "iVar9 = (int)pbVar4 - (int)param_3;" (assignment_expression "iVar9 = (int)pbVar4 - (int)param_3" identifier = (binary_expression "(int)pbVar4 - (int)param_3" (cast_expression "(int)pbVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_000ae5b8;" goto statement_identifier ;) })) })) (if_statement "if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }" if (parenthesized_expression "((!bVar2) && (pbVar10[3] != uVar18))" ( (binary_expression "(!bVar2) && (pbVar10[3] != uVar18)" (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) && (parenthesized_expression "(pbVar10[3] != uVar18)" ( (binary_expression "pbVar10[3] != uVar18" (subscript_expression "pbVar10[3]" identifier [ number_literal ]) != identifier) ))) )) (compound_statement "{\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }" { (expression_statement "piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);" (assignment_expression "piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4)" identifier = (cast_expression "(int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4)" ( (binary_expression "param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4" identifier + (binary_expression "(uVar3 & 0x7ff ^ 0x401f) * 4" (parenthesized_expression "(uVar3 & 0x7ff ^ 0x401f)" ( (binary_expression "uVar3 & 0x7ff ^ 0x401f" (binary_expression "uVar3 & 0x7ff" identifier & number_literal) ^ number_literal) )) * number_literal)) )))) ;) (expression_statement "uVar13 = (int)pbVar6 - *piVar16;" (assignment_expression "uVar13 = (int)pbVar6 - *piVar16" identifier = (binary_expression "(int)pbVar6 - *piVar16" (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (pointer_expression "*piVar16" * identifier))) ;) (expression_statement "pbVar10 = pbVar6 + -uVar13;" (assignment_expression "pbVar10 = pbVar6 + -uVar13" identifier = (binary_expression "pbVar6 + -uVar13" identifier + (unary_expression "-uVar13" - identifier))) ;) (expression_statement "uVar17 = uVar13 - 1;" (assignment_expression "uVar17 = uVar13 - 1" identifier = (binary_expression "uVar13 - 1" identifier - number_literal)) ;) (if_statement "if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }" if (parenthesized_expression "((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff))" ( (binary_expression "(param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)" (parenthesized_expression "(param_1 <= pbVar10)" ( (binary_expression "param_1 <= pbVar10" identifier <= identifier) )) && (parenthesized_expression "(bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)" ( (comma_expression "bVar2 = uVar13 < 0x801, uVar17 < 0xbfff" (assignment_expression "bVar2 = uVar13 < 0x801" identifier = (binary_expression "uVar13 < 0x801" identifier < number_literal)) , (binary_expression "uVar17 < 0xbfff" identifier < number_literal)) ))) )) (compound_statement "{\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }" { (if_statement "if (bVar2) goto LAB_000ae5f4;" if (parenthesized_expression "(bVar2)" ( identifier )) (goto_statement "goto LAB_000ae5f4;" goto statement_identifier ;)) (if_statement "if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;" if (parenthesized_expression "((pbVar10[3] != uVar18) || (*pbVar10 != uVar15))" ( (binary_expression "(pbVar10[3] != uVar18) || (*pbVar10 != uVar15)" (parenthesized_expression "(pbVar10[3] != uVar18)" ( (binary_expression "pbVar10[3] != uVar18" (subscript_expression "pbVar10[3]" identifier [ number_literal ]) != identifier) )) || (parenthesized_expression "(*pbVar10 != uVar15)" ( (binary_expression "*pbVar10 != uVar15" (pointer_expression "*pbVar10" * identifier) != identifier) ))) )) (goto_statement "goto LAB_000ae5a0;" goto statement_identifier ;)) (expression_statement "bVar1 = pbVar10[1];" (assignment_expression "bVar1 = pbVar10[1]" identifier = (subscript_expression "pbVar10[1]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_000ae604;" goto statement_identifier ;) })) (goto_statement "goto LAB_000ae5a0;" goto statement_identifier ;) })) (labeled_statement "LAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;" statement_identifier : (if_statement "if (*pbVar10 != uVar15) goto LAB_000ae5a0;" if (parenthesized_expression "(*pbVar10 != uVar15)" ( (binary_expression "*pbVar10 != uVar15" (pointer_expression "*pbVar10" * identifier) != identifier) )) (goto_statement "goto LAB_000ae5a0;" goto statement_identifier ;))) (expression_statement "bVar1 = pbVar10[1];" (assignment_expression "bVar1 = pbVar10[1]" identifier = (subscript_expression "pbVar10[1]" identifier [ number_literal ])) ;) (labeled_statement "LAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;" statement_identifier : (if_statement "if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;" if (parenthesized_expression "(((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))" ( (binary_expression "((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2])" (parenthesized_expression "((uint)bVar1 != (uint)pbVar6[1])" ( (binary_expression "(uint)bVar1 != (uint)pbVar6[1]" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) != (cast_expression "(uint)pbVar6[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[1]" identifier [ number_literal ]))) )) || (parenthesized_expression "((uint)pbVar10[2] != (uint)pbVar6[2])" ( (binary_expression "(uint)pbVar10[2] != (uint)pbVar6[2]" (cast_expression "(uint)pbVar10[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar10[2]" identifier [ number_literal ])) != (cast_expression "(uint)pbVar6[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[2]" identifier [ number_literal ]))) ))) )) (goto_statement "goto LAB_000ae5a0;" goto statement_identifier ;))) (expression_statement "*piVar16 = (int)pbVar6;" (assignment_expression "*piVar16 = (int)pbVar6" (pointer_expression "*piVar16" * identifier) = (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pbVar12 = pbVar5;" (assignment_expression "pbVar12 = pbVar5" identifier = identifier) ;) (expression_statement "pbVar11 = pbVar4;" (assignment_expression "pbVar11 = pbVar4" identifier = identifier) ;) (if_statement "if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }" if (parenthesized_expression "(pbVar6 != pbVar5)" ( (binary_expression "pbVar6 != pbVar5" identifier != identifier) )) (compound_statement "{\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }" { (expression_statement "uVar3 = (int)pbVar6 - (int)pbVar5;" (assignment_expression "uVar3 = (int)pbVar6 - (int)pbVar5" identifier = (binary_expression "(int)pbVar6 - (int)pbVar5" (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }" if (parenthesized_expression "(uVar3 < 4)" ( (binary_expression "uVar3 < 4" identifier < number_literal) )) (compound_statement "{\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }" { (expression_statement "pbVar4[-2] = (byte)uVar3 | pbVar4[-2];" (assignment_expression "pbVar4[-2] = (byte)uVar3 | pbVar4[-2]" (subscript_expression "pbVar4[-2]" identifier [ number_literal ]) = (binary_expression "(byte)uVar3 | pbVar4[-2]" (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) | (subscript_expression "pbVar4[-2]" identifier [ number_literal ]))) ;) (expression_statement "pbVar14 = pbVar4;" (assignment_expression "pbVar14 = pbVar4" identifier = identifier) ;) }) (else_clause "else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }" else (compound_statement "{\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }" { (expression_statement "pbVar14 = pbVar4 + 1;" (assignment_expression "pbVar14 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (if_statement "if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }" if (parenthesized_expression "(uVar3 < 0x13)" ( (binary_expression "uVar3 < 0x13" identifier < number_literal) )) (compound_statement "{\n          *pbVar4 = (byte)uVar3 - 3;\n        }" { (expression_statement "*pbVar4 = (byte)uVar3 - 3;" (assignment_expression "*pbVar4 = (byte)uVar3 - 3" (pointer_expression "*pbVar4" * identifier) = (binary_expression "(byte)uVar3 - 3" (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) - number_literal)) ;) }) (else_clause "else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }" else (compound_statement "{\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }" { (expression_statement "uVar15 = uVar3 - 0x12;" (assignment_expression "uVar15 = uVar3 - 0x12" identifier = (binary_expression "uVar3 - 0x12" identifier - number_literal)) ;) (expression_statement "*pbVar4 = 0;" (assignment_expression "*pbVar4 = 0" (pointer_expression "*pbVar4" * identifier) = number_literal) ;) (expression_statement "pbVar12 = pbVar4 + 2;" (assignment_expression "pbVar12 = pbVar4 + 2" identifier = (binary_expression "pbVar4 + 2" identifier + number_literal)) ;) (expression_statement "pbVar11 = pbVar14;" (assignment_expression "pbVar11 = pbVar14" identifier = identifier) ;) (if_statement "if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }" if (parenthesized_expression "(0xff < uVar15)" ( (binary_expression "0xff < uVar15" number_literal < identifier) )) (compound_statement "{\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }" { (expression_statement "pbVar4[1] = 0;" (assignment_expression "pbVar4[1] = 0" (subscript_expression "pbVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar4 = pbVar14;" (assignment_expression "pbVar4 = pbVar14" identifier = identifier) ;) (expression_statement "pbVar11 = pbVar12;" (assignment_expression "pbVar11 = pbVar12" identifier = identifier) ;) (for_statement "for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }" for ( (assignment_expression "uVar15 = uVar3 - 0x111" identifier = (binary_expression "uVar3 - 0x111" identifier - number_literal)) ; (binary_expression "0xff < uVar15" number_literal < identifier) ; (assignment_expression "uVar15 = uVar15 - 0xff" identifier = (binary_expression "uVar15 - 0xff" identifier - number_literal)) ) (compound_statement "{\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }" { (expression_statement "*pbVar11 = 0;" (assignment_expression "*pbVar11 = 0" (pointer_expression "*pbVar11" * identifier) = number_literal) ;) (expression_statement "pbVar4 = pbVar11;" (assignment_expression "pbVar4 = pbVar11" identifier = identifier) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) })) })) (expression_statement "pbVar14 = pbVar4 + 2;" (assignment_expression "pbVar14 = pbVar4 + 2" identifier = (binary_expression "pbVar4 + 2" identifier + number_literal)) ;) (expression_statement "*pbVar11 = (byte)uVar15;" (assignment_expression "*pbVar11 = (byte)uVar15" (pointer_expression "*pbVar11" * identifier) = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) }))) (expression_statement "pbVar11 = pbVar14 + uVar3;" (assignment_expression "pbVar11 = pbVar14 + uVar3" identifier = (binary_expression "pbVar14 + uVar3" identifier + identifier)) ;) (do_statement "do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);" do (compound_statement "{\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      }" { (expression_statement "pbVar4 = pbVar14 + 1;" (assignment_expression "pbVar4 = pbVar14 + 1" identifier = (binary_expression "pbVar14 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar14 = *pbVar5;" (assignment_expression "*pbVar14 = *pbVar5" (pointer_expression "*pbVar14" * identifier) = (pointer_expression "*pbVar5" * identifier)) ;) (expression_statement "pbVar14 = pbVar4;" (assignment_expression "pbVar14 = pbVar4" identifier = identifier) ;) (expression_statement "pbVar12 = pbVar6;" (assignment_expression "pbVar12 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar4 != pbVar11)" ( (binary_expression "pbVar4 != pbVar11" identifier != identifier) )) ;) })) (expression_statement "pbVar5 = pbVar6 + 4;" (assignment_expression "pbVar5 = pbVar6 + 4" identifier = (binary_expression "pbVar6 + 4" identifier + number_literal)) ;) (if_statement "if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }" if (parenthesized_expression "(pbVar10[3] != pbVar6[3])" ( (binary_expression "pbVar10[3] != pbVar6[3]" (subscript_expression "pbVar10[3]" identifier [ number_literal ]) != (subscript_expression "pbVar6[3]" identifier [ number_literal ])) )) (compound_statement "{\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }" { (labeled_statement "LAB_000ae668:\n      pbVar5 = pbVar5 + -1;" statement_identifier : (expression_statement "pbVar5 = pbVar5 + -1;" (assignment_expression "pbVar5 = pbVar5 + -1" identifier = (binary_expression "pbVar5 + -1" identifier + number_literal)) ;)) (expression_statement "cVar7 = (char)((int)pbVar5 - (int)pbVar12);" (assignment_expression "cVar7 = (char)((int)pbVar5 - (int)pbVar12)" identifier = (cast_expression "(char)((int)pbVar5 - (int)pbVar12)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((int)pbVar5 - (int)pbVar12)" ( (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (compound_statement "{\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }" { (labeled_statement "LAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }" statement_identifier : (if_statement "if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }" if (parenthesized_expression "(uVar13 < 0x4001)" ( (binary_expression "uVar13 < 0x4001" identifier < number_literal) )) (compound_statement "{\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }" { (expression_statement "*pbVar11 = cVar7 - 2U | 0x20;" (assignment_expression "*pbVar11 = cVar7 - 2U | 0x20" (pointer_expression "*pbVar11" * identifier) = (binary_expression "cVar7 - 2U | 0x20" (binary_expression "cVar7 - 2U" identifier - number_literal) | number_literal)) ;) (expression_statement "pbVar4 = pbVar11 + 3;" (assignment_expression "pbVar4 = pbVar11 + 3" identifier = (binary_expression "pbVar11 + 3" identifier + number_literal)) ;) (expression_statement "pbVar11[1] = (byte)(uVar17 << 2);" (assignment_expression "pbVar11[1] = (byte)(uVar17 << 2)" (subscript_expression "pbVar11[1]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 << 2)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 << 2)" ( (binary_expression "uVar17 << 2" identifier << number_literal) )))) ;) (expression_statement "pbVar11[2] = (byte)(uVar17 >> 6);" (assignment_expression "pbVar11[2] = (byte)(uVar17 >> 6)" (subscript_expression "pbVar11[2]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 >> 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 >> 6)" ( (binary_expression "uVar17 >> 6" identifier >> number_literal) )))) ;) }) (else_clause "else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }" else (compound_statement "{\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }" { (expression_statement "uVar13 = uVar13 - 0x4000;" (assignment_expression "uVar13 = uVar13 - 0x4000" identifier = (binary_expression "uVar13 - 0x4000" identifier - number_literal)) ;) (expression_statement "*pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;" (assignment_expression "*pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10" (pointer_expression "*pbVar11" * identifier) = (binary_expression "cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10" (binary_expression "cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8" (binary_expression "cVar7 - 2U" identifier - number_literal) | (binary_expression "(byte)(uVar13 >> 0xb) & 8" (call_expression "(byte)(uVar13 >> 0xb)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar13 >> 0xb)" ( (binary_expression "uVar13 >> 0xb" identifier >> number_literal) ))) & number_literal)) | number_literal)) ;) (expression_statement "pbVar4 = pbVar11 + 3;" (assignment_expression "pbVar4 = pbVar11 + 3" identifier = (binary_expression "pbVar11 + 3" identifier + number_literal)) ;) (expression_statement "pbVar11[1] = (char)uVar13 * '\x04';" (assignment_expression "pbVar11[1] = (char)uVar13 * '\x04'" (subscript_expression "pbVar11[1]" identifier [ number_literal ]) = (binary_expression "(char)uVar13 * '\x04'" (cast_expression "(char)uVar13" ( (type_descriptor "char" primitive_type) ) identifier) * (char_literal "'\x04'" ' escape_sequence '))) ;) (expression_statement "pbVar11[2] = (byte)(uVar13 >> 6);" (assignment_expression "pbVar11[2] = (byte)(uVar13 >> 6)" (subscript_expression "pbVar11[2]" identifier [ number_literal ]) = (call_expression "(byte)(uVar13 >> 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar13 >> 6)" ( (binary_expression "uVar13 >> 6" identifier >> number_literal) )))) ;) })))) (goto_statement "goto LAB_000ae83c;" goto statement_identifier ;) })) (expression_statement "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;" (assignment_expression "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" identifier = (binary_expression "((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (parenthesized_expression "((int)pbVar5 - (int)pbVar12 & 0xffU)" ( (binary_expression "(int)pbVar5 - (int)pbVar12 & 0xffU" (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )) - number_literal)) ;) (labeled_statement "LAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);" statement_identifier : (expression_statement "*pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);" (assignment_expression "*pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2)" (pointer_expression "*pbVar11" * identifier) = (binary_expression "(byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2)" (call_expression "(byte)(iVar9 << 5)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(iVar9 << 5)" ( (binary_expression "iVar9 << 5" identifier << number_literal) ))) | (call_expression "(byte)((uVar17 & 7) << 2)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar17 & 7) << 2)" ( (binary_expression "(uVar17 & 7) << 2" (parenthesized_expression "(uVar17 & 7)" ( (binary_expression "uVar17 & 7" identifier & number_literal) )) << number_literal) ))))) ;)) (expression_statement "pbVar4 = pbVar11 + 2;" (assignment_expression "pbVar4 = pbVar11 + 2" identifier = (binary_expression "pbVar11 + 2" identifier + number_literal)) ;) (expression_statement "pbVar11[1] = (byte)(uVar17 >> 3);" (assignment_expression "pbVar11[1] = (byte)(uVar17 >> 3)" (subscript_expression "pbVar11[1]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 >> 3)" ( (binary_expression "uVar17 >> 3" identifier >> number_literal) )))) ;) (expression_statement "pbVar10 = pbVar5;" (assignment_expression "pbVar10 = pbVar5" identifier = identifier) ;) (goto_statement "goto joined_r0x000ae69c;" goto statement_identifier ;) })) (if_statement "if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" if (parenthesized_expression "(pbVar10[4] != pbVar6[4])" ( (binary_expression "pbVar10[4] != pbVar6[4]" (subscript_expression "pbVar10[4]" identifier [ number_literal ]) != (subscript_expression "pbVar6[4]" identifier [ number_literal ])) )) (compound_statement "{\n      pbVar5 = pbVar6 + 4;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" { (expression_statement "pbVar5 = pbVar6 + 4;" (assignment_expression "pbVar5 = pbVar6 + 4" identifier = (binary_expression "pbVar6 + 4" identifier + number_literal)) ;) (expression_statement "cVar7 = (char)((int)pbVar5 - (int)pbVar12);" (assignment_expression "cVar7 = (char)((int)pbVar5 - (int)pbVar12)" identifier = (cast_expression "(char)((int)pbVar5 - (int)pbVar12)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((int)pbVar5 - (int)pbVar12)" ( (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (!bVar2) goto LAB_000ae900;" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (goto_statement "goto LAB_000ae900;" goto statement_identifier ;)) (expression_statement "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;" (assignment_expression "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" identifier = (binary_expression "((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (parenthesized_expression "((int)pbVar5 - (int)pbVar12 & 0xffU)" ( (binary_expression "(int)pbVar5 - (int)pbVar12 & 0xffU" (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )) - number_literal)) ;) (goto_statement "goto LAB_000ae67c;" goto statement_identifier ;) })) (if_statement "if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" if (parenthesized_expression "(pbVar10[5] != pbVar6[5])" ( (binary_expression "pbVar10[5] != pbVar6[5]" (subscript_expression "pbVar10[5]" identifier [ number_literal ]) != (subscript_expression "pbVar6[5]" identifier [ number_literal ])) )) (compound_statement "{\n      pbVar5 = pbVar6 + 5;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" { (expression_statement "pbVar5 = pbVar6 + 5;" (assignment_expression "pbVar5 = pbVar6 + 5" identifier = (binary_expression "pbVar6 + 5" identifier + number_literal)) ;) (expression_statement "cVar7 = (char)((int)pbVar5 - (int)pbVar12);" (assignment_expression "cVar7 = (char)((int)pbVar5 - (int)pbVar12)" identifier = (cast_expression "(char)((int)pbVar5 - (int)pbVar12)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((int)pbVar5 - (int)pbVar12)" ( (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (!bVar2) goto LAB_000ae900;" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (goto_statement "goto LAB_000ae900;" goto statement_identifier ;)) (expression_statement "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;" (assignment_expression "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" identifier = (binary_expression "((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (parenthesized_expression "((int)pbVar5 - (int)pbVar12 & 0xffU)" ( (binary_expression "(int)pbVar5 - (int)pbVar12 & 0xffU" (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )) - number_literal)) ;) (goto_statement "goto LAB_000ae67c;" goto statement_identifier ;) })) (if_statement "if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" if (parenthesized_expression "(pbVar10[6] != pbVar6[6])" ( (binary_expression "pbVar10[6] != pbVar6[6]" (subscript_expression "pbVar10[6]" identifier [ number_literal ]) != (subscript_expression "pbVar6[6]" identifier [ number_literal ])) )) (compound_statement "{\n      pbVar5 = pbVar6 + 6;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" { (expression_statement "pbVar5 = pbVar6 + 6;" (assignment_expression "pbVar5 = pbVar6 + 6" identifier = (binary_expression "pbVar6 + 6" identifier + number_literal)) ;) (expression_statement "cVar7 = (char)((int)pbVar5 - (int)pbVar12);" (assignment_expression "cVar7 = (char)((int)pbVar5 - (int)pbVar12)" identifier = (cast_expression "(char)((int)pbVar5 - (int)pbVar12)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((int)pbVar5 - (int)pbVar12)" ( (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (!bVar2) goto LAB_000ae900;" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (goto_statement "goto LAB_000ae900;" goto statement_identifier ;)) (expression_statement "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;" (assignment_expression "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" identifier = (binary_expression "((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (parenthesized_expression "((int)pbVar5 - (int)pbVar12 & 0xffU)" ( (binary_expression "(int)pbVar5 - (int)pbVar12 & 0xffU" (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )) - number_literal)) ;) (goto_statement "goto LAB_000ae67c;" goto statement_identifier ;) })) (if_statement "if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" if (parenthesized_expression "(pbVar10[7] != pbVar6[7])" ( (binary_expression "pbVar10[7] != pbVar6[7]" (subscript_expression "pbVar10[7]" identifier [ number_literal ]) != (subscript_expression "pbVar6[7]" identifier [ number_literal ])) )) (compound_statement "{\n      pbVar5 = pbVar6 + 7;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" { (expression_statement "pbVar5 = pbVar6 + 7;" (assignment_expression "pbVar5 = pbVar6 + 7" identifier = (binary_expression "pbVar6 + 7" identifier + number_literal)) ;) (expression_statement "cVar7 = (char)((int)pbVar5 - (int)pbVar12);" (assignment_expression "cVar7 = (char)((int)pbVar5 - (int)pbVar12)" identifier = (cast_expression "(char)((int)pbVar5 - (int)pbVar12)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((int)pbVar5 - (int)pbVar12)" ( (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (!bVar2) goto LAB_000ae900;" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (goto_statement "goto LAB_000ae900;" goto statement_identifier ;)) (expression_statement "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;" (assignment_expression "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" identifier = (binary_expression "((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (parenthesized_expression "((int)pbVar5 - (int)pbVar12 & 0xffU)" ( (binary_expression "(int)pbVar5 - (int)pbVar12 & 0xffU" (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )) - number_literal)) ;) (goto_statement "goto LAB_000ae67c;" goto statement_identifier ;) })) (expression_statement "pbVar5 = pbVar6 + 9;" (assignment_expression "pbVar5 = pbVar6 + 9" identifier = (binary_expression "pbVar6 + 9" identifier + number_literal)) ;) (if_statement "if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;" if (parenthesized_expression "(pbVar10[8] != pbVar6[8])" ( (binary_expression "pbVar10[8] != pbVar6[8]" (subscript_expression "pbVar10[8]" identifier [ number_literal ]) != (subscript_expression "pbVar6[8]" identifier [ number_literal ])) )) (goto_statement "goto LAB_000ae668;" goto statement_identifier ;)) (if_statement "if ((pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }" if (parenthesized_expression "((pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9]))" ( (binary_expression "(pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])" (parenthesized_expression "(pbVar5 < pbVar8)" ( (binary_expression "pbVar5 < pbVar8" identifier < identifier) )) && (parenthesized_expression "(pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])" ( (comma_expression "pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9]" (assignment_expression "pbVar4 = pbVar10 + 9" identifier = (binary_expression "pbVar10 + 9" identifier + number_literal)) , (binary_expression "pbVar6[9] == pbVar10[9]" (subscript_expression "pbVar6[9]" identifier [ number_literal ]) == (subscript_expression "pbVar10[9]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }" { (do_statement "do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);" do (compound_statement "{\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      }" { (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }" if (parenthesized_expression "(pbVar8 == pbVar5)" ( (binary_expression "pbVar8 == pbVar5" identifier == identifier) )) (compound_statement "{\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }" { (expression_statement "uVar3 = (int)pbVar8 - (int)pbVar12;" (assignment_expression "uVar3 = (int)pbVar8 - (int)pbVar12" identifier = (binary_expression "(int)pbVar8 - (int)pbVar12" (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pbVar5 = pbVar8;" (assignment_expression "pbVar5 = pbVar8" identifier = identifier) ;) (goto_statement "goto joined_r0x000ae8f0;" goto statement_identifier ;) })) }) while (parenthesized_expression "(*pbVar4 == *pbVar5)" ( (binary_expression "*pbVar4 == *pbVar5" (pointer_expression "*pbVar4" * identifier) == (pointer_expression "*pbVar5" * identifier)) )) ;) })) (expression_statement "uVar3 = (int)pbVar5 - (int)pbVar12;" (assignment_expression "uVar3 = (int)pbVar5 - (int)pbVar12" identifier = (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (labeled_statement "joined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }" statement_identifier : (if_statement "if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }" if (parenthesized_expression "(uVar13 < 0x4001)" ( (binary_expression "uVar13 < 0x4001" identifier < number_literal) )) (compound_statement "{\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }" { (if_statement "if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }" if (parenthesized_expression "(uVar3 < 0x22)" ( (binary_expression "uVar3 < 0x22" identifier < number_literal) )) (compound_statement "{\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }" { (expression_statement "*pbVar11 = (char)uVar3 - 2U | 0x20;" (assignment_expression "*pbVar11 = (char)uVar3 - 2U | 0x20" (pointer_expression "*pbVar11" * identifier) = (binary_expression "(char)uVar3 - 2U | 0x20" (binary_expression "(char)uVar3 - 2U" (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier) - number_literal) | number_literal)) ;) (expression_statement "pbVar4 = pbVar11 + 3;" (assignment_expression "pbVar4 = pbVar11 + 3" identifier = (binary_expression "pbVar11 + 3" identifier + number_literal)) ;) (expression_statement "pbVar11[1] = (byte)(uVar17 << 2);" (assignment_expression "pbVar11[1] = (byte)(uVar17 << 2)" (subscript_expression "pbVar11[1]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 << 2)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 << 2)" ( (binary_expression "uVar17 << 2" identifier << number_literal) )))) ;) (expression_statement "pbVar11[2] = (byte)(uVar17 >> 6);" (assignment_expression "pbVar11[2] = (byte)(uVar17 >> 6)" (subscript_expression "pbVar11[2]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 >> 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 >> 6)" ( (binary_expression "uVar17 >> 6" identifier >> number_literal) )))) ;) }) (else_clause "else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }" else (compound_statement "{\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }" { (expression_statement "uVar3 = uVar3 - 0x21;" (assignment_expression "uVar3 = uVar3 - 0x21" identifier = (binary_expression "uVar3 - 0x21" identifier - number_literal)) ;) (expression_statement "*pbVar11 = 0x20;" (assignment_expression "*pbVar11 = 0x20" (pointer_expression "*pbVar11" * identifier) = number_literal) ;) (labeled_statement "joined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }" statement_identifier : (for_statement "for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }" for ( ; (comma_expression "pbVar4 = pbVar11 + 1, 0xff < uVar3" (assignment_expression "pbVar4 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) , (binary_expression "0xff < uVar3" number_literal < identifier)) ; (assignment_expression "uVar3 = uVar3 - 0xff" identifier = (binary_expression "uVar3 - 0xff" identifier - number_literal)) ) (compound_statement "{\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }" { (expression_statement "*pbVar4 = 0;" (assignment_expression "*pbVar4 = 0" (pointer_expression "*pbVar4" * identifier) = number_literal) ;) (expression_statement "pbVar11 = pbVar4;" (assignment_expression "pbVar11 = pbVar4" identifier = identifier) ;) }))) (expression_statement "*pbVar4 = (byte)uVar3;" (assignment_expression "*pbVar4 = (byte)uVar3" (pointer_expression "*pbVar4" * identifier) = (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "pbVar4 = pbVar11 + 4;" (assignment_expression "pbVar4 = pbVar11 + 4" identifier = (binary_expression "pbVar11 + 4" identifier + number_literal)) ;) (expression_statement "pbVar11[2] = (byte)(uVar17 << 2);" (assignment_expression "pbVar11[2] = (byte)(uVar17 << 2)" (subscript_expression "pbVar11[2]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 << 2)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 << 2)" ( (binary_expression "uVar17 << 2" identifier << number_literal) )))) ;) (expression_statement "pbVar11[3] = (byte)(uVar17 >> 6);" (assignment_expression "pbVar11[3] = (byte)(uVar17 >> 6)" (subscript_expression "pbVar11[3]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 >> 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 >> 6)" ( (binary_expression "uVar17 >> 6" identifier >> number_literal) )))) ;) }))) }) (else_clause "else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }" else (compound_statement "{\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }" { (expression_statement "uVar17 = uVar13 - 0x4000;" (assignment_expression "uVar17 = uVar13 - 0x4000" identifier = (binary_expression "uVar13 - 0x4000" identifier - number_literal)) ;) (expression_statement "bVar1 = (byte)(uVar17 >> 0xb) & 8;" (assignment_expression "bVar1 = (byte)(uVar17 >> 0xb) & 8" identifier = (binary_expression "(byte)(uVar17 >> 0xb) & 8" (call_expression "(byte)(uVar17 >> 0xb)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 >> 0xb)" ( (binary_expression "uVar17 >> 0xb" identifier >> number_literal) ))) & number_literal)) ;) (if_statement "if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }" if (parenthesized_expression "(9 < uVar3)" ( (binary_expression "9 < uVar3" number_literal < identifier) )) (compound_statement "{\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }" { (expression_statement "uVar3 = uVar3 - 9;" (assignment_expression "uVar3 = uVar3 - 9" identifier = (binary_expression "uVar3 - 9" identifier - number_literal)) ;) (expression_statement "*pbVar11 = bVar1 | 0x10;" (assignment_expression "*pbVar11 = bVar1 | 0x10" (pointer_expression "*pbVar11" * identifier) = (binary_expression "bVar1 | 0x10" identifier | number_literal)) ;) (goto_statement "goto joined_r0x000ae874;" goto statement_identifier ;) })) (expression_statement "*pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;" (assignment_expression "*pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10" (pointer_expression "*pbVar11" * identifier) = (binary_expression "bVar1 | (char)uVar3 - 2U | 0x10" (binary_expression "bVar1 | (char)uVar3 - 2U" identifier | (binary_expression "(char)uVar3 - 2U" (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier) - number_literal)) | number_literal)) ;) (expression_statement "pbVar4 = pbVar11 + 3;" (assignment_expression "pbVar4 = pbVar11 + 3" identifier = (binary_expression "pbVar11 + 3" identifier + number_literal)) ;) (expression_statement "pbVar11[1] = (char)uVar17 * '\x04';" (assignment_expression "pbVar11[1] = (char)uVar17 * '\x04'" (subscript_expression "pbVar11[1]" identifier [ number_literal ]) = (binary_expression "(char)uVar17 * '\x04'" (cast_expression "(char)uVar17" ( (type_descriptor "char" primitive_type) ) identifier) * (char_literal "'\x04'" ' escape_sequence '))) ;) (expression_statement "pbVar11[2] = (byte)(uVar17 >> 6);" (assignment_expression "pbVar11[2] = (byte)(uVar17 >> 6)" (subscript_expression "pbVar11[2]" identifier [ number_literal ]) = (call_expression "(byte)(uVar17 >> 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 >> 6)" ( (binary_expression "uVar17 >> 6" identifier >> number_literal) )))) ;) })))) (labeled_statement "LAB_000ae83c:\n    pbVar6 = pbVar5;" statement_identifier : (expression_statement "pbVar6 = pbVar5;" (assignment_expression "pbVar6 = pbVar5" identifier = identifier) ;)) }) while (parenthesized_expression "(pbVar5 < param_1 + param_2 + -0xd)" ( (binary_expression "pbVar5 < param_1 + param_2 + -0xd" identifier < (binary_expression "param_1 + param_2 + -0xd" (binary_expression "param_1 + param_2" identifier + identifier) + number_literal)) )) ;) (expression_statement "iVar9 = (int)pbVar4 - (int)param_3;" (assignment_expression "iVar9 = (int)pbVar4 - (int)param_3" identifier = (binary_expression "(int)pbVar4 - (int)param_3" (cast_expression "(int)pbVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (labeled_statement "LAB_000ae5b8:\n  *param_4 = iVar9;" statement_identifier : (expression_statement "*param_4 = iVar9;" (assignment_expression "*param_4 = iVar9" (pointer_expression "*param_4" * identifier) = identifier) ;)) (return_statement "return (int)pbVar8 - (int)pbVar5;" return (binary_expression "(int)pbVar8 - (int)pbVar5" (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT << LIT) ^ (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) << LIT) ^ (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) << LIT) ^ IDENT) )) * LIT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT < LIT)) , (binary_expression IDENT < LIT)) ))) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + IDENT) + LIT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (goto_statement goto statement_identifier ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (unary_expression ! IDENT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT & LIT) ^ LIT) )) * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT < LIT)) , (binary_expression IDENT < LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != IDENT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != IDENT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) | (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression IDENT - LIT)) ; (binary_expression LIT < IDENT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = 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) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression IDENT - LIT) | LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (binary_expression IDENT - LIT) | (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) & LIT)) | LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) })))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT) )) - LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << LIT) ))) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT) )) - LIT)) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT) )) - LIT)) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT) )) - LIT)) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT) )) - LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression (subscript_expression IDENT [ LIT ]) == (subscript_expression IDENT [ LIT ]))) ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT)) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (labeled_statement statement_identifier : (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 (pointer_expression * IDENT) = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) | LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (labeled_statement statement_identifier : (for_statement for ( ; (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression LIT < IDENT)) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT | LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression IDENT | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT)) | LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) })))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) }) while (parenthesized_expression ( (binary_expression IDENT < (binary_expression (binary_expression IDENT + IDENT) + LIT)) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (return_statement return (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })))
(function_definition "int FUN_000ae504(byte *param_1,int param_2,byte *param_3,int *param_4,int param_5)\n\n{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  char cVar7;\n  byte *pbVar8;\n  int iVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  uint uVar13;\n  byte *pbVar14;\n  uint uVar15;\n  int *piVar16;\n  uint uVar17;\n  uint uVar18;\n  \n  pbVar8 = param_1 + param_2;\n  pbVar6 = param_1 + 4;\n  pbVar5 = param_1;\n  pbVar4 = param_3;\n  do {\n    while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }\n    }\n    if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }\nLAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;\n    bVar1 = pbVar10[1];\nLAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;\n    *piVar16 = (int)pbVar6;\n    pbVar12 = pbVar5;\n    pbVar11 = pbVar4;\n    if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }\n    pbVar5 = pbVar6 + 4;\n    if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }\n    if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    pbVar5 = pbVar6 + 9;\n    if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;\n    if ((pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }\n    uVar3 = (int)pbVar5 - (int)pbVar12;\njoined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }\nLAB_000ae83c:\n    pbVar6 = pbVar5;\n  } while (pbVar5 < param_1 + param_2 + -0xd);\n  iVar9 = (int)pbVar4 - (int)param_3;\nLAB_000ae5b8:\n  *param_4 = iVar9;\n  return (int)pbVar8 - (int)pbVar5;\n}" (primitive_type "int") (function_declarator "FUN_000ae504(byte *param_1,int param_2,byte *param_3,int *param_4,int param_5)" (identifier "FUN_000ae504") (parameter_list "(byte *param_1,int param_2,byte *param_3,int *param_4,int param_5)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "byte *param_3" (type_identifier "byte") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "int *param_4" (primitive_type "int") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) () ")"))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  char cVar7;\n  byte *pbVar8;\n  int iVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  uint uVar13;\n  byte *pbVar14;\n  uint uVar15;\n  int *piVar16;\n  uint uVar17;\n  uint uVar18;\n  \n  pbVar8 = param_1 + param_2;\n  pbVar6 = param_1 + 4;\n  pbVar5 = param_1;\n  pbVar4 = param_3;\n  do {\n    while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }\n    }\n    if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }\nLAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;\n    bVar1 = pbVar10[1];\nLAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;\n    *piVar16 = (int)pbVar6;\n    pbVar12 = pbVar5;\n    pbVar11 = pbVar4;\n    if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }\n    pbVar5 = pbVar6 + 4;\n    if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }\n    if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    pbVar5 = pbVar6 + 9;\n    if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;\n    if ((pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }\n    uVar3 = (int)pbVar5 - (int)pbVar12;\njoined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }\nLAB_000ae83c:\n    pbVar6 = pbVar5;\n  } while (pbVar5 < param_1 + param_2 + -0xd);\n  iVar9 = (int)pbVar4 - (int)param_3;\nLAB_000ae5b8:\n  *param_4 = iVar9;\n  return (int)pbVar8 - (int)pbVar5;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "byte *pbVar4;" (type_identifier "byte") (pointer_declarator "*pbVar4" (* "*") (identifier "pbVar4")) (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "char cVar7;" (primitive_type "char") (identifier "cVar7") (; ";")) (declaration "byte *pbVar8;" (type_identifier "byte") (pointer_declarator "*pbVar8" (* "*") (identifier "pbVar8")) (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "byte *pbVar10;" (type_identifier "byte") (pointer_declarator "*pbVar10" (* "*") (identifier "pbVar10")) (; ";")) (declaration "byte *pbVar11;" (type_identifier "byte") (pointer_declarator "*pbVar11" (* "*") (identifier "pbVar11")) (; ";")) (declaration "byte *pbVar12;" (type_identifier "byte") (pointer_declarator "*pbVar12" (* "*") (identifier "pbVar12")) (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "byte *pbVar14;" (type_identifier "byte") (pointer_declarator "*pbVar14" (* "*") (identifier "pbVar14")) (; ";")) (declaration "uint uVar15;" (type_identifier "uint") (identifier "uVar15") (; ";")) (declaration "int *piVar16;" (primitive_type "int") (pointer_declarator "*piVar16" (* "*") (identifier "piVar16")) (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (expression_statement "pbVar8 = param_1 + param_2;" (assignment_expression "pbVar8 = param_1 + param_2" (identifier "pbVar8") (= "=") (binary_expression "param_1 + param_2" (identifier "param_1") (+ "+") (identifier "param_2"))) (; ";")) (expression_statement "pbVar6 = param_1 + 4;" (assignment_expression "pbVar6 = param_1 + 4" (identifier "pbVar6") (= "=") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "pbVar5 = param_1;" (assignment_expression "pbVar5 = param_1" (identifier "pbVar5") (= "=") (identifier "param_1")) (; ";")) (expression_statement "pbVar4 = param_3;" (assignment_expression "pbVar4 = param_3" (identifier "pbVar4") (= "=") (identifier "param_3")) (; ";")) (do_statement "do {\n    while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }\n    }\n    if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }\nLAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;\n    bVar1 = pbVar10[1];\nLAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;\n    *piVar16 = (int)pbVar6;\n    pbVar12 = pbVar5;\n    pbVar11 = pbVar4;\n    if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }\n    pbVar5 = pbVar6 + 4;\n    if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }\n    if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    pbVar5 = pbVar6 + 9;\n    if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;\n    if ((pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }\n    uVar3 = (int)pbVar5 - (int)pbVar12;\njoined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }\nLAB_000ae83c:\n    pbVar6 = pbVar5;\n  } while (pbVar5 < param_1 + param_2 + -0xd);" (do "do") (compound_statement "{\n    while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }\n    }\n    if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }\nLAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;\n    bVar1 = pbVar10[1];\nLAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;\n    *piVar16 = (int)pbVar6;\n    pbVar12 = pbVar5;\n    pbVar11 = pbVar4;\n    if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }\n    pbVar5 = pbVar6 + 4;\n    if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }\n    if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }\n    pbVar5 = pbVar6 + 9;\n    if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;\n    if ((pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }\n    uVar3 = (int)pbVar5 - (int)pbVar12;\njoined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }\nLAB_000ae83c:\n    pbVar6 = pbVar5;\n  }" ({ "{") (while_statement "while( true ) {\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      uVar18 = (uint)pbVar6[3];\n      uVar15 = (uint)*pbVar6;\n      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;\nLAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;\n      *piVar16 = (int)pbVar6;\njoined_r0x000ae69c:\n      pbVar6 = pbVar10;\n      if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }\n    }" ({ "{") (expression_statement "uVar18 = (uint)pbVar6[3];" (assignment_expression "uVar18 = (uint)pbVar6[3]" (identifier "uVar18") (= "=") (cast_expression "(uint)pbVar6[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar6[3]" (identifier "pbVar6") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "uVar15 = (uint)*pbVar6;" (assignment_expression "uVar15 = (uint)*pbVar6" (identifier "uVar15") (= "=") (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar6"))) (; ";")) (expression_statement "uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;" (assignment_expression "uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5" (identifier "uVar3") (= "=") (binary_expression "(((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5" (binary_expression "(((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21" (parenthesized_expression "(((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15)" (( "(") (binary_expression "((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15" (binary_expression "((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5" (parenthesized_expression "((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1])" (( "(") (binary_expression "(uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]" (binary_expression "(uVar18 << 6 ^ (uint)pbVar6[2]) << 5" (parenthesized_expression "(uVar18 << 6 ^ (uint)pbVar6[2])" (( "(") (binary_expression "uVar18 << 6 ^ (uint)pbVar6[2]" (binary_expression "uVar18 << 6" (identifier "uVar18") (<< "<<") (number_literal "6")) (^ "^") (cast_expression "(uint)pbVar6[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar6[2]" (identifier "pbVar6") ([ "[") (number_literal "2") (] "]")))) () ")")) (<< "<<") (number_literal "5")) (^ "^") (cast_expression "(uint)pbVar6[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar6[1]" (identifier "pbVar6") ([ "[") (number_literal "1") (] "]")))) () ")")) (<< "<<") (number_literal "5")) (^ "^") (identifier "uVar15")) () ")")) (* "*") (number_literal "0x21")) (>> ">>") (number_literal "5"))) (; ";")) (expression_statement "piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);" (assignment_expression "piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4)" (identifier "piVar16") (= "=") (cast_expression "(int *)(param_5 + (uVar3 & 0x7fff) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + (uVar3 & 0x7fff) * 4)" (( "(") (binary_expression "param_5 + (uVar3 & 0x7fff) * 4" (identifier "param_5") (+ "+") (binary_expression "(uVar3 & 0x7fff) * 4" (parenthesized_expression "(uVar3 & 0x7fff)" (( "(") (binary_expression "uVar3 & 0x7fff" (identifier "uVar3") (& "&") (number_literal "0x7fff")) () ")")) (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "uVar13 = (int)pbVar6 - *piVar16;" (assignment_expression "uVar13 = (int)pbVar6 - *piVar16" (identifier "uVar13") (= "=") (binary_expression "(int)pbVar6 - *piVar16" (cast_expression "(int)pbVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar6")) (- "-") (pointer_expression "*piVar16" (* "*") (identifier "piVar16")))) (; ";")) (expression_statement "pbVar10 = pbVar6 + -uVar13;" (assignment_expression "pbVar10 = pbVar6 + -uVar13" (identifier "pbVar10") (= "=") (binary_expression "pbVar6 + -uVar13" (identifier "pbVar6") (+ "+") (unary_expression "-uVar13" (- "-") (identifier "uVar13")))) (; ";")) (expression_statement "uVar17 = uVar13 - 1;" (assignment_expression "uVar17 = uVar13 - 1" (identifier "uVar17") (= "=") (binary_expression "uVar13 - 1" (identifier "uVar13") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;" (if "if") (parenthesized_expression "((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff))" (( "(") (binary_expression "(param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)" (parenthesized_expression "(param_1 <= pbVar10)" (( "(") (binary_expression "param_1 <= pbVar10" (identifier "param_1") (<= "<=") (identifier "pbVar10")) () ")")) (&& "&&") (parenthesized_expression "(bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)" (( "(") (comma_expression "bVar2 = uVar13 < 0x801, uVar17 < 0xbfff" (assignment_expression "bVar2 = uVar13 < 0x801" (identifier "bVar2") (= "=") (binary_expression "uVar13 < 0x801" (identifier "uVar13") (< "<") (number_literal "0x801"))) (, ",") (binary_expression "uVar17 < 0xbfff" (identifier "uVar17") (< "<") (number_literal "0xbfff"))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_000ae5a0:\n      pbVar10 = pbVar6 + 1;" (statement_identifier "LAB_000ae5a0") (: ":") (expression_statement "pbVar10 = pbVar6 + 1;" (assignment_expression "pbVar10 = pbVar6 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar6 + 1" (identifier "pbVar6") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "*piVar16 = (int)pbVar6;" (assignment_expression "*piVar16 = (int)pbVar6" (pointer_expression "*piVar16" (* "*") (identifier "piVar16")) (= "=") (cast_expression "(int)pbVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar6"))) (; ";")) (labeled_statement "joined_r0x000ae69c:\n      pbVar6 = pbVar10;" (statement_identifier "joined_r0x000ae69c") (: ":") (expression_statement "pbVar6 = pbVar10;" (assignment_expression "pbVar6 = pbVar10" (identifier "pbVar6") (= "=") (identifier "pbVar10")) (; ";"))) (if_statement "if (param_1 + param_2 + -0xd <= pbVar10) {\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }" (if "if") (parenthesized_expression "(param_1 + param_2 + -0xd <= pbVar10)" (( "(") (binary_expression "param_1 + param_2 + -0xd <= pbVar10" (binary_expression "param_1 + param_2 + -0xd" (binary_expression "param_1 + param_2" (identifier "param_1") (+ "+") (identifier "param_2")) (+ "+") (number_literal "-0xd")) (<= "<=") (identifier "pbVar10")) () ")")) (compound_statement "{\n        iVar9 = (int)pbVar4 - (int)param_3;\n        goto LAB_000ae5b8;\n      }" ({ "{") (expression_statement "iVar9 = (int)pbVar4 - (int)param_3;" (assignment_expression "iVar9 = (int)pbVar4 - (int)param_3" (identifier "iVar9") (= "=") (binary_expression "(int)pbVar4 - (int)param_3" (cast_expression "(int)pbVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar4")) (- "-") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")))) (; ";")) (goto_statement "goto LAB_000ae5b8;" (goto "goto") (statement_identifier "LAB_000ae5b8") (; ";")) (} "}"))) (} "}"))) (if_statement "if ((!bVar2) && (pbVar10[3] != uVar18)) {\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }" (if "if") (parenthesized_expression "((!bVar2) && (pbVar10[3] != uVar18))" (( "(") (binary_expression "(!bVar2) && (pbVar10[3] != uVar18)" (parenthesized_expression "(!bVar2)" (( "(") (unary_expression "!bVar2" (! "!") (identifier "bVar2")) () ")")) (&& "&&") (parenthesized_expression "(pbVar10[3] != uVar18)" (( "(") (binary_expression "pbVar10[3] != uVar18" (subscript_expression "pbVar10[3]" (identifier "pbVar10") ([ "[") (number_literal "3") (] "]")) (!= "!=") (identifier "uVar18")) () ")"))) () ")")) (compound_statement "{\n      piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);\n      uVar13 = (int)pbVar6 - *piVar16;\n      pbVar10 = pbVar6 + -uVar13;\n      uVar17 = uVar13 - 1;\n      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }\n      goto LAB_000ae5a0;\n    }" ({ "{") (expression_statement "piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);" (assignment_expression "piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4)" (identifier "piVar16") (= "=") (cast_expression "(int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4)" (( "(") (binary_expression "param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4" (identifier "param_5") (+ "+") (binary_expression "(uVar3 & 0x7ff ^ 0x401f) * 4" (parenthesized_expression "(uVar3 & 0x7ff ^ 0x401f)" (( "(") (binary_expression "uVar3 & 0x7ff ^ 0x401f" (binary_expression "uVar3 & 0x7ff" (identifier "uVar3") (& "&") (number_literal "0x7ff")) (^ "^") (number_literal "0x401f")) () ")")) (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "uVar13 = (int)pbVar6 - *piVar16;" (assignment_expression "uVar13 = (int)pbVar6 - *piVar16" (identifier "uVar13") (= "=") (binary_expression "(int)pbVar6 - *piVar16" (cast_expression "(int)pbVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar6")) (- "-") (pointer_expression "*piVar16" (* "*") (identifier "piVar16")))) (; ";")) (expression_statement "pbVar10 = pbVar6 + -uVar13;" (assignment_expression "pbVar10 = pbVar6 + -uVar13" (identifier "pbVar10") (= "=") (binary_expression "pbVar6 + -uVar13" (identifier "pbVar6") (+ "+") (unary_expression "-uVar13" (- "-") (identifier "uVar13")))) (; ";")) (expression_statement "uVar17 = uVar13 - 1;" (assignment_expression "uVar17 = uVar13 - 1" (identifier "uVar17") (= "=") (binary_expression "uVar13 - 1" (identifier "uVar13") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }" (if "if") (parenthesized_expression "((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff))" (( "(") (binary_expression "(param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)" (parenthesized_expression "(param_1 <= pbVar10)" (( "(") (binary_expression "param_1 <= pbVar10" (identifier "param_1") (<= "<=") (identifier "pbVar10")) () ")")) (&& "&&") (parenthesized_expression "(bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)" (( "(") (comma_expression "bVar2 = uVar13 < 0x801, uVar17 < 0xbfff" (assignment_expression "bVar2 = uVar13 < 0x801" (identifier "bVar2") (= "=") (binary_expression "uVar13 < 0x801" (identifier "uVar13") (< "<") (number_literal "0x801"))) (, ",") (binary_expression "uVar17 < 0xbfff" (identifier "uVar17") (< "<") (number_literal "0xbfff"))) () ")"))) () ")")) (compound_statement "{\n        if (bVar2) goto LAB_000ae5f4;\n        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;\n        bVar1 = pbVar10[1];\n        goto LAB_000ae604;\n      }" ({ "{") (if_statement "if (bVar2) goto LAB_000ae5f4;" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (goto_statement "goto LAB_000ae5f4;" (goto "goto") (statement_identifier "LAB_000ae5f4") (; ";"))) (if_statement "if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;" (if "if") (parenthesized_expression "((pbVar10[3] != uVar18) || (*pbVar10 != uVar15))" (( "(") (binary_expression "(pbVar10[3] != uVar18) || (*pbVar10 != uVar15)" (parenthesized_expression "(pbVar10[3] != uVar18)" (( "(") (binary_expression "pbVar10[3] != uVar18" (subscript_expression "pbVar10[3]" (identifier "pbVar10") ([ "[") (number_literal "3") (] "]")) (!= "!=") (identifier "uVar18")) () ")")) (|| "||") (parenthesized_expression "(*pbVar10 != uVar15)" (( "(") (binary_expression "*pbVar10 != uVar15" (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")) (!= "!=") (identifier "uVar15")) () ")"))) () ")")) (goto_statement "goto LAB_000ae5a0;" (goto "goto") (statement_identifier "LAB_000ae5a0") (; ";"))) (expression_statement "bVar1 = pbVar10[1];" (assignment_expression "bVar1 = pbVar10[1]" (identifier "bVar1") (= "=") (subscript_expression "pbVar10[1]" (identifier "pbVar10") ([ "[") (number_literal "1") (] "]"))) (; ";")) (goto_statement "goto LAB_000ae604;" (goto "goto") (statement_identifier "LAB_000ae604") (; ";")) (} "}"))) (goto_statement "goto LAB_000ae5a0;" (goto "goto") (statement_identifier "LAB_000ae5a0") (; ";")) (} "}"))) (labeled_statement "LAB_000ae5f4:\n    if (*pbVar10 != uVar15) goto LAB_000ae5a0;" (statement_identifier "LAB_000ae5f4") (: ":") (if_statement "if (*pbVar10 != uVar15) goto LAB_000ae5a0;" (if "if") (parenthesized_expression "(*pbVar10 != uVar15)" (( "(") (binary_expression "*pbVar10 != uVar15" (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")) (!= "!=") (identifier "uVar15")) () ")")) (goto_statement "goto LAB_000ae5a0;" (goto "goto") (statement_identifier "LAB_000ae5a0") (; ";")))) (expression_statement "bVar1 = pbVar10[1];" (assignment_expression "bVar1 = pbVar10[1]" (identifier "bVar1") (= "=") (subscript_expression "pbVar10[1]" (identifier "pbVar10") ([ "[") (number_literal "1") (] "]"))) (; ";")) (labeled_statement "LAB_000ae604:\n    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;" (statement_identifier "LAB_000ae604") (: ":") (if_statement "if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))\n    goto LAB_000ae5a0;" (if "if") (parenthesized_expression "(((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))" (( "(") (binary_expression "((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2])" (parenthesized_expression "((uint)bVar1 != (uint)pbVar6[1])" (( "(") (binary_expression "(uint)bVar1 != (uint)pbVar6[1]" (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1")) (!= "!=") (cast_expression "(uint)pbVar6[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar6[1]" (identifier "pbVar6") ([ "[") (number_literal "1") (] "]")))) () ")")) (|| "||") (parenthesized_expression "((uint)pbVar10[2] != (uint)pbVar6[2])" (( "(") (binary_expression "(uint)pbVar10[2] != (uint)pbVar6[2]" (cast_expression "(uint)pbVar10[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar10[2]" (identifier "pbVar10") ([ "[") (number_literal "2") (] "]"))) (!= "!=") (cast_expression "(uint)pbVar6[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar6[2]" (identifier "pbVar6") ([ "[") (number_literal "2") (] "]")))) () ")"))) () ")")) (goto_statement "goto LAB_000ae5a0;" (goto "goto") (statement_identifier "LAB_000ae5a0") (; ";")))) (expression_statement "*piVar16 = (int)pbVar6;" (assignment_expression "*piVar16 = (int)pbVar6" (pointer_expression "*piVar16" (* "*") (identifier "piVar16")) (= "=") (cast_expression "(int)pbVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar6"))) (; ";")) (expression_statement "pbVar12 = pbVar5;" (assignment_expression "pbVar12 = pbVar5" (identifier "pbVar12") (= "=") (identifier "pbVar5")) (; ";")) (expression_statement "pbVar11 = pbVar4;" (assignment_expression "pbVar11 = pbVar4" (identifier "pbVar11") (= "=") (identifier "pbVar4")) (; ";")) (if_statement "if (pbVar6 != pbVar5) {\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }" (if "if") (parenthesized_expression "(pbVar6 != pbVar5)" (( "(") (binary_expression "pbVar6 != pbVar5" (identifier "pbVar6") (!= "!=") (identifier "pbVar5")) () ")")) (compound_statement "{\n      uVar3 = (int)pbVar6 - (int)pbVar5;\n      if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }\n      pbVar11 = pbVar14 + uVar3;\n      do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);\n    }" ({ "{") (expression_statement "uVar3 = (int)pbVar6 - (int)pbVar5;" (assignment_expression "uVar3 = (int)pbVar6 - (int)pbVar5" (identifier "uVar3") (= "=") (binary_expression "(int)pbVar6 - (int)pbVar5" (cast_expression "(int)pbVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar6")) (- "-") (cast_expression "(int)pbVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar5")))) (; ";")) (if_statement "if (uVar3 < 4) {\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }\n      else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }" (if "if") (parenthesized_expression "(uVar3 < 4)" (( "(") (binary_expression "uVar3 < 4" (identifier "uVar3") (< "<") (number_literal "4")) () ")")) (compound_statement "{\n        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];\n        pbVar14 = pbVar4;\n      }" ({ "{") (expression_statement "pbVar4[-2] = (byte)uVar3 | pbVar4[-2];" (assignment_expression "pbVar4[-2] = (byte)uVar3 | pbVar4[-2]" (subscript_expression "pbVar4[-2]" (identifier "pbVar4") ([ "[") (number_literal "-2") (] "]")) (= "=") (binary_expression "(byte)uVar3 | pbVar4[-2]" (cast_expression "(byte)uVar3" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar3")) (| "|") (subscript_expression "pbVar4[-2]" (identifier "pbVar4") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "pbVar14 = pbVar4;" (assignment_expression "pbVar14 = pbVar4" (identifier "pbVar14") (= "=") (identifier "pbVar4")) (; ";")) (} "}")) (else_clause "else {\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }" (else "else") (compound_statement "{\n        pbVar14 = pbVar4 + 1;\n        if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }\n      }" ({ "{") (expression_statement "pbVar14 = pbVar4 + 1;" (assignment_expression "pbVar14 = pbVar4 + 1" (identifier "pbVar14") (= "=") (binary_expression "pbVar4 + 1" (identifier "pbVar4") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar3 < 0x13) {\n          *pbVar4 = (byte)uVar3 - 3;\n        }\n        else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }" (if "if") (parenthesized_expression "(uVar3 < 0x13)" (( "(") (binary_expression "uVar3 < 0x13" (identifier "uVar3") (< "<") (number_literal "0x13")) () ")")) (compound_statement "{\n          *pbVar4 = (byte)uVar3 - 3;\n        }" ({ "{") (expression_statement "*pbVar4 = (byte)uVar3 - 3;" (assignment_expression "*pbVar4 = (byte)uVar3 - 3" (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4")) (= "=") (binary_expression "(byte)uVar3 - 3" (cast_expression "(byte)uVar3" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar3")) (- "-") (number_literal "3"))) (; ";")) (} "}")) (else_clause "else {\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }" (else "else") (compound_statement "{\n          uVar15 = uVar3 - 0x12;\n          *pbVar4 = 0;\n          pbVar12 = pbVar4 + 2;\n          pbVar11 = pbVar14;\n          if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }\n          pbVar14 = pbVar4 + 2;\n          *pbVar11 = (byte)uVar15;\n        }" ({ "{") (expression_statement "uVar15 = uVar3 - 0x12;" (assignment_expression "uVar15 = uVar3 - 0x12" (identifier "uVar15") (= "=") (binary_expression "uVar3 - 0x12" (identifier "uVar3") (- "-") (number_literal "0x12"))) (; ";")) (expression_statement "*pbVar4 = 0;" (assignment_expression "*pbVar4 = 0" (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar12 = pbVar4 + 2;" (assignment_expression "pbVar12 = pbVar4 + 2" (identifier "pbVar12") (= "=") (binary_expression "pbVar4 + 2" (identifier "pbVar4") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "pbVar11 = pbVar14;" (assignment_expression "pbVar11 = pbVar14" (identifier "pbVar11") (= "=") (identifier "pbVar14")) (; ";")) (if_statement "if (0xff < uVar15) {\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }" (if "if") (parenthesized_expression "(0xff < uVar15)" (( "(") (binary_expression "0xff < uVar15" (number_literal "0xff") (< "<") (identifier "uVar15")) () ")")) (compound_statement "{\n            pbVar4[1] = 0;\n            pbVar4 = pbVar14;\n            pbVar11 = pbVar12;\n            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }\n          }" ({ "{") (expression_statement "pbVar4[1] = 0;" (assignment_expression "pbVar4[1] = 0" (subscript_expression "pbVar4[1]" (identifier "pbVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar4 = pbVar14;" (assignment_expression "pbVar4 = pbVar14" (identifier "pbVar4") (= "=") (identifier "pbVar14")) (; ";")) (expression_statement "pbVar11 = pbVar12;" (assignment_expression "pbVar11 = pbVar12" (identifier "pbVar11") (= "=") (identifier "pbVar12")) (; ";")) (for_statement "for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }" (for "for") (( "(") (assignment_expression "uVar15 = uVar3 - 0x111" (identifier "uVar15") (= "=") (binary_expression "uVar3 - 0x111" (identifier "uVar3") (- "-") (number_literal "0x111"))) (; ";") (binary_expression "0xff < uVar15" (number_literal "0xff") (< "<") (identifier "uVar15")) (; ";") (assignment_expression "uVar15 = uVar15 - 0xff" (identifier "uVar15") (= "=") (binary_expression "uVar15 - 0xff" (identifier "uVar15") (- "-") (number_literal "0xff"))) () ")") (compound_statement "{\n              *pbVar11 = 0;\n              pbVar4 = pbVar11;\n              pbVar11 = pbVar11 + 1;\n            }" ({ "{") (expression_statement "*pbVar11 = 0;" (assignment_expression "*pbVar11 = 0" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar4 = pbVar11;" (assignment_expression "pbVar4 = pbVar11" (identifier "pbVar4") (= "=") (identifier "pbVar11")) (; ";")) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + 1" (identifier "pbVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "pbVar14 = pbVar4 + 2;" (assignment_expression "pbVar14 = pbVar4 + 2" (identifier "pbVar14") (= "=") (binary_expression "pbVar4 + 2" (identifier "pbVar4") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "*pbVar11 = (byte)uVar15;" (assignment_expression "*pbVar11 = (byte)uVar15" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (= "=") (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15"))) (; ";")) (} "}")))) (} "}")))) (expression_statement "pbVar11 = pbVar14 + uVar3;" (assignment_expression "pbVar11 = pbVar14 + uVar3" (identifier "pbVar11") (= "=") (binary_expression "pbVar14 + uVar3" (identifier "pbVar14") (+ "+") (identifier "uVar3"))) (; ";")) (do_statement "do {\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      } while (pbVar4 != pbVar11);" (do "do") (compound_statement "{\n        pbVar4 = pbVar14 + 1;\n        *pbVar14 = *pbVar5;\n        pbVar14 = pbVar4;\n        pbVar12 = pbVar6;\n        pbVar5 = pbVar5 + 1;\n      }" ({ "{") (expression_statement "pbVar4 = pbVar14 + 1;" (assignment_expression "pbVar4 = pbVar14 + 1" (identifier "pbVar4") (= "=") (binary_expression "pbVar14 + 1" (identifier "pbVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pbVar14 = *pbVar5;" (assignment_expression "*pbVar14 = *pbVar5" (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (= "=") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5"))) (; ";")) (expression_statement "pbVar14 = pbVar4;" (assignment_expression "pbVar14 = pbVar4" (identifier "pbVar14") (= "=") (identifier "pbVar4")) (; ";")) (expression_statement "pbVar12 = pbVar6;" (assignment_expression "pbVar12 = pbVar6" (identifier "pbVar12") (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + 1" (identifier "pbVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar4 != pbVar11)" (( "(") (binary_expression "pbVar4 != pbVar11" (identifier "pbVar4") (!= "!=") (identifier "pbVar11")) () ")")) (; ";")) (} "}"))) (expression_statement "pbVar5 = pbVar6 + 4;" (assignment_expression "pbVar5 = pbVar6 + 4" (identifier "pbVar5") (= "=") (binary_expression "pbVar6 + 4" (identifier "pbVar6") (+ "+") (number_literal "4"))) (; ";")) (if_statement "if (pbVar10[3] != pbVar6[3]) {\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }" (if "if") (parenthesized_expression "(pbVar10[3] != pbVar6[3])" (( "(") (binary_expression "pbVar10[3] != pbVar6[3]" (subscript_expression "pbVar10[3]" (identifier "pbVar10") ([ "[") (number_literal "3") (] "]")) (!= "!=") (subscript_expression "pbVar6[3]" (identifier "pbVar6") ([ "[") (number_literal "3") (] "]"))) () ")")) (compound_statement "{\nLAB_000ae668:\n      pbVar5 = pbVar5 + -1;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\nLAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);\n      pbVar4 = pbVar11 + 2;\n      pbVar11[1] = (byte)(uVar17 >> 3);\n      pbVar10 = pbVar5;\n      goto joined_r0x000ae69c;\n    }" ({ "{") (labeled_statement "LAB_000ae668:\n      pbVar5 = pbVar5 + -1;" (statement_identifier "LAB_000ae668") (: ":") (expression_statement "pbVar5 = pbVar5 + -1;" (assignment_expression "pbVar5 = pbVar5 + -1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + -1" (identifier "pbVar5") (+ "+") (number_literal "-1"))) (; ";"))) (expression_statement "cVar7 = (char)((int)pbVar5 - (int)pbVar12);" (assignment_expression "cVar7 = (char)((int)pbVar5 - (int)pbVar12)" (identifier "cVar7") (= "=") (cast_expression "(char)((int)pbVar5 - (int)pbVar12)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((int)pbVar5 - (int)pbVar12)" (( "(") (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar5")) (- "-") (cast_expression "(int)pbVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar12"))) () ")")))) (; ";")) (if_statement "if (!bVar2) {\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }" (if "if") (parenthesized_expression "(!bVar2)" (( "(") (unary_expression "!bVar2" (! "!") (identifier "bVar2")) () ")")) (compound_statement "{\nLAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }\n        goto LAB_000ae83c;\n      }" ({ "{") (labeled_statement "LAB_000ae900:\n        if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }" (statement_identifier "LAB_000ae900") (: ":") (if_statement "if (uVar13 < 0x4001) {\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }\n        else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }" (if "if") (parenthesized_expression "(uVar13 < 0x4001)" (( "(") (binary_expression "uVar13 < 0x4001" (identifier "uVar13") (< "<") (number_literal "0x4001")) () ")")) (compound_statement "{\n          *pbVar11 = cVar7 - 2U | 0x20;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (byte)(uVar17 << 2);\n          pbVar11[2] = (byte)(uVar17 >> 6);\n        }" ({ "{") (expression_statement "*pbVar11 = cVar7 - 2U | 0x20;" (assignment_expression "*pbVar11 = cVar7 - 2U | 0x20" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (= "=") (binary_expression "cVar7 - 2U | 0x20" (binary_expression "cVar7 - 2U" (identifier "cVar7") (- "-") (number_literal "2U")) (| "|") (number_literal "0x20"))) (; ";")) (expression_statement "pbVar4 = pbVar11 + 3;" (assignment_expression "pbVar4 = pbVar11 + 3" (identifier "pbVar4") (= "=") (binary_expression "pbVar11 + 3" (identifier "pbVar11") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "pbVar11[1] = (byte)(uVar17 << 2);" (assignment_expression "pbVar11[1] = (byte)(uVar17 << 2)" (subscript_expression "pbVar11[1]" (identifier "pbVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (call_expression "(byte)(uVar17 << 2)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar17 << 2)" (( "(") (binary_expression "uVar17 << 2" (identifier "uVar17") (<< "<<") (number_literal "2")) () ")")))) (; ";")) (expression_statement "pbVar11[2] = (byte)(uVar17 >> 6);" (assignment_expression "pbVar11[2] = (byte)(uVar17 >> 6)" (subscript_expression "pbVar11[2]" (identifier "pbVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (call_expression "(byte)(uVar17 >> 6)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar17 >> 6)" (( "(") (binary_expression "uVar17 >> 6" (identifier "uVar17") (>> ">>") (number_literal "6")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }" (else "else") (compound_statement "{\n          uVar13 = uVar13 - 0x4000;\n          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;\n          pbVar4 = pbVar11 + 3;\n          pbVar11[1] = (char)uVar13 * '\x04';\n          pbVar11[2] = (byte)(uVar13 >> 6);\n        }" ({ "{") (expression_statement "uVar13 = uVar13 - 0x4000;" (assignment_expression "uVar13 = uVar13 - 0x4000" (identifier "uVar13") (= "=") (binary_expression "uVar13 - 0x4000" (identifier "uVar13") (- "-") (number_literal "0x4000"))) (; ";")) (expression_statement "*pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;" (assignment_expression "*pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (= "=") (binary_expression "cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10" (binary_expression "cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8" (binary_expression "cVar7 - 2U" (identifier "cVar7") (- "-") (number_literal "2U")) (| "|") (binary_expression "(byte)(uVar13 >> 0xb) & 8" (call_expression "(byte)(uVar13 >> 0xb)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar13 >> 0xb)" (( "(") (binary_expression "uVar13 >> 0xb" (identifier "uVar13") (>> ">>") (number_literal "0xb")) () ")"))) (& "&") (number_literal "8"))) (| "|") (number_literal "0x10"))) (; ";")) (expression_statement "pbVar4 = pbVar11 + 3;" (assignment_expression "pbVar4 = pbVar11 + 3" (identifier "pbVar4") (= "=") (binary_expression "pbVar11 + 3" (identifier "pbVar11") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "pbVar11[1] = (char)uVar13 * '\x04';" (assignment_expression "pbVar11[1] = (char)uVar13 * '\x04'" (subscript_expression "pbVar11[1]" (identifier "pbVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "(char)uVar13 * '\x04'" (cast_expression "(char)uVar13" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar13")) (* "*") (char_literal "'\x04'" (' "'") (escape_sequence "\x04") (' "'")))) (; ";")) (expression_statement "pbVar11[2] = (byte)(uVar13 >> 6);" (assignment_expression "pbVar11[2] = (byte)(uVar13 >> 6)" (subscript_expression "pbVar11[2]" (identifier "pbVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (call_expression "(byte)(uVar13 >> 6)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar13 >> 6)" (( "(") (binary_expression "uVar13 >> 6" (identifier "uVar13") (>> ">>") (number_literal "6")) () ")")))) (; ";")) (} "}"))))) (goto_statement "goto LAB_000ae83c;" (goto "goto") (statement_identifier "LAB_000ae83c") (; ";")) (} "}"))) (expression_statement "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;" (assignment_expression "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (identifier "iVar9") (= "=") (binary_expression "((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (parenthesized_expression "((int)pbVar5 - (int)pbVar12 & 0xffU)" (( "(") (binary_expression "(int)pbVar5 - (int)pbVar12 & 0xffU" (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar5")) (- "-") (cast_expression "(int)pbVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar12"))) (& "&") (number_literal "0xffU")) () ")")) (- "-") (number_literal "1"))) (; ";")) (labeled_statement "LAB_000ae67c:\n      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);" (statement_identifier "LAB_000ae67c") (: ":") (expression_statement "*pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);" (assignment_expression "*pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2)" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (= "=") (binary_expression "(byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2)" (call_expression "(byte)(iVar9 << 5)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(iVar9 << 5)" (( "(") (binary_expression "iVar9 << 5" (identifier "iVar9") (<< "<<") (number_literal "5")) () ")"))) (| "|") (call_expression "(byte)((uVar17 & 7) << 2)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uVar17 & 7) << 2)" (( "(") (binary_expression "(uVar17 & 7) << 2" (parenthesized_expression "(uVar17 & 7)" (( "(") (binary_expression "uVar17 & 7" (identifier "uVar17") (& "&") (number_literal "7")) () ")")) (<< "<<") (number_literal "2")) () ")"))))) (; ";"))) (expression_statement "pbVar4 = pbVar11 + 2;" (assignment_expression "pbVar4 = pbVar11 + 2" (identifier "pbVar4") (= "=") (binary_expression "pbVar11 + 2" (identifier "pbVar11") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "pbVar11[1] = (byte)(uVar17 >> 3);" (assignment_expression "pbVar11[1] = (byte)(uVar17 >> 3)" (subscript_expression "pbVar11[1]" (identifier "pbVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (call_expression "(byte)(uVar17 >> 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar17 >> 3)" (( "(") (binary_expression "uVar17 >> 3" (identifier "uVar17") (>> ">>") (number_literal "3")) () ")")))) (; ";")) (expression_statement "pbVar10 = pbVar5;" (assignment_expression "pbVar10 = pbVar5" (identifier "pbVar10") (= "=") (identifier "pbVar5")) (; ";")) (goto_statement "goto joined_r0x000ae69c;" (goto "goto") (statement_identifier "joined_r0x000ae69c") (; ";")) (} "}"))) (if_statement "if (pbVar10[4] != pbVar6[4]) {\n      pbVar5 = pbVar6 + 4;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" (if "if") (parenthesized_expression "(pbVar10[4] != pbVar6[4])" (( "(") (binary_expression "pbVar10[4] != pbVar6[4]" (subscript_expression "pbVar10[4]" (identifier "pbVar10") ([ "[") (number_literal "4") (] "]")) (!= "!=") (subscript_expression "pbVar6[4]" (identifier "pbVar6") ([ "[") (number_literal "4") (] "]"))) () ")")) (compound_statement "{\n      pbVar5 = pbVar6 + 4;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" ({ "{") (expression_statement "pbVar5 = pbVar6 + 4;" (assignment_expression "pbVar5 = pbVar6 + 4" (identifier "pbVar5") (= "=") (binary_expression "pbVar6 + 4" (identifier "pbVar6") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "cVar7 = (char)((int)pbVar5 - (int)pbVar12);" (assignment_expression "cVar7 = (char)((int)pbVar5 - (int)pbVar12)" (identifier "cVar7") (= "=") (cast_expression "(char)((int)pbVar5 - (int)pbVar12)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((int)pbVar5 - (int)pbVar12)" (( "(") (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar5")) (- "-") (cast_expression "(int)pbVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar12"))) () ")")))) (; ";")) (if_statement "if (!bVar2) goto LAB_000ae900;" (if "if") (parenthesized_expression "(!bVar2)" (( "(") (unary_expression "!bVar2" (! "!") (identifier "bVar2")) () ")")) (goto_statement "goto LAB_000ae900;" (goto "goto") (statement_identifier "LAB_000ae900") (; ";"))) (expression_statement "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;" (assignment_expression "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (identifier "iVar9") (= "=") (binary_expression "((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (parenthesized_expression "((int)pbVar5 - (int)pbVar12 & 0xffU)" (( "(") (binary_expression "(int)pbVar5 - (int)pbVar12 & 0xffU" (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar5")) (- "-") (cast_expression "(int)pbVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar12"))) (& "&") (number_literal "0xffU")) () ")")) (- "-") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_000ae67c;" (goto "goto") (statement_identifier "LAB_000ae67c") (; ";")) (} "}"))) (if_statement "if (pbVar10[5] != pbVar6[5]) {\n      pbVar5 = pbVar6 + 5;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" (if "if") (parenthesized_expression "(pbVar10[5] != pbVar6[5])" (( "(") (binary_expression "pbVar10[5] != pbVar6[5]" (subscript_expression "pbVar10[5]" (identifier "pbVar10") ([ "[") (number_literal "5") (] "]")) (!= "!=") (subscript_expression "pbVar6[5]" (identifier "pbVar6") ([ "[") (number_literal "5") (] "]"))) () ")")) (compound_statement "{\n      pbVar5 = pbVar6 + 5;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" ({ "{") (expression_statement "pbVar5 = pbVar6 + 5;" (assignment_expression "pbVar5 = pbVar6 + 5" (identifier "pbVar5") (= "=") (binary_expression "pbVar6 + 5" (identifier "pbVar6") (+ "+") (number_literal "5"))) (; ";")) (expression_statement "cVar7 = (char)((int)pbVar5 - (int)pbVar12);" (assignment_expression "cVar7 = (char)((int)pbVar5 - (int)pbVar12)" (identifier "cVar7") (= "=") (cast_expression "(char)((int)pbVar5 - (int)pbVar12)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((int)pbVar5 - (int)pbVar12)" (( "(") (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar5")) (- "-") (cast_expression "(int)pbVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar12"))) () ")")))) (; ";")) (if_statement "if (!bVar2) goto LAB_000ae900;" (if "if") (parenthesized_expression "(!bVar2)" (( "(") (unary_expression "!bVar2" (! "!") (identifier "bVar2")) () ")")) (goto_statement "goto LAB_000ae900;" (goto "goto") (statement_identifier "LAB_000ae900") (; ";"))) (expression_statement "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;" (assignment_expression "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (identifier "iVar9") (= "=") (binary_expression "((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (parenthesized_expression "((int)pbVar5 - (int)pbVar12 & 0xffU)" (( "(") (binary_expression "(int)pbVar5 - (int)pbVar12 & 0xffU" (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar5")) (- "-") (cast_expression "(int)pbVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar12"))) (& "&") (number_literal "0xffU")) () ")")) (- "-") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_000ae67c;" (goto "goto") (statement_identifier "LAB_000ae67c") (; ";")) (} "}"))) (if_statement "if (pbVar10[6] != pbVar6[6]) {\n      pbVar5 = pbVar6 + 6;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" (if "if") (parenthesized_expression "(pbVar10[6] != pbVar6[6])" (( "(") (binary_expression "pbVar10[6] != pbVar6[6]" (subscript_expression "pbVar10[6]" (identifier "pbVar10") ([ "[") (number_literal "6") (] "]")) (!= "!=") (subscript_expression "pbVar6[6]" (identifier "pbVar6") ([ "[") (number_literal "6") (] "]"))) () ")")) (compound_statement "{\n      pbVar5 = pbVar6 + 6;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" ({ "{") (expression_statement "pbVar5 = pbVar6 + 6;" (assignment_expression "pbVar5 = pbVar6 + 6" (identifier "pbVar5") (= "=") (binary_expression "pbVar6 + 6" (identifier "pbVar6") (+ "+") (number_literal "6"))) (; ";")) (expression_statement "cVar7 = (char)((int)pbVar5 - (int)pbVar12);" (assignment_expression "cVar7 = (char)((int)pbVar5 - (int)pbVar12)" (identifier "cVar7") (= "=") (cast_expression "(char)((int)pbVar5 - (int)pbVar12)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((int)pbVar5 - (int)pbVar12)" (( "(") (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar5")) (- "-") (cast_expression "(int)pbVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar12"))) () ")")))) (; ";")) (if_statement "if (!bVar2) goto LAB_000ae900;" (if "if") (parenthesized_expression "(!bVar2)" (( "(") (unary_expression "!bVar2" (! "!") (identifier "bVar2")) () ")")) (goto_statement "goto LAB_000ae900;" (goto "goto") (statement_identifier "LAB_000ae900") (; ";"))) (expression_statement "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;" (assignment_expression "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (identifier "iVar9") (= "=") (binary_expression "((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (parenthesized_expression "((int)pbVar5 - (int)pbVar12 & 0xffU)" (( "(") (binary_expression "(int)pbVar5 - (int)pbVar12 & 0xffU" (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar5")) (- "-") (cast_expression "(int)pbVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar12"))) (& "&") (number_literal "0xffU")) () ")")) (- "-") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_000ae67c;" (goto "goto") (statement_identifier "LAB_000ae67c") (; ";")) (} "}"))) (if_statement "if (pbVar10[7] != pbVar6[7]) {\n      pbVar5 = pbVar6 + 7;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" (if "if") (parenthesized_expression "(pbVar10[7] != pbVar6[7])" (( "(") (binary_expression "pbVar10[7] != pbVar6[7]" (subscript_expression "pbVar10[7]" (identifier "pbVar10") ([ "[") (number_literal "7") (] "]")) (!= "!=") (subscript_expression "pbVar6[7]" (identifier "pbVar6") ([ "[") (number_literal "7") (] "]"))) () ")")) (compound_statement "{\n      pbVar5 = pbVar6 + 7;\n      cVar7 = (char)((int)pbVar5 - (int)pbVar12);\n      if (!bVar2) goto LAB_000ae900;\n      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;\n      goto LAB_000ae67c;\n    }" ({ "{") (expression_statement "pbVar5 = pbVar6 + 7;" (assignment_expression "pbVar5 = pbVar6 + 7" (identifier "pbVar5") (= "=") (binary_expression "pbVar6 + 7" (identifier "pbVar6") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "cVar7 = (char)((int)pbVar5 - (int)pbVar12);" (assignment_expression "cVar7 = (char)((int)pbVar5 - (int)pbVar12)" (identifier "cVar7") (= "=") (cast_expression "(char)((int)pbVar5 - (int)pbVar12)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((int)pbVar5 - (int)pbVar12)" (( "(") (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar5")) (- "-") (cast_expression "(int)pbVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar12"))) () ")")))) (; ";")) (if_statement "if (!bVar2) goto LAB_000ae900;" (if "if") (parenthesized_expression "(!bVar2)" (( "(") (unary_expression "!bVar2" (! "!") (identifier "bVar2")) () ")")) (goto_statement "goto LAB_000ae900;" (goto "goto") (statement_identifier "LAB_000ae900") (; ";"))) (expression_statement "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;" (assignment_expression "iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (identifier "iVar9") (= "=") (binary_expression "((int)pbVar5 - (int)pbVar12 & 0xffU) - 1" (parenthesized_expression "((int)pbVar5 - (int)pbVar12 & 0xffU)" (( "(") (binary_expression "(int)pbVar5 - (int)pbVar12 & 0xffU" (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar5")) (- "-") (cast_expression "(int)pbVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar12"))) (& "&") (number_literal "0xffU")) () ")")) (- "-") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_000ae67c;" (goto "goto") (statement_identifier "LAB_000ae67c") (; ";")) (} "}"))) (expression_statement "pbVar5 = pbVar6 + 9;" (assignment_expression "pbVar5 = pbVar6 + 9" (identifier "pbVar5") (= "=") (binary_expression "pbVar6 + 9" (identifier "pbVar6") (+ "+") (number_literal "9"))) (; ";")) (if_statement "if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;" (if "if") (parenthesized_expression "(pbVar10[8] != pbVar6[8])" (( "(") (binary_expression "pbVar10[8] != pbVar6[8]" (subscript_expression "pbVar10[8]" (identifier "pbVar10") ([ "[") (number_literal "8") (] "]")) (!= "!=") (subscript_expression "pbVar6[8]" (identifier "pbVar6") ([ "[") (number_literal "8") (] "]"))) () ")")) (goto_statement "goto LAB_000ae668;" (goto "goto") (statement_identifier "LAB_000ae668") (; ";"))) (if_statement "if ((pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }" (if "if") (parenthesized_expression "((pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9]))" (( "(") (binary_expression "(pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])" (parenthesized_expression "(pbVar5 < pbVar8)" (( "(") (binary_expression "pbVar5 < pbVar8" (identifier "pbVar5") (< "<") (identifier "pbVar8")) () ")")) (&& "&&") (parenthesized_expression "(pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])" (( "(") (comma_expression "pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9]" (assignment_expression "pbVar4 = pbVar10 + 9" (identifier "pbVar4") (= "=") (binary_expression "pbVar10 + 9" (identifier "pbVar10") (+ "+") (number_literal "9"))) (, ",") (binary_expression "pbVar6[9] == pbVar10[9]" (subscript_expression "pbVar6[9]" (identifier "pbVar6") ([ "[") (number_literal "9") (] "]")) (== "==") (subscript_expression "pbVar10[9]" (identifier "pbVar10") ([ "[") (number_literal "9") (] "]")))) () ")"))) () ")")) (compound_statement "{\n      do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);\n    }" ({ "{") (do_statement "do {\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      } while (*pbVar4 == *pbVar5);" (do "do") (compound_statement "{\n        pbVar5 = pbVar5 + 1;\n        pbVar4 = pbVar4 + 1;\n        if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }\n      }" ({ "{") (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + 1" (identifier "pbVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" (identifier "pbVar4") (= "=") (binary_expression "pbVar4 + 1" (identifier "pbVar4") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (pbVar8 == pbVar5) {\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }" (if "if") (parenthesized_expression "(pbVar8 == pbVar5)" (( "(") (binary_expression "pbVar8 == pbVar5" (identifier "pbVar8") (== "==") (identifier "pbVar5")) () ")")) (compound_statement "{\n          uVar3 = (int)pbVar8 - (int)pbVar12;\n          pbVar5 = pbVar8;\n          goto joined_r0x000ae8f0;\n        }" ({ "{") (expression_statement "uVar3 = (int)pbVar8 - (int)pbVar12;" (assignment_expression "uVar3 = (int)pbVar8 - (int)pbVar12" (identifier "uVar3") (= "=") (binary_expression "(int)pbVar8 - (int)pbVar12" (cast_expression "(int)pbVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar8")) (- "-") (cast_expression "(int)pbVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar5 = pbVar8;" (assignment_expression "pbVar5 = pbVar8" (identifier "pbVar5") (= "=") (identifier "pbVar8")) (; ";")) (goto_statement "goto joined_r0x000ae8f0;" (goto "goto") (statement_identifier "joined_r0x000ae8f0") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(*pbVar4 == *pbVar5)" (( "(") (binary_expression "*pbVar4 == *pbVar5" (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4")) (== "==") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5"))) () ")")) (; ";")) (} "}"))) (expression_statement "uVar3 = (int)pbVar5 - (int)pbVar12;" (assignment_expression "uVar3 = (int)pbVar5 - (int)pbVar12" (identifier "uVar3") (= "=") (binary_expression "(int)pbVar5 - (int)pbVar12" (cast_expression "(int)pbVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar5")) (- "-") (cast_expression "(int)pbVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar12")))) (; ";")) (labeled_statement "joined_r0x000ae8f0:\n    if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }" (statement_identifier "joined_r0x000ae8f0") (: ":") (if_statement "if (uVar13 < 0x4001) {\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }\n    else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }" (if "if") (parenthesized_expression "(uVar13 < 0x4001)" (( "(") (binary_expression "uVar13 < 0x4001" (identifier "uVar13") (< "<") (number_literal "0x4001")) () ")")) (compound_statement "{\n      if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }\n    }" ({ "{") (if_statement "if (uVar3 < 0x22) {\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }\n      else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }" (if "if") (parenthesized_expression "(uVar3 < 0x22)" (( "(") (binary_expression "uVar3 < 0x22" (identifier "uVar3") (< "<") (number_literal "0x22")) () ")")) (compound_statement "{\n        *pbVar11 = (char)uVar3 - 2U | 0x20;\n        pbVar4 = pbVar11 + 3;\n        pbVar11[1] = (byte)(uVar17 << 2);\n        pbVar11[2] = (byte)(uVar17 >> 6);\n      }" ({ "{") (expression_statement "*pbVar11 = (char)uVar3 - 2U | 0x20;" (assignment_expression "*pbVar11 = (char)uVar3 - 2U | 0x20" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (= "=") (binary_expression "(char)uVar3 - 2U | 0x20" (binary_expression "(char)uVar3 - 2U" (cast_expression "(char)uVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar3")) (- "-") (number_literal "2U")) (| "|") (number_literal "0x20"))) (; ";")) (expression_statement "pbVar4 = pbVar11 + 3;" (assignment_expression "pbVar4 = pbVar11 + 3" (identifier "pbVar4") (= "=") (binary_expression "pbVar11 + 3" (identifier "pbVar11") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "pbVar11[1] = (byte)(uVar17 << 2);" (assignment_expression "pbVar11[1] = (byte)(uVar17 << 2)" (subscript_expression "pbVar11[1]" (identifier "pbVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (call_expression "(byte)(uVar17 << 2)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar17 << 2)" (( "(") (binary_expression "uVar17 << 2" (identifier "uVar17") (<< "<<") (number_literal "2")) () ")")))) (; ";")) (expression_statement "pbVar11[2] = (byte)(uVar17 >> 6);" (assignment_expression "pbVar11[2] = (byte)(uVar17 >> 6)" (subscript_expression "pbVar11[2]" (identifier "pbVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (call_expression "(byte)(uVar17 >> 6)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar17 >> 6)" (( "(") (binary_expression "uVar17 >> 6" (identifier "uVar17") (>> ">>") (number_literal "6")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }" (else "else") (compound_statement "{\n        uVar3 = uVar3 - 0x21;\n        *pbVar11 = 0x20;\njoined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }\n        *pbVar4 = (byte)uVar3;\n        pbVar4 = pbVar11 + 4;\n        pbVar11[2] = (byte)(uVar17 << 2);\n        pbVar11[3] = (byte)(uVar17 >> 6);\n      }" ({ "{") (expression_statement "uVar3 = uVar3 - 0x21;" (assignment_expression "uVar3 = uVar3 - 0x21" (identifier "uVar3") (= "=") (binary_expression "uVar3 - 0x21" (identifier "uVar3") (- "-") (number_literal "0x21"))) (; ";")) (expression_statement "*pbVar11 = 0x20;" (assignment_expression "*pbVar11 = 0x20" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (= "=") (number_literal "0x20")) (; ";")) (labeled_statement "joined_r0x000ae874:\n        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }" (statement_identifier "joined_r0x000ae874") (: ":") (for_statement "for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }" (for "for") (( "(") (; ";") (comma_expression "pbVar4 = pbVar11 + 1, 0xff < uVar3" (assignment_expression "pbVar4 = pbVar11 + 1" (identifier "pbVar4") (= "=") (binary_expression "pbVar11 + 1" (identifier "pbVar11") (+ "+") (number_literal "1"))) (, ",") (binary_expression "0xff < uVar3" (number_literal "0xff") (< "<") (identifier "uVar3"))) (; ";") (assignment_expression "uVar3 = uVar3 - 0xff" (identifier "uVar3") (= "=") (binary_expression "uVar3 - 0xff" (identifier "uVar3") (- "-") (number_literal "0xff"))) () ")") (compound_statement "{\n          *pbVar4 = 0;\n          pbVar11 = pbVar4;\n        }" ({ "{") (expression_statement "*pbVar4 = 0;" (assignment_expression "*pbVar4 = 0" (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar11 = pbVar4;" (assignment_expression "pbVar11 = pbVar4" (identifier "pbVar11") (= "=") (identifier "pbVar4")) (; ";")) (} "}")))) (expression_statement "*pbVar4 = (byte)uVar3;" (assignment_expression "*pbVar4 = (byte)uVar3" (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4")) (= "=") (cast_expression "(byte)uVar3" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar3"))) (; ";")) (expression_statement "pbVar4 = pbVar11 + 4;" (assignment_expression "pbVar4 = pbVar11 + 4" (identifier "pbVar4") (= "=") (binary_expression "pbVar11 + 4" (identifier "pbVar11") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "pbVar11[2] = (byte)(uVar17 << 2);" (assignment_expression "pbVar11[2] = (byte)(uVar17 << 2)" (subscript_expression "pbVar11[2]" (identifier "pbVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (call_expression "(byte)(uVar17 << 2)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar17 << 2)" (( "(") (binary_expression "uVar17 << 2" (identifier "uVar17") (<< "<<") (number_literal "2")) () ")")))) (; ";")) (expression_statement "pbVar11[3] = (byte)(uVar17 >> 6);" (assignment_expression "pbVar11[3] = (byte)(uVar17 >> 6)" (subscript_expression "pbVar11[3]" (identifier "pbVar11") ([ "[") (number_literal "3") (] "]")) (= "=") (call_expression "(byte)(uVar17 >> 6)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar17 >> 6)" (( "(") (binary_expression "uVar17 >> 6" (identifier "uVar17") (>> ">>") (number_literal "6")) () ")")))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }" (else "else") (compound_statement "{\n      uVar17 = uVar13 - 0x4000;\n      bVar1 = (byte)(uVar17 >> 0xb) & 8;\n      if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }\n      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;\n      pbVar4 = pbVar11 + 3;\n      pbVar11[1] = (char)uVar17 * '\x04';\n      pbVar11[2] = (byte)(uVar17 >> 6);\n    }" ({ "{") (expression_statement "uVar17 = uVar13 - 0x4000;" (assignment_expression "uVar17 = uVar13 - 0x4000" (identifier "uVar17") (= "=") (binary_expression "uVar13 - 0x4000" (identifier "uVar13") (- "-") (number_literal "0x4000"))) (; ";")) (expression_statement "bVar1 = (byte)(uVar17 >> 0xb) & 8;" (assignment_expression "bVar1 = (byte)(uVar17 >> 0xb) & 8" (identifier "bVar1") (= "=") (binary_expression "(byte)(uVar17 >> 0xb) & 8" (call_expression "(byte)(uVar17 >> 0xb)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar17 >> 0xb)" (( "(") (binary_expression "uVar17 >> 0xb" (identifier "uVar17") (>> ">>") (number_literal "0xb")) () ")"))) (& "&") (number_literal "8"))) (; ";")) (if_statement "if (9 < uVar3) {\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }" (if "if") (parenthesized_expression "(9 < uVar3)" (( "(") (binary_expression "9 < uVar3" (number_literal "9") (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n        uVar3 = uVar3 - 9;\n        *pbVar11 = bVar1 | 0x10;\n        goto joined_r0x000ae874;\n      }" ({ "{") (expression_statement "uVar3 = uVar3 - 9;" (assignment_expression "uVar3 = uVar3 - 9" (identifier "uVar3") (= "=") (binary_expression "uVar3 - 9" (identifier "uVar3") (- "-") (number_literal "9"))) (; ";")) (expression_statement "*pbVar11 = bVar1 | 0x10;" (assignment_expression "*pbVar11 = bVar1 | 0x10" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (= "=") (binary_expression "bVar1 | 0x10" (identifier "bVar1") (| "|") (number_literal "0x10"))) (; ";")) (goto_statement "goto joined_r0x000ae874;" (goto "goto") (statement_identifier "joined_r0x000ae874") (; ";")) (} "}"))) (expression_statement "*pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;" (assignment_expression "*pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (= "=") (binary_expression "bVar1 | (char)uVar3 - 2U | 0x10" (binary_expression "bVar1 | (char)uVar3 - 2U" (identifier "bVar1") (| "|") (binary_expression "(char)uVar3 - 2U" (cast_expression "(char)uVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar3")) (- "-") (number_literal "2U"))) (| "|") (number_literal "0x10"))) (; ";")) (expression_statement "pbVar4 = pbVar11 + 3;" (assignment_expression "pbVar4 = pbVar11 + 3" (identifier "pbVar4") (= "=") (binary_expression "pbVar11 + 3" (identifier "pbVar11") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "pbVar11[1] = (char)uVar17 * '\x04';" (assignment_expression "pbVar11[1] = (char)uVar17 * '\x04'" (subscript_expression "pbVar11[1]" (identifier "pbVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "(char)uVar17 * '\x04'" (cast_expression "(char)uVar17" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar17")) (* "*") (char_literal "'\x04'" (' "'") (escape_sequence "\x04") (' "'")))) (; ";")) (expression_statement "pbVar11[2] = (byte)(uVar17 >> 6);" (assignment_expression "pbVar11[2] = (byte)(uVar17 >> 6)" (subscript_expression "pbVar11[2]" (identifier "pbVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (call_expression "(byte)(uVar17 >> 6)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar17 >> 6)" (( "(") (binary_expression "uVar17 >> 6" (identifier "uVar17") (>> ">>") (number_literal "6")) () ")")))) (; ";")) (} "}"))))) (labeled_statement "LAB_000ae83c:\n    pbVar6 = pbVar5;" (statement_identifier "LAB_000ae83c") (: ":") (expression_statement "pbVar6 = pbVar5;" (assignment_expression "pbVar6 = pbVar5" (identifier "pbVar6") (= "=") (identifier "pbVar5")) (; ";"))) (} "}")) (while "while") (parenthesized_expression "(pbVar5 < param_1 + param_2 + -0xd)" (( "(") (binary_expression "pbVar5 < param_1 + param_2 + -0xd" (identifier "pbVar5") (< "<") (binary_expression "param_1 + param_2 + -0xd" (binary_expression "param_1 + param_2" (identifier "param_1") (+ "+") (identifier "param_2")) (+ "+") (number_literal "-0xd"))) () ")")) (; ";")) (expression_statement "iVar9 = (int)pbVar4 - (int)param_3;" (assignment_expression "iVar9 = (int)pbVar4 - (int)param_3" (identifier "iVar9") (= "=") (binary_expression "(int)pbVar4 - (int)param_3" (cast_expression "(int)pbVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar4")) (- "-") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")))) (; ";")) (labeled_statement "LAB_000ae5b8:\n  *param_4 = iVar9;" (statement_identifier "LAB_000ae5b8") (: ":") (expression_statement "*param_4 = iVar9;" (assignment_expression "*param_4 = iVar9" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (identifier "iVar9")) (; ";"))) (return_statement "return (int)pbVar8 - (int)pbVar5;" (return "return") (binary_expression "(int)pbVar8 - (int)pbVar5" (cast_expression "(int)pbVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar8")) (- "-") (cast_expression "(int)pbVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar5"))) (; ";")) (} "}")))

type_1 function_1(uint8_t *var_1,type_1 var_2,uint8_t *out,type_1 *out_len,void *wrkmem)

{
  type_2 var_17;
  bool bVar2;
  type_1 var_6;
  type_2 *var_11;
  type_2 *var_10;
  type_2 *var_3;
  char var_14;
  int var_15;
  type_2 *var_16;
  type_2 *var_8;
  type_2 *var_12;
  type_2 *pbVar12;
  type_1 var_7;
  type_2 *var_13;
  type_1 var_5;
  int *piVar16;
  type_1 var_9;
  type_1 var_4;
  
  var_16 = var_1 + var_2;
  var_3 = var_1 + 4;
  var_10 = var_1;
  var_11 = out;
  do {
    while( true ) {
      var_4 = (type_1)var_3[3];
      var_5 = (type_1)*var_3;
      var_6 = (((var_4 << 6 ^ (type_1)var_3[2]) << 5 ^ (type_1)var_3[1]) << 5 ^ var_5) * 0x21 >> 5;
      piVar16 = (int *)((int)wrkmem + (var_6 & 0x7fff) * 4);
      var_7 = (int)var_3 - *piVar16;
      var_8 = var_3 + -var_7;
      var_9 = var_7 - 1;
      if ((var_1 <= var_8) && (bVar2 = var_7 < 0x801, var_9 < 0xbfff)) break;
LAB_000ae5a0:
      var_8 = var_3 + 1;
      *piVar16 = (int)var_3;
joined_r0x000ae69c:
      var_3 = var_8;
      if (var_1 + (var_2 - 0xd) <= var_8) {
        var_6 = (int)var_11 - (int)out;
        goto LAB_000ae5b8;
      }
    }
    if ((!bVar2) && (var_8[3] != var_4)) {
      piVar16 = (int *)((int)wrkmem + (var_6 & 0x7ff ^ 0x401f) * 4);
      var_7 = (int)var_3 - *piVar16;
      var_8 = var_3 + -var_7;
      var_9 = var_7 - 1;
      if ((var_1 <= var_8) && (bVar2 = var_7 < 0x801, var_9 < 0xbfff)) {
        if (bVar2) goto LAB_000ae5f4;
        if ((var_8[3] != var_4) || (*var_8 != var_5)) goto LAB_000ae5a0;
        var_17 = var_8[1];
        goto LAB_000ae604;
      }
      goto LAB_000ae5a0;
    }
LAB_000ae5f4:
    if (*var_8 != var_5) goto LAB_000ae5a0;
    var_17 = var_8[1];
LAB_000ae604:
    if (((type_1)var_17 != (type_1)var_3[1]) || ((type_1)var_8[2] != (type_1)var_3[2]))
    goto LAB_000ae5a0;
    *piVar16 = (int)var_3;
    pbVar12 = var_10;
    var_12 = var_11;
    if (var_3 != var_10) {
      var_6 = (int)var_3 - (int)var_10;
      if (var_6 < 4) {
        var_11[-2] = (type_2)var_6 | var_11[-2];
        var_13 = var_11;
      }
      else {
        var_13 = var_11 + 1;
        if (var_6 < 0x13) {
          *var_11 = (type_2)var_6 - 3;
        }
        else {
          var_5 = var_6 - 0x12;
          *var_11 = 0;
          pbVar12 = var_11 + 2;
          var_12 = var_13;
          if (0xff < var_5) {
            var_11[1] = 0;
            var_11 = var_13;
            var_12 = pbVar12;
            for (var_5 = var_6 - 0x111; 0xff < var_5; var_5 = var_5 - 0xff) {
              *var_12 = 0;
              var_11 = var_12;
              var_12 = var_12 + 1;
            }
          }
          var_13 = var_11 + 2;
          *var_12 = (type_2)var_5;
        }
      }
      var_12 = var_13 + var_6;
      do {
        var_11 = var_13 + 1;
        *var_13 = *var_10;
        var_13 = var_11;
        pbVar12 = var_3;
        var_10 = var_10 + 1;
      } while (var_11 != var_12);
    }
    var_10 = var_3 + 4;
    if (var_8[3] != var_3[3]) {
LAB_000ae668:
      var_10 = var_10 + -1;
      var_14 = (char)((int)var_10 - (int)pbVar12);
      if (!bVar2) {
LAB_000ae900:
        if (var_7 < 0x4001) {
          *var_12 = var_14 - 2U | 0x20;
          var_11 = var_12 + 3;
          var_12[1] = (type_2)(var_9 << 2);
          var_12[2] = (type_2)(var_9 >> 6);
        }
        else {
          var_7 = var_7 - 0x4000;
          *var_12 = var_14 - 2U | (type_2)(var_7 >> 0xb) & 8 | 0x10;
          var_11 = var_12 + 3;
          var_12[1] = (char)var_7 * '\x04';
          var_12[2] = (type_2)(var_7 >> 6);
        }
        goto LAB_000ae83c;
      }
      var_15 = ((int)var_10 - (int)pbVar12 & 0xffU) - 1;
LAB_000ae67c:
      *var_12 = (type_2)(var_15 << 5) | (type_2)((var_9 & 7) << 2);
      var_11 = var_12 + 2;
      var_12[1] = (type_2)(var_9 >> 3);
      var_8 = var_10;
      goto joined_r0x000ae69c;
    }
    if (var_8[4] != var_3[4]) {
      var_10 = var_3 + 4;
      var_14 = (char)((int)var_10 - (int)pbVar12);
      if (!bVar2) goto LAB_000ae900;
      var_15 = ((int)var_10 - (int)pbVar12 & 0xffU) - 1;
      goto LAB_000ae67c;
    }
    if (var_8[5] != var_3[5]) {
      var_10 = var_3 + 5;
      var_14 = (char)((int)var_10 - (int)pbVar12);
      if (!bVar2) goto LAB_000ae900;
      var_15 = ((int)var_10 - (int)pbVar12 & 0xffU) - 1;
      goto LAB_000ae67c;
    }
    if (var_8[6] != var_3[6]) {
      var_10 = var_3 + 6;
      var_14 = (char)((int)var_10 - (int)pbVar12);
      if (!bVar2) goto LAB_000ae900;
      var_15 = ((int)var_10 - (int)pbVar12 & 0xffU) - 1;
      goto LAB_000ae67c;
    }
    if (var_8[7] != var_3[7]) {
      var_10 = var_3 + 7;
      var_14 = (char)((int)var_10 - (int)pbVar12);
      if (!bVar2) goto LAB_000ae900;
      var_15 = ((int)var_10 - (int)pbVar12 & 0xffU) - 1;
      goto LAB_000ae67c;
    }
    var_10 = var_3 + 9;
    if (var_8[8] != var_3[8]) goto LAB_000ae668;
    if ((var_10 < var_16) && (var_11 = var_8 + 9, var_3[9] == var_8[9])) {
      do {
        var_10 = var_10 + 1;
        var_11 = var_11 + 1;
        if (var_16 == var_10) {
          var_6 = (int)var_16 - (int)pbVar12;
          var_10 = var_16;
          goto joined_r0x000ae8f0;
        }
      } while (*var_11 == *var_10);
    }
    var_6 = (int)var_10 - (int)pbVar12;
joined_r0x000ae8f0:
    if (var_7 < 0x4001) {
      if (var_6 < 0x22) {
        *var_12 = (char)var_6 - 2U | 0x20;
        var_11 = var_12 + 3;
        var_12[1] = (type_2)(var_9 << 2);
        var_12[2] = (type_2)(var_9 >> 6);
      }
      else {
        var_6 = var_6 - 0x21;
        *var_12 = 0x20;
joined_r0x000ae874:
        for (; var_11 = var_12 + 1, 0xff < var_6; var_6 = var_6 - 0xff) {
          *var_11 = 0;
          var_12 = var_11;
        }
        *var_11 = (type_2)var_6;
        var_11 = var_12 + 4;
        var_12[2] = (type_2)(var_9 << 2);
        var_12[3] = (type_2)(var_9 >> 6);
      }
    }
    else {
      var_9 = var_7 - 0x4000;
      var_17 = (type_2)(var_9 >> 0xb) & 8;
      if (9 < var_6) {
        var_6 = var_6 - 9;
        *var_12 = var_17 | 0x10;
        goto joined_r0x000ae874;
      }
      *var_12 = var_17 | (char)var_6 - 2U | 0x10;
      var_11 = var_12 + 3;
      var_12[1] = (char)var_9 * '\x04';
      var_12[2] = (type_2)(var_9 >> 6);
    }
LAB_000ae83c:
    var_3 = var_10;
  } while (var_10 < var_1 + (var_2 - 0xd));
  var_6 = (int)var_11 - (int)out;
LAB_000ae5b8:
  *out_len = var_6;
  return (int)var_16 - (int)var_10;
}


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

int MASKED(byte *param_1,int param_2,byte *param_3,int *param_4,int param_5)

{
  byte bVar1;
  bool bVar2;
  uint uVar3;
  byte *pbVar4;
  byte *pbVar5;
  byte *pbVar6;
  char cVar7;
  byte *pbVar8;
  int iVar9;
  byte *pbVar10;
  byte *pbVar11;
  byte *pbVar12;
  uint uVar13;
  byte *pbVar14;
  uint uVar15;
  int *piVar16;
  uint uVar17;
  uint uVar18;
  
  pbVar8 = param_1 + param_2;
  pbVar6 = param_1 + 4;
  pbVar5 = param_1;
  pbVar4 = param_3;
  do {
    while( true ) {
      uVar18 = (uint)pbVar6[3];
      uVar15 = (uint)*pbVar6;
      uVar3 = (((uVar18 << 6 ^ (uint)pbVar6[2]) << 5 ^ (uint)pbVar6[1]) << 5 ^ uVar15) * 0x21 >> 5;
      piVar16 = (int *)(param_5 + (uVar3 & 0x7fff) * 4);
      uVar13 = (int)pbVar6 - *piVar16;
      pbVar10 = pbVar6 + -uVar13;
      uVar17 = uVar13 - 1;
      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) break;
LAB_000ae5a0:
      pbVar10 = pbVar6 + 1;
      *piVar16 = (int)pbVar6;
joined_r0x000ae69c:
      pbVar6 = pbVar10;
      if (param_1 + param_2 + -0xd <= pbVar10) {
        iVar9 = (int)pbVar4 - (int)param_3;
        goto LAB_000ae5b8;
      }
    }
    if ((!bVar2) && (pbVar10[3] != uVar18)) {
      piVar16 = (int *)(param_5 + (uVar3 & 0x7ff ^ 0x401f) * 4);
      uVar13 = (int)pbVar6 - *piVar16;
      pbVar10 = pbVar6 + -uVar13;
      uVar17 = uVar13 - 1;
      if ((param_1 <= pbVar10) && (bVar2 = uVar13 < 0x801, uVar17 < 0xbfff)) {
        if (bVar2) goto LAB_000ae5f4;
        if ((pbVar10[3] != uVar18) || (*pbVar10 != uVar15)) goto LAB_000ae5a0;
        bVar1 = pbVar10[1];
        goto LAB_000ae604;
      }
      goto LAB_000ae5a0;
    }
LAB_000ae5f4:
    if (*pbVar10 != uVar15) goto LAB_000ae5a0;
    bVar1 = pbVar10[1];
LAB_000ae604:
    if (((uint)bVar1 != (uint)pbVar6[1]) || ((uint)pbVar10[2] != (uint)pbVar6[2]))
    goto LAB_000ae5a0;
    *piVar16 = (int)pbVar6;
    pbVar12 = pbVar5;
    pbVar11 = pbVar4;
    if (pbVar6 != pbVar5) {
      uVar3 = (int)pbVar6 - (int)pbVar5;
      if (uVar3 < 4) {
        pbVar4[-2] = (byte)uVar3 | pbVar4[-2];
        pbVar14 = pbVar4;
      }
      else {
        pbVar14 = pbVar4 + 1;
        if (uVar3 < 0x13) {
          *pbVar4 = (byte)uVar3 - 3;
        }
        else {
          uVar15 = uVar3 - 0x12;
          *pbVar4 = 0;
          pbVar12 = pbVar4 + 2;
          pbVar11 = pbVar14;
          if (0xff < uVar15) {
            pbVar4[1] = 0;
            pbVar4 = pbVar14;
            pbVar11 = pbVar12;
            for (uVar15 = uVar3 - 0x111; 0xff < uVar15; uVar15 = uVar15 - 0xff) {
              *pbVar11 = 0;
              pbVar4 = pbVar11;
              pbVar11 = pbVar11 + 1;
            }
          }
          pbVar14 = pbVar4 + 2;
          *pbVar11 = (byte)uVar15;
        }
      }
      pbVar11 = pbVar14 + uVar3;
      do {
        pbVar4 = pbVar14 + 1;
        *pbVar14 = *pbVar5;
        pbVar14 = pbVar4;
        pbVar12 = pbVar6;
        pbVar5 = pbVar5 + 1;
      } while (pbVar4 != pbVar11);
    }
    pbVar5 = pbVar6 + 4;
    if (pbVar10[3] != pbVar6[3]) {
LAB_000ae668:
      pbVar5 = pbVar5 + -1;
      cVar7 = (char)((int)pbVar5 - (int)pbVar12);
      if (!bVar2) {
LAB_000ae900:
        if (uVar13 < 0x4001) {
          *pbVar11 = cVar7 - 2U | 0x20;
          pbVar4 = pbVar11 + 3;
          pbVar11[1] = (byte)(uVar17 << 2);
          pbVar11[2] = (byte)(uVar17 >> 6);
        }
        else {
          uVar13 = uVar13 - 0x4000;
          *pbVar11 = cVar7 - 2U | (byte)(uVar13 >> 0xb) & 8 | 0x10;
          pbVar4 = pbVar11 + 3;
          pbVar11[1] = (char)uVar13 * '\x04';
          pbVar11[2] = (byte)(uVar13 >> 6);
        }
        goto LAB_000ae83c;
      }
      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;
LAB_000ae67c:
      *pbVar11 = (byte)(iVar9 << 5) | (byte)((uVar17 & 7) << 2);
      pbVar4 = pbVar11 + 2;
      pbVar11[1] = (byte)(uVar17 >> 3);
      pbVar10 = pbVar5;
      goto joined_r0x000ae69c;
    }
    if (pbVar10[4] != pbVar6[4]) {
      pbVar5 = pbVar6 + 4;
      cVar7 = (char)((int)pbVar5 - (int)pbVar12);
      if (!bVar2) goto LAB_000ae900;
      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;
      goto LAB_000ae67c;
    }
    if (pbVar10[5] != pbVar6[5]) {
      pbVar5 = pbVar6 + 5;
      cVar7 = (char)((int)pbVar5 - (int)pbVar12);
      if (!bVar2) goto LAB_000ae900;
      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;
      goto LAB_000ae67c;
    }
    if (pbVar10[6] != pbVar6[6]) {
      pbVar5 = pbVar6 + 6;
      cVar7 = (char)((int)pbVar5 - (int)pbVar12);
      if (!bVar2) goto LAB_000ae900;
      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;
      goto LAB_000ae67c;
    }
    if (pbVar10[7] != pbVar6[7]) {
      pbVar5 = pbVar6 + 7;
      cVar7 = (char)((int)pbVar5 - (int)pbVar12);
      if (!bVar2) goto LAB_000ae900;
      iVar9 = ((int)pbVar5 - (int)pbVar12 & 0xffU) - 1;
      goto LAB_000ae67c;
    }
    pbVar5 = pbVar6 + 9;
    if (pbVar10[8] != pbVar6[8]) goto LAB_000ae668;
    if ((pbVar5 < pbVar8) && (pbVar4 = pbVar10 + 9, pbVar6[9] == pbVar10[9])) {
      do {
        pbVar5 = pbVar5 + 1;
        pbVar4 = pbVar4 + 1;
        if (pbVar8 == pbVar5) {
          uVar3 = (int)pbVar8 - (int)pbVar12;
          pbVar5 = pbVar8;
          goto joined_r0x000ae8f0;
        }
      } while (*pbVar4 == *pbVar5);
    }
    uVar3 = (int)pbVar5 - (int)pbVar12;
joined_r0x000ae8f0:
    if (uVar13 < 0x4001) {
      if (uVar3 < 0x22) {
        *pbVar11 = (char)uVar3 - 2U | 0x20;
        pbVar4 = pbVar11 + 3;
        pbVar11[1] = (byte)(uVar17 << 2);
        pbVar11[2] = (byte)(uVar17 >> 6);
      }
      else {
        uVar3 = uVar3 - 0x21;
        *pbVar11 = 0x20;
joined_r0x000ae874:
        for (; pbVar4 = pbVar11 + 1, 0xff < uVar3; uVar3 = uVar3 - 0xff) {
          *pbVar4 = 0;
          pbVar11 = pbVar4;
        }
        *pbVar4 = (byte)uVar3;
        pbVar4 = pbVar11 + 4;
        pbVar11[2] = (byte)(uVar17 << 2);
        pbVar11[3] = (byte)(uVar17 >> 6);
      }
    }
    else {
      uVar17 = uVar13 - 0x4000;
      bVar1 = (byte)(uVar17 >> 0xb) & 8;
      if (9 < uVar3) {
        uVar3 = uVar3 - 9;
        *pbVar11 = bVar1 | 0x10;
        goto joined_r0x000ae874;
      }
      *pbVar11 = bVar1 | (char)uVar3 - 2U | 0x10;
      pbVar4 = pbVar11 + 3;
      pbVar11[1] = (char)uVar17 * '\x04';
      pbVar11[2] = (byte)(uVar17 >> 6);
    }
LAB_000ae83c:
    pbVar6 = pbVar5;
  } while (pbVar5 < param_1 + param_2 + -0xd);
  iVar9 = (int)pbVar4 - (int)param_3;
LAB_000ae5b8:
  *param_4 = iVar9;
  return (int)pbVar8 - (int)pbVar5;
}

