
/* WARNING: Removing unreachable block (ram,0x0004ff3c) */
/* WARNING: Removing unreachable block (ram,0x0004fb20) */
/* WARNING: Removing unreachable block (ram,0x0004ff5c) */
/* WARNING: Removing unreachable block (ram,0x0004ff64) */
/* WARNING: Removing unreachable block (ram,0x0004ff4c) */
/* WARNING: Removing unreachable block (ram,0x0004ff44) */
/* WARNING: Removing unreachable block (ram,0x0004ff54) */
/* WARNING: Removing unreachable block (ram,0x0004fac4) */

void aes_setup(AESContext *ctx,int blocklen,uchar *key,int keylen)

{
  undefined *puVar1;
  int iVar2;
  uint uVar3;
  word32 *pwVar4;
  AESContext *pAVar5;
  word32 *pwVar6;
  int iVar7;
  uint uVar8;
  int iVar9;
  uint uVar10;
  int iVar11;
  int iVar12;
  
  if (blocklen == 0x10) {
    if (keylen == 0x10) {
      ctx->Nb = 4;
      ctx->Nr = 10;
      iVar7 = 4;
      iVar11 = 10;
    }
    else {
      if (keylen != 0x18) goto LAB_0004fdb4;
      iVar7 = 6;
      ctx->Nb = 4;
      iVar11 = 0xc;
      ctx->Nr = 0xc;
    }
LAB_0004fd88:
    ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x2570);
    ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x15f0);
    iVar12 = 4;
    goto LAB_0004fe48;
  }
  if (blocklen == 0x18) {
    if (keylen == 0x10) {
      ctx->Nb = 6;
      ctx->Nr = 0xc;
      iVar7 = 4;
      iVar11 = 0xc;
    }
    else {
      if (keylen != 0x18) goto LAB_0004fdb4;
      iVar7 = 6;
      ctx->Nb = 6;
      iVar11 = 0xc;
      ctx->Nr = 0xc;
    }
LAB_0004fea8:
    ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x21f0);
    ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x1270);
    iVar12 = 6;
  }
  else {
    if (blocklen != 0x20) {
      (*(code *)PTR___assert_fail_000b8b18)
                (PTR_PC2_1357_27__000b8348 + -0x3d74,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a6,
                 PTR_PC2_1357_27__000b8348 + -0x3c14);
      return;
    }
    if (keylen == 0x10) {
      ctx->Nb = 8;
      ctx->Nr = 0xe;
      iVar7 = 4;
      iVar11 = 0xe;
    }
    else if (keylen == 0x18) {
      iVar7 = 6;
      ctx->Nb = 8;
      iVar11 = 0xe;
      ctx->Nr = 0xe;
    }
    else {
LAB_0004fdb4:
      if (keylen != 0x20) {
        (*(code *)PTR___assert_fail_000b8b18)
                  (PTR_PC2_1357_27__000b8348 + -0x3d40,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a7,
                   PTR_PC2_1357_27__000b8348 + -0x3c14);
        return;
      }
      iVar7 = 8;
      if (blocklen < 0) {
        blocklen = blocklen + 3;
      }
      iVar12 = blocklen >> 2;
      ctx->Nb = iVar12;
      iVar11 = iVar7;
      if (7 < iVar12) {
        iVar11 = iVar12;
      }
      iVar11 = iVar11 + 6;
      ctx->Nr = iVar11;
      if (iVar12 != 8) {
        if (iVar12 != 6) {
          if (iVar12 != 4) goto LAB_0004fe48;
          goto LAB_0004fd88;
        }
        goto LAB_0004fea8;
      }
    }
    ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x1cc0);
    ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0xd40);
    iVar12 = 8;
  }
LAB_0004fe48:
  puVar1 = PTR_PC2_1357_27__000b8348;
  if (0 < (iVar11 + 1) * iVar12) {
    iVar11 = ctx->Nr;
    iVar12 = ctx->Nb;
    uVar10 = 1;
    iVar2 = 0;
    pAVar5 = ctx;
    do {
      if (iVar2 < iVar7) {
        pAVar5->keysched[0] =
             (uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3] | (uint)key[2] << 8;
      }
      else {
        if (iVar7 == 0) {
          trap(7);
        }
        uVar3 = pAVar5[-1].Nr;
        if (iVar2 % iVar7 == 0) {
          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8 |
                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |
                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |
                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];
          uVar8 = uVar10 & 0x80;
          if (uVar8 != 0) {
            uVar8 = 0x1b;
          }
          uVar10 = (uVar10 & 0x7f) << 1 ^ uVar8;
        }
        else if ((iVar2 % iVar7 == 4) && (0x1b < keylen)) {
          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],
                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),
                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),
                           puVar1[(uVar3 & 0xff) - 0x1b08]);
        }
        pAVar5->keysched[0] = *(uint *)((int)pAVar5 + iVar7 * -4) ^ uVar3;
      }
      iVar2 = iVar2 + 1;
      key = key + 4;
      pAVar5 = (AESContext *)(pAVar5->keysched + 1);
    } while (iVar2 < (iVar11 + 1) * iVar12);
  }
  puVar1 = PTR_PC2_1357_27__000b8348;
  if (-1 < iVar11) {
    pwVar6 = ctx->keysched;
    iVar2 = iVar12 * iVar11 * 4;
    iVar9 = 0;
    iVar7 = 0;
    do {
      pwVar6 = pwVar6 + iVar12;
      pwVar4 = pwVar6 + -iVar12;
      if (0 < iVar12) {
        do {
          uVar10 = *(uint *)((int)pwVar4 + iVar2 + iVar9);
          if ((iVar7 != 0) && (iVar11 != iVar7)) {
            uVar10 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08)
                     ^ *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +
                                          -0x3008) ^
                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4 +
                                        -0x3408) ^
                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4
                                        + -0x3808);
          }
          pwVar4[0x78] = uVar10;
          pwVar4 = pwVar4 + 1;
        } while (pwVar4 != pwVar6);
      }
      iVar7 = iVar7 + 1;
      iVar9 = iVar9 + iVar12 * -4;
      iVar2 = iVar2 + iVar12 * -4;
    } while (iVar7 != iVar11 + 1);
  }
  return;
}



/* WARNING: Removing unreachable block (ram,0x0004ff3c) */
/* WARNING: Removing unreachable block (ram,0x0004fb20) */
/* WARNING: Removing unreachable block (ram,0x0004ff5c) */
/* WARNING: Removing unreachable block (ram,0x0004ff64) */
/* WARNING: Removing unreachable block (ram,0x0004ff4c) */
/* WARNING: Removing unreachable block (ram,0x0004ff44) */
/* WARNING: Removing unreachable block (ram,0x0004ff54) */
/* WARNING: Removing unreachable block (ram,0x0004fac4) */

void FUN_0004fa54(uint *param_1,int param_2,byte *param_3,int param_4)

{
  undefined *puVar1;
  int iVar2;
  uint uVar3;
  uint *puVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  
  if (param_2 == 0x10) {
    if (param_4 == 0x10) {
      param_1[0xfa] = 4;
      param_1[0xfb] = 10;
      uVar5 = 4;
      uVar9 = 10;
    }
    else {
      if (param_4 != 0x18) goto LAB_0004fdb4;
      uVar5 = 6;
      param_1[0xfa] = 4;
      uVar9 = 0xc;
      param_1[0xfb] = 0xc;
    }
LAB_0004fd88:
    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570);
    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x15f0);
    uVar10 = 4;
    goto LAB_0004fe48;
  }
  if (param_2 == 0x18) {
    if (param_4 == 0x10) {
      param_1[0xfa] = 6;
      param_1[0xfb] = 0xc;
      uVar5 = 4;
      uVar9 = 0xc;
    }
    else {
      if (param_4 != 0x18) goto LAB_0004fdb4;
      uVar5 = 6;
      param_1[0xfa] = 6;
      uVar9 = 0xc;
      param_1[0xfb] = 0xc;
    }
LAB_0004fea8:
    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0);
    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x1270);
    uVar10 = 6;
  }
  else {
    if (param_2 != 0x20) {
      (*(code *)PTR___assert_fail_000b8b18)
                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,
                 PTR_DAT_000b8348 + -0x3c14);
      return;
    }
    if (param_4 == 0x10) {
      param_1[0xfa] = 8;
      param_1[0xfb] = 0xe;
      uVar5 = 4;
      uVar9 = 0xe;
    }
    else if (param_4 == 0x18) {
      uVar5 = 6;
      param_1[0xfa] = 8;
      uVar9 = 0xe;
      param_1[0xfb] = 0xe;
    }
    else {
LAB_0004fdb4:
      if (param_4 != 0x20) {
        (*(code *)PTR___assert_fail_000b8b18)
                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,
                   PTR_DAT_000b8348 + -0x3c14);
        return;
      }
      uVar5 = 8;
      if (param_2 < 0) {
        param_2 = param_2 + 3;
      }
      uVar10 = param_2 >> 2;
      param_1[0xfa] = uVar10;
      uVar9 = uVar5;
      if (7 < (int)uVar10) {
        uVar9 = uVar10;
      }
      uVar9 = uVar9 + 6;
      param_1[0xfb] = uVar9;
      if (uVar10 != 8) {
        if (uVar10 != 6) {
          if (uVar10 != 4) goto LAB_0004fe48;
          goto LAB_0004fd88;
        }
        goto LAB_0004fea8;
      }
    }
    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0);
    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40);
    uVar10 = 8;
  }
LAB_0004fe48:
  puVar1 = PTR_DAT_000b8348;
  if (0 < (int)((uVar9 + 1) * uVar10)) {
    uVar9 = param_1[0xfb];
    uVar10 = param_1[0xfa];
    uVar8 = 1;
    iVar2 = 0;
    puVar4 = param_1;
    do {
      if (iVar2 < (int)uVar5) {
        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |
                  (uint)param_3[2] << 8;
      }
      else {
        if (uVar5 == 0) {
          trap(7);
        }
        uVar3 = puVar4[-1];
        if (iVar2 % (int)uVar5 == 0) {
          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |
                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |
                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |
                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];
          uVar6 = uVar8 & 0x80;
          if (uVar6 != 0) {
            uVar6 = 0x1b;
          }
          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;
        }
        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {
          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],
                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),
                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),
                           puVar1[(uVar3 & 0xff) - 0x1b08]);
        }
        *puVar4 = puVar4[-uVar5] ^ uVar3;
      }
      iVar2 = iVar2 + 1;
      param_3 = param_3 + 4;
      puVar4 = puVar4 + 1;
    } while (iVar2 < (int)((uVar9 + 1) * uVar10));
  }
  puVar1 = PTR_DAT_000b8348;
  if (-1 < (int)uVar9) {
    param_1 = param_1 + uVar10;
    iVar2 = uVar10 * uVar9 * 4;
    iVar7 = 0;
    uVar5 = 0;
    do {
      puVar4 = param_1 + -uVar10;
      if (0 < (int)uVar10) {
        do {
          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);
          if ((uVar5 != 0) && (uVar9 != uVar5)) {
            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^
                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^
                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +
                                       -0x3408) ^
                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +
                                       -0x3808);
          }
          puVar4[0x78] = uVar8;
          puVar4 = puVar4 + 1;
        } while (puVar4 != param_1);
      }
      uVar5 = uVar5 + 1;
      param_1 = param_1 + uVar10;
      iVar7 = iVar7 + uVar10 * -4;
      iVar2 = iVar2 + uVar10 * -4;
    } while (uVar5 != uVar9 + 1);
  }
  return;
}


lui gp,0x7
addiu gp,gp,0x83c
addu gp,gp,t9
addiu sp,sp,-0x28
sw ra,0x24(sp)
sw s2,0x20(sp)
sw s1,0x1c(sp)
sw s0,0x18(sp)
sw gp,0x10(sp)
li v0,0x10
beq a1,v0,0x0004fda0
_li v0,0x18
beq a1,v0,0x0004fec8
_li v0,0x20
bne a1,v0,0x0004fad4
_li v0,0x10
beq a3,v0,0x0004fe14
_li v0,0x18
bne a3,v0,0x0004fdb4
_nop
bltz a3,0x0004ff4c
_or t1,a3,zero
sra t1,t1,0x2
bltz a1,0x0004ff54
_or v0,a1,zero
sra v0,v0,0x2
sw v0,0x3e8(a0)
slt t3,v0,t1
movn v0,t1,t3
addiu t3,v0,0x6
b 0x0004fe2c
_sw t3,0x3ec(a0)
lw a3,-0x7f48(gp)
addiu a3,a3,-0x3c14
li a2,0x3a6
lw a1,-0x7f48(gp)
addiu a1,a1,-0x3d80
lw a0,-0x7f48(gp)
addiu a0,a0,-0x3d74
lw t9,-0x7778(gp)
jalr t9
_nop
lw a3,-0x7f48(gp)
addiu a3,a3,-0x3c14
li a2,0x3a7
lw a1,-0x7f48(gp)
addiu a1,a1,-0x3d80
lw a0,-0x7f48(gp)
addiu a0,a0,-0x3d40
jalr t9
_nop
b 0x0004fdc8
_addiu t1,a3,0x3
b 0x0004fdd4
_addiu t9,a1,0x3
teq t1,zero
div v0,t1
mfhi a3
bne a3,zero,0x0004fc04
_lw v1,-0x4(a1)
ext a3,v1,0x10,0x8
addu a3,a3,t4
lbu a3,0x0(a3)
xor a3,a3,t2
sll a3,a3,0x8
ext s1,v1,0x8,0x8
addu s1,s1,t4
lbu s1,0x0(s1)
or a3,a3,s1
sll a3,a3,0x8
andi s1,v1,0xff
addu s1,s1,t4
lbu s1,0x0(s1)
or a3,a3,s1
sll a3,a3,0x8
srl v1,v1,0x18
addu v1,v1,t4
lbu v1,0x0(v1)
or v1,a3,v1
sll a3,t2,0x1
andi a3,a3,0xff
andi t2,t2,0x80
movn t2,t7,t2
xor t2,a3,t2
addu a3,s0,t6
lw a3,0x0(a3)
xor v1,a3,v1
sw v1,0x0(s0)
addiu v0,v0,0x1
addiu a2,a2,0x4
slt v1,v0,t5
beq v1,zero,0x0004fc5c
_addiu a1,a1,0x4
slt v1,v0,t1
beq v1,zero,0x0004fb30
_or s0,a1,zero
lbu v1,0x0(a2)
sll v1,v1,0x18
lbu a3,0x1(a2)
sll a3,a3,0x10
or v1,v1,a3
lbu a3,0x3(a2)
or v1,v1,a3
lbu a3,0x2(a2)
sll a3,a3,0x8
or v1,v1,a3
b 0x0004fbb4
_sw v1,0x0(a1)
bne a3,t8,0x0004fba8
_addu a3,s0,t6
bne t0,zero,0x0004fba8
_ext s1,v1,0x10,0x8
srl a3,v1,0x18
addu a3,a3,t4
lbu a3,0x0(a3)
sll a3,a3,0x8
addu s1,s1,t4
lbu s1,0x0(s1)
or a3,a3,s1
sll a3,a3,0x8
ext s1,v1,0x8,0x8
addu s1,s1,t4
lbu s1,0x0(s1)
or a3,a3,s1
sll a3,a3,0x8
andi v1,v1,0xff
addu v1,v1,t4
lbu v1,0x0(v1)
b 0x0004fba4
_or v1,a3,v1
bltz t3,0x0004ff6c
_sll s0,t9,0x2
addu t0,a0,s0
subu t8,zero,t9
sll t8,t8,0x2
mul t1,t9,t3
sll t1,t1,0x2
addiu s1,t3,0x1
or t2,zero,zero
or a2,zero,zero
lw a3,-0x7f48(gp)
addiu a3,a3,-0x1b08
lw t7,-0x7f48(gp)
addiu t7,t7,-0x3808
lw t6,-0x7f48(gp)
addiu t6,t6,-0x3c08
lw t5,-0x7f48(gp)
addiu t5,t5,-0x3008
lw t4,-0x7f48(gp)
b 0x0004fd58
_addiu t4,t4,-0x3408
sw v0,0x1e0(v1)
addiu v1,v1,0x4
beq v1,t0,0x0004fd44
_nop
addu v0,v1,t2
addu v0,v0,t1
beq a2,zero,0x0004fcb0
_lw v0,0x0(v0)
beq t3,a2,0x0004fcb0
_srl a0,v0,0x18
addu a0,a0,a3
lbu a1,0x0(a0)
ext a0,v0,0x8,0x8
addu a0,a0,a3
lbu a0,0x0(a0)
sll a0,a0,0x2
addu a0,a0,t7
lw s2,0x0(a0)
andi a0,v0,0xff
addu a0,a0,a3
lbu a0,0x0(a0)
sll a0,a0,0x2
addu a0,a0,t6
sll a1,a1,0x2
addu a1,a1,t5
lw a0,0x0(a0)
lw a1,0x0(a1)
xor a0,a0,a1
ext v0,v0,0x10,0x8
addu v0,v0,a3
lbu v0,0x0(v0)
sll v0,v0,0x2
addu v0,v0,t4
lw v0,0x0(v0)
xor v0,a0,v0
b 0x0004fcb0
_xor v0,v0,s2
addiu a2,a2,0x1
addu t0,t0,s0
addu t2,t2,t8
beq a2,s1,0x0004ff6c
_addu t1,t1,t8
bgtz t9,0x0004fcc0
_addu v1,t0,t8
b 0x0004fd48
_addiu a2,a2,0x1
li v0,0x4
sw v0,0x3e8(a0)
li v0,0xa
sw v0,0x3ec(a0)
li t1,0x4
li t3,0xa
lw v0,-0x7c50(gp)
addiu v0,v0,-0x2570
sw v0,0x3c0(a0)
lw v0,-0x7c50(gp)
addiu v0,v0,-0x15f0
sw v0,0x3c4(a0)
b 0x0004fe48
_li t9,0x4
li v0,0x10
beq a3,v0,0x0004fd68
_li v0,0x18
beq a3,v0,0x0004ff0c
_nop
li v0,0x20
bne a3,v0,0x0004fafc
_lw t9,-0x7778(gp)
bltz a3,0x0004fb20
_or t1,a3,zero
sra t1,t1,0x2
bltz a1,0x0004fb28
_or t9,a1,zero
sra t9,t9,0x2
sw t9,0x3e8(a0)
slt t3,t9,t1
or v0,t1,zero
movz v0,t9,t3
addiu t3,v0,0x6
li v0,0x8
beq t9,v0,0x0004fe2c
_sw t3,0x3ec(a0)
li v0,0x6
beq t9,v0,0x0004fea8
_li v0,0x4
bne t9,v0,0x0004fe48
_lw v0,-0x7c50(gp)
b 0x0004fd88
_addiu v0,v0,-0x2570
li v0,0x8
sw v0,0x3e8(a0)
li v0,0xe
sw v0,0x3ec(a0)
li t1,0x4
li t3,0xe
lw v0,-0x7c50(gp)
addiu v0,v0,-0x1cc0
sw v0,0x3c0(a0)
lw v0,-0x7c50(gp)
addiu v0,v0,-0xd40
sw v0,0x3c4(a0)
li t9,0x8
addiu v0,t3,0x1
mul v0,v0,t9
blez v0,0x0004fc5c
_or a1,a0,zero
lw t3,0x3ec(a0)
lw t9,0x3e8(a0)
addiu t5,t3,0x1
mul t5,t5,t9
subu t6,zero,t1
sll t6,t6,0x2
li t2,0x1
or v0,zero,zero
li t8,0x4
slti t0,a3,0x1c
lw t4,-0x7f48(gp)
addiu t4,t4,-0x1b08
b 0x0004fbc8
_li t7,0x1b
li v0,0x6
sw v0,0x3e8(a0)
li v0,0xc
sw v0,0x3ec(a0)
li t1,0x4
li t3,0xc
lw v0,-0x7c50(gp)
addiu v0,v0,-0x21f0
sw v0,0x3c0(a0)
lw v0,-0x7c50(gp)
addiu v0,v0,-0x1270
sw v0,0x3c4(a0)
b 0x0004fe48
_li t9,0x6
li v0,0x10
beq a3,v0,0x0004fe90
_li v0,0x18
bne a3,v0,0x0004fdb4
_nop
bltz a3,0x0004ff5c
_or t1,a3,zero
sra t1,t1,0x2
bltz a1,0x0004ff64
_or v0,a1,zero
sra v0,v0,0x2
sw v0,0x3e8(a0)
slt t3,t1,v0
movz v0,t1,t3
addiu t3,v0,0x6
b 0x0004fea8
_sw t3,0x3ec(a0)
bltz a3,0x0004ff3c
_or t1,a3,zero
sra t1,t1,0x2
bltz a1,0x0004ff44
_or v0,a1,zero
sra v0,v0,0x2
sw v0,0x3e8(a0)
slt t3,v0,t1
movn v0,t1,t3
addiu t3,v0,0x6
b 0x0004fd80
_sw t3,0x3ec(a0)
b 0x0004ff14
_addiu t1,a3,0x3
b 0x0004ff20
_addiu v0,a1,0x3
b 0x0004faac
_addiu t1,a3,0x3
b 0x0004fab8
_addiu v0,a1,0x3
b 0x0004fee4
_addiu t1,a3,0x3
b 0x0004fef0
_addiu v0,a1,0x3
lw ra,0x24(sp)
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x28
(translation_unit "/* WARNING: Removing unreachable block (ram,0x0004ff3c) */\n/* WARNING: Removing unreachable block (ram,0x0004fb20) */\n/* WARNING: Removing unreachable block (ram,0x0004ff5c) */\n/* WARNING: Removing unreachable block (ram,0x0004ff64) */\n/* WARNING: Removing unreachable block (ram,0x0004ff4c) */\n/* WARNING: Removing unreachable block (ram,0x0004ff44) */\n/* WARNING: Removing unreachable block (ram,0x0004ff54) */\n/* WARNING: Removing unreachable block (ram,0x0004fac4) */\n\nvoid FUN_0004fa54(uint *param_1,int param_2,byte *param_3,int param_4)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  \n  if (param_2 == 0x10) {\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 4;\n      param_1[0xfb] = 10;\n      uVar5 = 4;\n      uVar9 = 10;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fd88:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x15f0);\n    uVar10 = 4;\n    goto LAB_0004fe48;\n  }\n  if (param_2 == 0x18) {\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 6;\n      param_1[0xfb] = 0xc;\n      uVar5 = 4;\n      uVar9 = 0xc;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fea8:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x1270);\n    uVar10 = 6;\n  }\n  else {\n    if (param_2 != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }\n    else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40);\n    uVar10 = 8;\n  }\nLAB_0004fe48:\n  puVar1 = PTR_DAT_000b8348;\n  if (0 < (int)((uVar9 + 1) * uVar10)) {\n    uVar9 = param_1[0xfb];\n    uVar10 = param_1[0xfa];\n    uVar8 = 1;\n    iVar2 = 0;\n    puVar4 = param_1;\n    do {\n      if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      param_3 = param_3 + 4;\n      puVar4 = puVar4 + 1;\n    } while (iVar2 < (int)((uVar9 + 1) * uVar10));\n  }\n  puVar1 = PTR_DAT_000b8348;\n  if (-1 < (int)uVar9) {\n    param_1 = param_1 + uVar10;\n    iVar2 = uVar10 * uVar9 * 4;\n    iVar7 = 0;\n    uVar5 = 0;\n    do {\n      puVar4 = param_1 + -uVar10;\n      if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }\n      uVar5 = uVar5 + 1;\n      param_1 = param_1 + uVar10;\n      iVar7 = iVar7 + uVar10 * -4;\n      iVar2 = iVar2 + uVar10 * -4;\n    } while (uVar5 != uVar9 + 1);\n  }\n  return;\n}\n\n" comment comment comment comment comment comment comment comment (function_definition "void FUN_0004fa54(uint *param_1,int param_2,byte *param_3,int param_4)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  \n  if (param_2 == 0x10) {\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 4;\n      param_1[0xfb] = 10;\n      uVar5 = 4;\n      uVar9 = 10;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fd88:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x15f0);\n    uVar10 = 4;\n    goto LAB_0004fe48;\n  }\n  if (param_2 == 0x18) {\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 6;\n      param_1[0xfb] = 0xc;\n      uVar5 = 4;\n      uVar9 = 0xc;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fea8:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x1270);\n    uVar10 = 6;\n  }\n  else {\n    if (param_2 != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }\n    else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40);\n    uVar10 = 8;\n  }\nLAB_0004fe48:\n  puVar1 = PTR_DAT_000b8348;\n  if (0 < (int)((uVar9 + 1) * uVar10)) {\n    uVar9 = param_1[0xfb];\n    uVar10 = param_1[0xfa];\n    uVar8 = 1;\n    iVar2 = 0;\n    puVar4 = param_1;\n    do {\n      if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      param_3 = param_3 + 4;\n      puVar4 = puVar4 + 1;\n    } while (iVar2 < (int)((uVar9 + 1) * uVar10));\n  }\n  puVar1 = PTR_DAT_000b8348;\n  if (-1 < (int)uVar9) {\n    param_1 = param_1 + uVar10;\n    iVar2 = uVar10 * uVar9 * 4;\n    iVar7 = 0;\n    uVar5 = 0;\n    do {\n      puVar4 = param_1 + -uVar10;\n      if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }\n      uVar5 = uVar5 + 1;\n      param_1 = param_1 + uVar10;\n      iVar7 = iVar7 + uVar10 * -4;\n      iVar2 = iVar2 + uVar10 * -4;\n    } while (uVar5 != uVar9 + 1);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0004fa54(uint *param_1,int param_2,byte *param_3,int param_4)" identifier (parameter_list "(uint *param_1,int param_2,byte *param_3,int param_4)" ( (parameter_declaration "uint *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 identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  \n  if (param_2 == 0x10) {\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 4;\n      param_1[0xfb] = 10;\n      uVar5 = 4;\n      uVar9 = 10;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fd88:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x15f0);\n    uVar10 = 4;\n    goto LAB_0004fe48;\n  }\n  if (param_2 == 0x18) {\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 6;\n      param_1[0xfb] = 0xc;\n      uVar5 = 4;\n      uVar9 = 0xc;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fea8:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x1270);\n    uVar10 = 6;\n  }\n  else {\n    if (param_2 != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }\n    else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40);\n    uVar10 = 8;\n  }\nLAB_0004fe48:\n  puVar1 = PTR_DAT_000b8348;\n  if (0 < (int)((uVar9 + 1) * uVar10)) {\n    uVar9 = param_1[0xfb];\n    uVar10 = param_1[0xfa];\n    uVar8 = 1;\n    iVar2 = 0;\n    puVar4 = param_1;\n    do {\n      if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      param_3 = param_3 + 4;\n      puVar4 = puVar4 + 1;\n    } while (iVar2 < (int)((uVar9 + 1) * uVar10));\n  }\n  puVar1 = PTR_DAT_000b8348;\n  if (-1 < (int)uVar9) {\n    param_1 = param_1 + uVar10;\n    iVar2 = uVar10 * uVar9 * 4;\n    iVar7 = 0;\n    uVar5 = 0;\n    do {\n      puVar4 = param_1 + -uVar10;\n      if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }\n      uVar5 = uVar5 + 1;\n      param_1 = param_1 + uVar10;\n      iVar7 = iVar7 + uVar10 * -4;\n      iVar2 = iVar2 + uVar10 * -4;\n    } while (uVar5 != uVar9 + 1);\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (if_statement "if (param_2 == 0x10) {\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 4;\n      param_1[0xfb] = 10;\n      uVar5 = 4;\n      uVar9 = 10;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fd88:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x15f0);\n    uVar10 = 4;\n    goto LAB_0004fe48;\n  }" if (parenthesized_expression "(param_2 == 0x10)" ( (binary_expression "param_2 == 0x10" identifier == number_literal) )) (compound_statement "{\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 4;\n      param_1[0xfb] = 10;\n      uVar5 = 4;\n      uVar9 = 10;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fd88:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x15f0);\n    uVar10 = 4;\n    goto LAB_0004fe48;\n  }" { (if_statement "if (param_4 == 0x10) {\n      param_1[0xfa] = 4;\n      param_1[0xfb] = 10;\n      uVar5 = 4;\n      uVar9 = 10;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }" if (parenthesized_expression "(param_4 == 0x10)" ( (binary_expression "param_4 == 0x10" identifier == number_literal) )) (compound_statement "{\n      param_1[0xfa] = 4;\n      param_1[0xfb] = 10;\n      uVar5 = 4;\n      uVar9 = 10;\n    }" { (expression_statement "param_1[0xfa] = 4;" (assignment_expression "param_1[0xfa] = 4" (subscript_expression "param_1[0xfa]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xfb] = 10;" (assignment_expression "param_1[0xfb] = 10" (subscript_expression "param_1[0xfb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar5 = 4;" (assignment_expression "uVar5 = 4" identifier = number_literal) ;) (expression_statement "uVar9 = 10;" (assignment_expression "uVar9 = 10" identifier = number_literal) ;) }) (else_clause "else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }" else (compound_statement "{\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }" { (if_statement "if (param_4 != 0x18) goto LAB_0004fdb4;" if (parenthesized_expression "(param_4 != 0x18)" ( (binary_expression "param_4 != 0x18" identifier != number_literal) )) (goto_statement "goto LAB_0004fdb4;" goto statement_identifier ;)) (expression_statement "uVar5 = 6;" (assignment_expression "uVar5 = 6" identifier = number_literal) ;) (expression_statement "param_1[0xfa] = 4;" (assignment_expression "param_1[0xfa] = 4" (subscript_expression "param_1[0xfa]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar9 = 0xc;" (assignment_expression "uVar9 = 0xc" identifier = number_literal) ;) (expression_statement "param_1[0xfb] = 0xc;" (assignment_expression "param_1[0xfb] = 0xc" (subscript_expression "param_1[0xfb]" identifier [ number_literal ]) = number_literal) ;) }))) (labeled_statement "LAB_0004fd88:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570);" statement_identifier : (expression_statement "param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570);" (assignment_expression "param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570)" (subscript_expression "param_1[0xf0]" identifier [ number_literal ]) = (call_expression "(uint)(PTR_LAB_000b8640 + -0x2570)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(PTR_LAB_000b8640 + -0x2570)" ( (binary_expression "PTR_LAB_000b8640 + -0x2570" identifier + number_literal) )))) ;)) (expression_statement "param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x15f0);" (assignment_expression "param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x15f0)" (subscript_expression "param_1[0xf1]" identifier [ number_literal ]) = (call_expression "(uint)(PTR_LAB_000b8640 + -0x15f0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(PTR_LAB_000b8640 + -0x15f0)" ( (binary_expression "PTR_LAB_000b8640 + -0x15f0" identifier + number_literal) )))) ;) (expression_statement "uVar10 = 4;" (assignment_expression "uVar10 = 4" identifier = number_literal) ;) (goto_statement "goto LAB_0004fe48;" goto statement_identifier ;) })) (if_statement "if (param_2 == 0x18) {\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 6;\n      param_1[0xfb] = 0xc;\n      uVar5 = 4;\n      uVar9 = 0xc;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fea8:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x1270);\n    uVar10 = 6;\n  }\n  else {\n    if (param_2 != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }\n    else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40);\n    uVar10 = 8;\n  }" if (parenthesized_expression "(param_2 == 0x18)" ( (binary_expression "param_2 == 0x18" identifier == number_literal) )) (compound_statement "{\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 6;\n      param_1[0xfb] = 0xc;\n      uVar5 = 4;\n      uVar9 = 0xc;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fea8:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x1270);\n    uVar10 = 6;\n  }" { (if_statement "if (param_4 == 0x10) {\n      param_1[0xfa] = 6;\n      param_1[0xfb] = 0xc;\n      uVar5 = 4;\n      uVar9 = 0xc;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }" if (parenthesized_expression "(param_4 == 0x10)" ( (binary_expression "param_4 == 0x10" identifier == number_literal) )) (compound_statement "{\n      param_1[0xfa] = 6;\n      param_1[0xfb] = 0xc;\n      uVar5 = 4;\n      uVar9 = 0xc;\n    }" { (expression_statement "param_1[0xfa] = 6;" (assignment_expression "param_1[0xfa] = 6" (subscript_expression "param_1[0xfa]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xfb] = 0xc;" (assignment_expression "param_1[0xfb] = 0xc" (subscript_expression "param_1[0xfb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar5 = 4;" (assignment_expression "uVar5 = 4" identifier = number_literal) ;) (expression_statement "uVar9 = 0xc;" (assignment_expression "uVar9 = 0xc" identifier = number_literal) ;) }) (else_clause "else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }" else (compound_statement "{\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }" { (if_statement "if (param_4 != 0x18) goto LAB_0004fdb4;" if (parenthesized_expression "(param_4 != 0x18)" ( (binary_expression "param_4 != 0x18" identifier != number_literal) )) (goto_statement "goto LAB_0004fdb4;" goto statement_identifier ;)) (expression_statement "uVar5 = 6;" (assignment_expression "uVar5 = 6" identifier = number_literal) ;) (expression_statement "param_1[0xfa] = 6;" (assignment_expression "param_1[0xfa] = 6" (subscript_expression "param_1[0xfa]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar9 = 0xc;" (assignment_expression "uVar9 = 0xc" identifier = number_literal) ;) (expression_statement "param_1[0xfb] = 0xc;" (assignment_expression "param_1[0xfb] = 0xc" (subscript_expression "param_1[0xfb]" identifier [ number_literal ]) = number_literal) ;) }))) (labeled_statement "LAB_0004fea8:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0);" statement_identifier : (expression_statement "param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0);" (assignment_expression "param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0)" (subscript_expression "param_1[0xf0]" identifier [ number_literal ]) = (call_expression "(uint)(PTR_LAB_000b8640 + -0x21f0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(PTR_LAB_000b8640 + -0x21f0)" ( (binary_expression "PTR_LAB_000b8640 + -0x21f0" identifier + number_literal) )))) ;)) (expression_statement "param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x1270);" (assignment_expression "param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x1270)" (subscript_expression "param_1[0xf1]" identifier [ number_literal ]) = (call_expression "(uint)(PTR_LAB_000b8640 + -0x1270)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(PTR_LAB_000b8640 + -0x1270)" ( (binary_expression "PTR_LAB_000b8640 + -0x1270" identifier + number_literal) )))) ;) (expression_statement "uVar10 = 6;" (assignment_expression "uVar10 = 6" identifier = number_literal) ;) }) (else_clause "else {\n    if (param_2 != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }\n    else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40);\n    uVar10 = 8;\n  }" else (compound_statement "{\n    if (param_2 != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }\n    else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40);\n    uVar10 = 8;\n  }" { (if_statement "if (param_2 != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }" if (parenthesized_expression "(param_2 != 0x20)" ( (binary_expression "param_2 != 0x20" identifier != number_literal) )) (compound_statement "{\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }" { (expression_statement "(*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);" (call_expression "(*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14)" (parenthesized_expression "(*(code *)PTR___assert_fail_000b8b18)" ( (pointer_expression "*(code *)PTR___assert_fail_000b8b18" * (cast_expression "(code *)PTR___assert_fail_000b8b18" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14)" ( (binary_expression "PTR_DAT_000b8348 + -0x3d74" identifier + number_literal) , (binary_expression "PTR_DAT_000b8348 + -0x3d80" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_000b8348 + -0x3c14" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (param_4 == 0x10) {\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }\n    else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }" if (parenthesized_expression "(param_4 == 0x10)" ( (binary_expression "param_4 == 0x10" identifier == number_literal) )) (compound_statement "{\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }" { (expression_statement "param_1[0xfa] = 8;" (assignment_expression "param_1[0xfa] = 8" (subscript_expression "param_1[0xfa]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xfb] = 0xe;" (assignment_expression "param_1[0xfb] = 0xe" (subscript_expression "param_1[0xfb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar5 = 4;" (assignment_expression "uVar5 = 4" identifier = number_literal) ;) (expression_statement "uVar9 = 0xe;" (assignment_expression "uVar9 = 0xe" identifier = number_literal) ;) }) (else_clause "else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }" else (if_statement "if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }" if (parenthesized_expression "(param_4 == 0x18)" ( (binary_expression "param_4 == 0x18" identifier == number_literal) )) (compound_statement "{\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }" { (expression_statement "uVar5 = 6;" (assignment_expression "uVar5 = 6" identifier = number_literal) ;) (expression_statement "param_1[0xfa] = 8;" (assignment_expression "param_1[0xfa] = 8" (subscript_expression "param_1[0xfa]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar9 = 0xe;" (assignment_expression "uVar9 = 0xe" identifier = number_literal) ;) (expression_statement "param_1[0xfb] = 0xe;" (assignment_expression "param_1[0xfb] = 0xe" (subscript_expression "param_1[0xfb]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }" else (compound_statement "{\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }" { (labeled_statement "LAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }" statement_identifier : (if_statement "if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }" if (parenthesized_expression "(param_4 != 0x20)" ( (binary_expression "param_4 != 0x20" identifier != number_literal) )) (compound_statement "{\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }" { (expression_statement "(*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);" (call_expression "(*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14)" (parenthesized_expression "(*(code *)PTR___assert_fail_000b8b18)" ( (pointer_expression "*(code *)PTR___assert_fail_000b8b18" * (cast_expression "(code *)PTR___assert_fail_000b8b18" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14)" ( (binary_expression "PTR_DAT_000b8348 + -0x3d40" identifier + number_literal) , (binary_expression "PTR_DAT_000b8348 + -0x3d80" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_000b8348 + -0x3c14" identifier + number_literal) ))) ;) (return_statement "return;" return ;) }))) (expression_statement "uVar5 = 8;" (assignment_expression "uVar5 = 8" identifier = number_literal) ;) (if_statement "if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }" if (parenthesized_expression "(param_2 < 0)" ( (binary_expression "param_2 < 0" identifier < number_literal) )) (compound_statement "{\n        param_2 = param_2 + 3;\n      }" { (expression_statement "param_2 = param_2 + 3;" (assignment_expression "param_2 = param_2 + 3" identifier = (binary_expression "param_2 + 3" identifier + number_literal)) ;) })) (expression_statement "uVar10 = param_2 >> 2;" (assignment_expression "uVar10 = param_2 >> 2" identifier = (binary_expression "param_2 >> 2" identifier >> number_literal)) ;) (expression_statement "param_1[0xfa] = uVar10;" (assignment_expression "param_1[0xfa] = uVar10" (subscript_expression "param_1[0xfa]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar9 = uVar5;" (assignment_expression "uVar9 = uVar5" identifier = identifier) ;) (if_statement "if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }" if (parenthesized_expression "(7 < (int)uVar10)" ( (binary_expression "7 < (int)uVar10" number_literal < (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        uVar9 = uVar10;\n      }" { (expression_statement "uVar9 = uVar10;" (assignment_expression "uVar9 = uVar10" identifier = identifier) ;) })) (expression_statement "uVar9 = uVar9 + 6;" (assignment_expression "uVar9 = uVar9 + 6" identifier = (binary_expression "uVar9 + 6" identifier + number_literal)) ;) (expression_statement "param_1[0xfb] = uVar9;" (assignment_expression "param_1[0xfb] = uVar9" (subscript_expression "param_1[0xfb]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }" if (parenthesized_expression "(uVar10 != 8)" ( (binary_expression "uVar10 != 8" identifier != number_literal) )) (compound_statement "{\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }" { (if_statement "if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }" if (parenthesized_expression "(uVar10 != 6)" ( (binary_expression "uVar10 != 6" identifier != number_literal) )) (compound_statement "{\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }" { (if_statement "if (uVar10 != 4) goto LAB_0004fe48;" if (parenthesized_expression "(uVar10 != 4)" ( (binary_expression "uVar10 != 4" identifier != number_literal) )) (goto_statement "goto LAB_0004fe48;" goto statement_identifier ;)) (goto_statement "goto LAB_0004fd88;" goto statement_identifier ;) })) (goto_statement "goto LAB_0004fea8;" goto statement_identifier ;) })) }))))) (expression_statement "param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0);" (assignment_expression "param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0)" (subscript_expression "param_1[0xf0]" identifier [ number_literal ]) = (call_expression "(uint)(PTR_LAB_000b8640 + -0x1cc0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(PTR_LAB_000b8640 + -0x1cc0)" ( (binary_expression "PTR_LAB_000b8640 + -0x1cc0" identifier + number_literal) )))) ;) (expression_statement "param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40);" (assignment_expression "param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40)" (subscript_expression "param_1[0xf1]" identifier [ number_literal ]) = (call_expression "(uint)(PTR_LAB_000b8640 + -0xd40)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(PTR_LAB_000b8640 + -0xd40)" ( (binary_expression "PTR_LAB_000b8640 + -0xd40" identifier + number_literal) )))) ;) (expression_statement "uVar10 = 8;" (assignment_expression "uVar10 = 8" identifier = number_literal) ;) }))) (labeled_statement "LAB_0004fe48:\n  puVar1 = PTR_DAT_000b8348;" statement_identifier : (expression_statement "puVar1 = PTR_DAT_000b8348;" (assignment_expression "puVar1 = PTR_DAT_000b8348" identifier = identifier) ;)) (if_statement "if (0 < (int)((uVar9 + 1) * uVar10)) {\n    uVar9 = param_1[0xfb];\n    uVar10 = param_1[0xfa];\n    uVar8 = 1;\n    iVar2 = 0;\n    puVar4 = param_1;\n    do {\n      if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      param_3 = param_3 + 4;\n      puVar4 = puVar4 + 1;\n    } while (iVar2 < (int)((uVar9 + 1) * uVar10));\n  }" if (parenthesized_expression "(0 < (int)((uVar9 + 1) * uVar10))" ( (binary_expression "0 < (int)((uVar9 + 1) * uVar10)" number_literal < (cast_expression "(int)((uVar9 + 1) * uVar10)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar9 + 1) * uVar10)" ( (binary_expression "(uVar9 + 1) * uVar10" (parenthesized_expression "(uVar9 + 1)" ( (binary_expression "uVar9 + 1" identifier + number_literal) )) * identifier) )))) )) (compound_statement "{\n    uVar9 = param_1[0xfb];\n    uVar10 = param_1[0xfa];\n    uVar8 = 1;\n    iVar2 = 0;\n    puVar4 = param_1;\n    do {\n      if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      param_3 = param_3 + 4;\n      puVar4 = puVar4 + 1;\n    } while (iVar2 < (int)((uVar9 + 1) * uVar10));\n  }" { (expression_statement "uVar9 = param_1[0xfb];" (assignment_expression "uVar9 = param_1[0xfb]" identifier = (subscript_expression "param_1[0xfb]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = param_1[0xfa];" (assignment_expression "uVar10 = param_1[0xfa]" identifier = (subscript_expression "param_1[0xfa]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (expression_statement "puVar4 = param_1;" (assignment_expression "puVar4 = param_1" identifier = identifier) ;) (do_statement "do {\n      if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      param_3 = param_3 + 4;\n      puVar4 = puVar4 + 1;\n    } while (iVar2 < (int)((uVar9 + 1) * uVar10));" do (compound_statement "{\n      if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      param_3 = param_3 + 4;\n      puVar4 = puVar4 + 1;\n    }" { (if_statement "if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }" if (parenthesized_expression "(iVar2 < (int)uVar5)" ( (binary_expression "iVar2 < (int)uVar5" identifier < (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }" { (expression_statement "*puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;" (assignment_expression "*puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8" (pointer_expression "*puVar4" * identifier) = (binary_expression "(uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8" (binary_expression "(uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3]" (binary_expression "(uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10" (binary_expression "(uint)*param_3 << 0x18" (binary_expression "(uint)*param_3" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal) | (binary_expression "(uint)param_3[1] << 0x10" (cast_expression "(uint)param_3[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) | (binary_expression "(uint)param_3[2] << 8" (cast_expression "(uint)param_3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) << number_literal))) ;) }) (else_clause "else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }" else (compound_statement "{\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }" { (if_statement "if (uVar5 == 0) {\n          trap(7);\n        }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          trap(7);\n        }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar3 = puVar4[-1];" (assignment_expression "uVar3 = puVar4[-1]" identifier = (subscript_expression "puVar4[-1]" identifier [ number_literal ])) ;) (if_statement "if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }" if (parenthesized_expression "(iVar2 % (int)uVar5 == 0)" ( (binary_expression "iVar2 % (int)uVar5 == 0" (binary_expression "iVar2 % (int)uVar5" identifier % (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) == number_literal) )) (compound_statement "{\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }" { (expression_statement "uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];" (assignment_expression "uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08]" identifier = (binary_expression "((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08]" (binary_expression "((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8" (parenthesized_expression "((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08])" ( (binary_expression "(((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]" (binary_expression "(((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8" (parenthesized_expression "(((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08])" ( (binary_expression "((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]" (binary_expression "((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8" (parenthesized_expression "((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8)" ( (binary_expression "(byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8" (cast_expression "(byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]" identifier [ (binary_expression "((uVar3 << 8) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar3 << 8) >> 0x18)" ( (binary_expression "(uVar3 << 8) >> 0x18" (parenthesized_expression "(uVar3 << 8)" ( (binary_expression "uVar3 << 8" identifier << number_literal) )) >> number_literal) )) - number_literal) ])) ^ identifier) )) << number_literal) | (cast_expression "(uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]" identifier [ (binary_expression "((uVar3 << 0x10) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar3 << 0x10) >> 0x18)" ( (binary_expression "(uVar3 << 0x10) >> 0x18" (parenthesized_expression "(uVar3 << 0x10)" ( (binary_expression "uVar3 << 0x10" identifier << number_literal) )) >> number_literal) )) - number_literal) ])))) )) << number_literal) | (cast_expression "(uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar1[(uVar3 & 0xff) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[(uVar3 & 0xff) - 0x1b08]" identifier [ (binary_expression "(uVar3 & 0xff) - 0x1b08" (parenthesized_expression "(uVar3 & 0xff)" ( (binary_expression "uVar3 & 0xff" identifier & number_literal) )) - number_literal) ])))) )) << number_literal) | (cast_expression "(uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar1[(uVar3 >> 0x18) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[(uVar3 >> 0x18) - 0x1b08]" identifier [ (binary_expression "(uVar3 >> 0x18) - 0x1b08" (parenthesized_expression "(uVar3 >> 0x18)" ( (binary_expression "uVar3 >> 0x18" identifier >> number_literal) )) - number_literal) ]))))) ;) (expression_statement "uVar6 = uVar8 & 0x80;" (assignment_expression "uVar6 = uVar8 & 0x80" identifier = (binary_expression "uVar8 & 0x80" identifier & number_literal)) ;) (if_statement "if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (compound_statement "{\n            uVar6 = 0x1b;\n          }" { (expression_statement "uVar6 = 0x1b;" (assignment_expression "uVar6 = 0x1b" identifier = number_literal) ;) })) (expression_statement "uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;" (assignment_expression "uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6" identifier = (binary_expression "(uVar8 & 0x7f) << 1 ^ uVar6" (binary_expression "(uVar8 & 0x7f) << 1" (parenthesized_expression "(uVar8 & 0x7f)" ( (binary_expression "uVar8 & 0x7f" identifier & number_literal) )) << number_literal) ^ identifier)) ;) }) (else_clause "else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }" else (if_statement "if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }" if (parenthesized_expression "((iVar2 % (int)uVar5 == 4) && (0x1b < param_4))" ( (binary_expression "(iVar2 % (int)uVar5 == 4) && (0x1b < param_4)" (parenthesized_expression "(iVar2 % (int)uVar5 == 4)" ( (binary_expression "iVar2 % (int)uVar5 == 4" (binary_expression "iVar2 % (int)uVar5" identifier % (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) == number_literal) )) && (parenthesized_expression "(0x1b < param_4)" ( (binary_expression "0x1b < param_4" number_literal < identifier) ))) )) (compound_statement "{\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }" { (expression_statement "uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);" (assignment_expression "uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08])" identifier = (call_expression "CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08])" identifier (argument_list "(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08])" ( (call_expression "CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08])" identifier (argument_list "(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08])" ( (call_expression "CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08])" identifier (argument_list "(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08])" ( (subscript_expression "puVar1[(uVar3 >> 0x18) - 0x1b08]" identifier [ (binary_expression "(uVar3 >> 0x18) - 0x1b08" (parenthesized_expression "(uVar3 >> 0x18)" ( (binary_expression "uVar3 >> 0x18" identifier >> number_literal) )) - number_literal) ]) , (subscript_expression "puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]" identifier [ (binary_expression "((uVar3 << 8) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar3 << 8) >> 0x18)" ( (binary_expression "(uVar3 << 8) >> 0x18" (parenthesized_expression "(uVar3 << 8)" ( (binary_expression "uVar3 << 8" identifier << number_literal) )) >> number_literal) )) - number_literal) ]) ))) , (subscript_expression "puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]" identifier [ (binary_expression "((uVar3 << 0x10) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar3 << 0x10) >> 0x18)" ( (binary_expression "(uVar3 << 0x10) >> 0x18" (parenthesized_expression "(uVar3 << 0x10)" ( (binary_expression "uVar3 << 0x10" identifier << number_literal) )) >> number_literal) )) - number_literal) ]) ))) , (subscript_expression "puVar1[(uVar3 & 0xff) - 0x1b08]" identifier [ (binary_expression "(uVar3 & 0xff) - 0x1b08" (parenthesized_expression "(uVar3 & 0xff)" ( (binary_expression "uVar3 & 0xff" identifier & number_literal) )) - number_literal) ]) )))) ;) })))) (expression_statement "*puVar4 = puVar4[-uVar5] ^ uVar3;" (assignment_expression "*puVar4 = puVar4[-uVar5] ^ uVar3" (pointer_expression "*puVar4" * identifier) = (binary_expression "puVar4[-uVar5] ^ uVar3" (subscript_expression "puVar4[-uVar5]" identifier [ (unary_expression "-uVar5" - identifier) ]) ^ identifier)) ;) }))) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (expression_statement "param_3 = param_3 + 4;" (assignment_expression "param_3 = param_3 + 4" identifier = (binary_expression "param_3 + 4" identifier + number_literal)) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 < (int)((uVar9 + 1) * uVar10))" ( (binary_expression "iVar2 < (int)((uVar9 + 1) * uVar10)" identifier < (cast_expression "(int)((uVar9 + 1) * uVar10)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar9 + 1) * uVar10)" ( (binary_expression "(uVar9 + 1) * uVar10" (parenthesized_expression "(uVar9 + 1)" ( (binary_expression "uVar9 + 1" identifier + number_literal) )) * identifier) )))) )) ;) })) (expression_statement "puVar1 = PTR_DAT_000b8348;" (assignment_expression "puVar1 = PTR_DAT_000b8348" identifier = identifier) ;) (if_statement "if (-1 < (int)uVar9) {\n    param_1 = param_1 + uVar10;\n    iVar2 = uVar10 * uVar9 * 4;\n    iVar7 = 0;\n    uVar5 = 0;\n    do {\n      puVar4 = param_1 + -uVar10;\n      if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }\n      uVar5 = uVar5 + 1;\n      param_1 = param_1 + uVar10;\n      iVar7 = iVar7 + uVar10 * -4;\n      iVar2 = iVar2 + uVar10 * -4;\n    } while (uVar5 != uVar9 + 1);\n  }" if (parenthesized_expression "(-1 < (int)uVar9)" ( (binary_expression "-1 < (int)uVar9" number_literal < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    param_1 = param_1 + uVar10;\n    iVar2 = uVar10 * uVar9 * 4;\n    iVar7 = 0;\n    uVar5 = 0;\n    do {\n      puVar4 = param_1 + -uVar10;\n      if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }\n      uVar5 = uVar5 + 1;\n      param_1 = param_1 + uVar10;\n      iVar7 = iVar7 + uVar10 * -4;\n      iVar2 = iVar2 + uVar10 * -4;\n    } while (uVar5 != uVar9 + 1);\n  }" { (expression_statement "param_1 = param_1 + uVar10;" (assignment_expression "param_1 = param_1 + uVar10" identifier = (binary_expression "param_1 + uVar10" identifier + identifier)) ;) (expression_statement "iVar2 = uVar10 * uVar9 * 4;" (assignment_expression "iVar2 = uVar10 * uVar9 * 4" identifier = (binary_expression "uVar10 * uVar9 * 4" (binary_expression "uVar10 * uVar9" identifier * identifier) * number_literal)) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n      puVar4 = param_1 + -uVar10;\n      if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }\n      uVar5 = uVar5 + 1;\n      param_1 = param_1 + uVar10;\n      iVar7 = iVar7 + uVar10 * -4;\n      iVar2 = iVar2 + uVar10 * -4;\n    } while (uVar5 != uVar9 + 1);" do (compound_statement "{\n      puVar4 = param_1 + -uVar10;\n      if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }\n      uVar5 = uVar5 + 1;\n      param_1 = param_1 + uVar10;\n      iVar7 = iVar7 + uVar10 * -4;\n      iVar2 = iVar2 + uVar10 * -4;\n    }" { (expression_statement "puVar4 = param_1 + -uVar10;" (assignment_expression "puVar4 = param_1 + -uVar10" identifier = (binary_expression "param_1 + -uVar10" identifier + (unary_expression "-uVar10" - identifier))) ;) (if_statement "if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }" if (parenthesized_expression "(0 < (int)uVar10)" ( (binary_expression "0 < (int)uVar10" number_literal < (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }" { (do_statement "do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);" do (compound_statement "{\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        }" { (expression_statement "uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);" (assignment_expression "uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7)" identifier = (pointer_expression "*(uint *)((int)puVar4 + iVar2 + iVar7)" * (cast_expression "(uint *)((int)puVar4 + iVar2 + iVar7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + iVar2 + iVar7)" ( (binary_expression "(int)puVar4 + iVar2 + iVar7" (binary_expression "(int)puVar4 + iVar2" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier) ))))) ;) (if_statement "if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }" if (parenthesized_expression "((uVar5 != 0) && (uVar9 != uVar5))" ( (binary_expression "(uVar5 != 0) && (uVar9 != uVar5)" (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar9 != uVar5)" ( (binary_expression "uVar9 != uVar5" identifier != identifier) ))) )) (compound_statement "{\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }" { (expression_statement "uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);" (assignment_expression "uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808)" identifier = (binary_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808)" (binary_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408)" (binary_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008)" (pointer_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08)" * (cast_expression "(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08)" ( (binary_expression "puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08" (binary_expression "puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4" identifier + (binary_expression "(uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4" (cast_expression "(uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar1[(uVar8 & 0xff) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[(uVar8 & 0xff) - 0x1b08]" identifier [ (binary_expression "(uVar8 & 0xff) - 0x1b08" (parenthesized_expression "(uVar8 & 0xff)" ( (binary_expression "uVar8 & 0xff" identifier & number_literal) )) - number_literal) ]))) * number_literal)) + number_literal) )))) ^ (pointer_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008)" * (cast_expression "(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008)" ( (binary_expression "puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008" (binary_expression "puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4" identifier + (binary_expression "(uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4" (cast_expression "(uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar1[(uVar8 >> 0x18) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[(uVar8 >> 0x18) - 0x1b08]" identifier [ (binary_expression "(uVar8 >> 0x18) - 0x1b08" (parenthesized_expression "(uVar8 >> 0x18)" ( (binary_expression "uVar8 >> 0x18" identifier >> number_literal) )) - number_literal) ]))) * number_literal)) + number_literal) ))))) ^ (pointer_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408)" * (cast_expression "(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408)" ( (binary_expression "puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408" (binary_expression "puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4" identifier + (binary_expression "(uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4" (cast_expression "(uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[((uVar8 << 8) >> 0x18) - 0x1b08]" identifier [ (binary_expression "((uVar8 << 8) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar8 << 8) >> 0x18)" ( (binary_expression "(uVar8 << 8) >> 0x18" (parenthesized_expression "(uVar8 << 8)" ( (binary_expression "uVar8 << 8" identifier << number_literal) )) >> number_literal) )) - number_literal) ]))) * number_literal)) + number_literal) ))))) ^ (pointer_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808)" * (cast_expression "(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808)" ( (binary_expression "puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808" (binary_expression "puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4" identifier + (binary_expression "(uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4" (cast_expression "(uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08]" identifier [ (binary_expression "((uVar8 << 0x10) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar8 << 0x10) >> 0x18)" ( (binary_expression "(uVar8 << 0x10) >> 0x18" (parenthesized_expression "(uVar8 << 0x10)" ( (binary_expression "uVar8 << 0x10" identifier << number_literal) )) >> number_literal) )) - number_literal) ]))) * number_literal)) + number_literal) )))))) ;) })) (expression_statement "puVar4[0x78] = uVar8;" (assignment_expression "puVar4[0x78] = uVar8" (subscript_expression "puVar4[0x78]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar4 != param_1)" ( (binary_expression "puVar4 != param_1" identifier != identifier) )) ;) })) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (expression_statement "param_1 = param_1 + uVar10;" (assignment_expression "param_1 = param_1 + uVar10" identifier = (binary_expression "param_1 + uVar10" identifier + identifier)) ;) (expression_statement "iVar7 = iVar7 + uVar10 * -4;" (assignment_expression "iVar7 = iVar7 + uVar10 * -4" identifier = (binary_expression "iVar7 + uVar10 * -4" identifier + (binary_expression "uVar10 * -4" identifier * number_literal))) ;) (expression_statement "iVar2 = iVar2 + uVar10 * -4;" (assignment_expression "iVar2 = iVar2 + uVar10 * -4" identifier = (binary_expression "iVar2 + uVar10 * -4" identifier + (binary_expression "uVar10 * -4" identifier * number_literal))) ;) }) while (parenthesized_expression "(uVar5 != uVar9 + 1)" ( (binary_expression "uVar5 != uVar9 + 1" identifier != (binary_expression "uVar9 + 1" identifier + number_literal)) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Removing unreachable block (ram,0x0004ff3c) */\n/* WARNING: Removing unreachable block (ram,0x0004fb20) */\n/* WARNING: Removing unreachable block (ram,0x0004ff5c) */\n/* WARNING: Removing unreachable block (ram,0x0004ff64) */\n/* WARNING: Removing unreachable block (ram,0x0004ff4c) */\n/* WARNING: Removing unreachable block (ram,0x0004ff44) */\n/* WARNING: Removing unreachable block (ram,0x0004ff54) */\n/* WARNING: Removing unreachable block (ram,0x0004fac4) */\n\nvoid aes_setup(AESContext *ctx,int blocklen,uchar *key,int keylen)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  word32 *pwVar4;\n  AESContext *pAVar5;\n  word32 *pwVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  \n  if (blocklen == 0x10) {\n    if (keylen == 0x10) {\n      ctx->Nb = 4;\n      ctx->Nr = 10;\n      iVar7 = 4;\n      iVar11 = 10;\n    }\n    else {\n      if (keylen != 0x18) goto LAB_0004fdb4;\n      iVar7 = 6;\n      ctx->Nb = 4;\n      iVar11 = 0xc;\n      ctx->Nr = 0xc;\n    }\nLAB_0004fd88:\n    ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x2570);\n    ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x15f0);\n    iVar12 = 4;\n    goto LAB_0004fe48;\n  }\n  if (blocklen == 0x18) {\n    if (keylen == 0x10) {\n      ctx->Nb = 6;\n      ctx->Nr = 0xc;\n      iVar7 = 4;\n      iVar11 = 0xc;\n    }\n    else {\n      if (keylen != 0x18) goto LAB_0004fdb4;\n      iVar7 = 6;\n      ctx->Nb = 6;\n      iVar11 = 0xc;\n      ctx->Nr = 0xc;\n    }\nLAB_0004fea8:\n    ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x21f0);\n    ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x1270);\n    iVar12 = 6;\n  }\n  else {\n    if (blocklen != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_PC2_1357_27__000b8348 + -0x3d74,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a6,\n                 PTR_PC2_1357_27__000b8348 + -0x3c14);\n      return;\n    }\n    if (keylen == 0x10) {\n      ctx->Nb = 8;\n      ctx->Nr = 0xe;\n      iVar7 = 4;\n      iVar11 = 0xe;\n    }\n    else if (keylen == 0x18) {\n      iVar7 = 6;\n      ctx->Nb = 8;\n      iVar11 = 0xe;\n      ctx->Nr = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (keylen != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_PC2_1357_27__000b8348 + -0x3d40,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a7,\n                   PTR_PC2_1357_27__000b8348 + -0x3c14);\n        return;\n      }\n      iVar7 = 8;\n      if (blocklen < 0) {\n        blocklen = blocklen + 3;\n      }\n      iVar12 = blocklen >> 2;\n      ctx->Nb = iVar12;\n      iVar11 = iVar7;\n      if (7 < iVar12) {\n        iVar11 = iVar12;\n      }\n      iVar11 = iVar11 + 6;\n      ctx->Nr = iVar11;\n      if (iVar12 != 8) {\n        if (iVar12 != 6) {\n          if (iVar12 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x1cc0);\n    ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0xd40);\n    iVar12 = 8;\n  }\nLAB_0004fe48:\n  puVar1 = PTR_PC2_1357_27__000b8348;\n  if (0 < (iVar11 + 1) * iVar12) {\n    iVar11 = ctx->Nr;\n    iVar12 = ctx->Nb;\n    uVar10 = 1;\n    iVar2 = 0;\n    pAVar5 = ctx;\n    do {\n      if (iVar2 < iVar7) {\n        pAVar5->keysched[0] =\n             (uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3] | (uint)key[2] << 8;\n      }\n      else {\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        uVar3 = pAVar5[-1].Nr;\n        if (iVar2 % iVar7 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar8 = uVar10 & 0x80;\n          if (uVar8 != 0) {\n            uVar8 = 0x1b;\n          }\n          uVar10 = (uVar10 & 0x7f) << 1 ^ uVar8;\n        }\n        else if ((iVar2 % iVar7 == 4) && (0x1b < keylen)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        pAVar5->keysched[0] = *(uint *)((int)pAVar5 + iVar7 * -4) ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      key = key + 4;\n      pAVar5 = (AESContext *)(pAVar5->keysched + 1);\n    } while (iVar2 < (iVar11 + 1) * iVar12);\n  }\n  puVar1 = PTR_PC2_1357_27__000b8348;\n  if (-1 < iVar11) {\n    pwVar6 = ctx->keysched;\n    iVar2 = iVar12 * iVar11 * 4;\n    iVar9 = 0;\n    iVar7 = 0;\n    do {\n      pwVar6 = pwVar6 + iVar12;\n      pwVar4 = pwVar6 + -iVar12;\n      if (0 < iVar12) {\n        do {\n          uVar10 = *(uint *)((int)pwVar4 + iVar2 + iVar9);\n          if ((iVar7 != 0) && (iVar11 != iVar7)) {\n            uVar10 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08)\n                     ^ *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +\n                                          -0x3008) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4 +\n                                        -0x3408) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4\n                                        + -0x3808);\n          }\n          pwVar4[0x78] = uVar10;\n          pwVar4 = pwVar4 + 1;\n        } while (pwVar4 != pwVar6);\n      }\n      iVar7 = iVar7 + 1;\n      iVar9 = iVar9 + iVar12 * -4;\n      iVar2 = iVar2 + iVar12 * -4;\n    } while (iVar7 != iVar11 + 1);\n  }\n  return;\n}\n\n" comment comment comment comment comment comment comment comment (function_definition "void aes_setup(AESContext *ctx,int blocklen,uchar *key,int keylen)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  word32 *pwVar4;\n  AESContext *pAVar5;\n  word32 *pwVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  \n  if (blocklen == 0x10) {\n    if (keylen == 0x10) {\n      ctx->Nb = 4;\n      ctx->Nr = 10;\n      iVar7 = 4;\n      iVar11 = 10;\n    }\n    else {\n      if (keylen != 0x18) goto LAB_0004fdb4;\n      iVar7 = 6;\n      ctx->Nb = 4;\n      iVar11 = 0xc;\n      ctx->Nr = 0xc;\n    }\nLAB_0004fd88:\n    ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x2570);\n    ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x15f0);\n    iVar12 = 4;\n    goto LAB_0004fe48;\n  }\n  if (blocklen == 0x18) {\n    if (keylen == 0x10) {\n      ctx->Nb = 6;\n      ctx->Nr = 0xc;\n      iVar7 = 4;\n      iVar11 = 0xc;\n    }\n    else {\n      if (keylen != 0x18) goto LAB_0004fdb4;\n      iVar7 = 6;\n      ctx->Nb = 6;\n      iVar11 = 0xc;\n      ctx->Nr = 0xc;\n    }\nLAB_0004fea8:\n    ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x21f0);\n    ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x1270);\n    iVar12 = 6;\n  }\n  else {\n    if (blocklen != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_PC2_1357_27__000b8348 + -0x3d74,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a6,\n                 PTR_PC2_1357_27__000b8348 + -0x3c14);\n      return;\n    }\n    if (keylen == 0x10) {\n      ctx->Nb = 8;\n      ctx->Nr = 0xe;\n      iVar7 = 4;\n      iVar11 = 0xe;\n    }\n    else if (keylen == 0x18) {\n      iVar7 = 6;\n      ctx->Nb = 8;\n      iVar11 = 0xe;\n      ctx->Nr = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (keylen != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_PC2_1357_27__000b8348 + -0x3d40,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a7,\n                   PTR_PC2_1357_27__000b8348 + -0x3c14);\n        return;\n      }\n      iVar7 = 8;\n      if (blocklen < 0) {\n        blocklen = blocklen + 3;\n      }\n      iVar12 = blocklen >> 2;\n      ctx->Nb = iVar12;\n      iVar11 = iVar7;\n      if (7 < iVar12) {\n        iVar11 = iVar12;\n      }\n      iVar11 = iVar11 + 6;\n      ctx->Nr = iVar11;\n      if (iVar12 != 8) {\n        if (iVar12 != 6) {\n          if (iVar12 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x1cc0);\n    ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0xd40);\n    iVar12 = 8;\n  }\nLAB_0004fe48:\n  puVar1 = PTR_PC2_1357_27__000b8348;\n  if (0 < (iVar11 + 1) * iVar12) {\n    iVar11 = ctx->Nr;\n    iVar12 = ctx->Nb;\n    uVar10 = 1;\n    iVar2 = 0;\n    pAVar5 = ctx;\n    do {\n      if (iVar2 < iVar7) {\n        pAVar5->keysched[0] =\n             (uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3] | (uint)key[2] << 8;\n      }\n      else {\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        uVar3 = pAVar5[-1].Nr;\n        if (iVar2 % iVar7 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar8 = uVar10 & 0x80;\n          if (uVar8 != 0) {\n            uVar8 = 0x1b;\n          }\n          uVar10 = (uVar10 & 0x7f) << 1 ^ uVar8;\n        }\n        else if ((iVar2 % iVar7 == 4) && (0x1b < keylen)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        pAVar5->keysched[0] = *(uint *)((int)pAVar5 + iVar7 * -4) ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      key = key + 4;\n      pAVar5 = (AESContext *)(pAVar5->keysched + 1);\n    } while (iVar2 < (iVar11 + 1) * iVar12);\n  }\n  puVar1 = PTR_PC2_1357_27__000b8348;\n  if (-1 < iVar11) {\n    pwVar6 = ctx->keysched;\n    iVar2 = iVar12 * iVar11 * 4;\n    iVar9 = 0;\n    iVar7 = 0;\n    do {\n      pwVar6 = pwVar6 + iVar12;\n      pwVar4 = pwVar6 + -iVar12;\n      if (0 < iVar12) {\n        do {\n          uVar10 = *(uint *)((int)pwVar4 + iVar2 + iVar9);\n          if ((iVar7 != 0) && (iVar11 != iVar7)) {\n            uVar10 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08)\n                     ^ *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +\n                                          -0x3008) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4 +\n                                        -0x3408) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4\n                                        + -0x3808);\n          }\n          pwVar4[0x78] = uVar10;\n          pwVar4 = pwVar4 + 1;\n        } while (pwVar4 != pwVar6);\n      }\n      iVar7 = iVar7 + 1;\n      iVar9 = iVar9 + iVar12 * -4;\n      iVar2 = iVar2 + iVar12 * -4;\n    } while (iVar7 != iVar11 + 1);\n  }\n  return;\n}" primitive_type (function_declarator "aes_setup(AESContext *ctx,int blocklen,uchar *key,int keylen)" identifier (parameter_list "(AESContext *ctx,int blocklen,uchar *key,int keylen)" ( (parameter_declaration "AESContext *ctx" type_identifier (pointer_declarator "*ctx" * identifier)) , (parameter_declaration "int blocklen" primitive_type identifier) , (parameter_declaration "uchar *key" type_identifier (pointer_declarator "*key" * identifier)) , (parameter_declaration "int keylen" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  word32 *pwVar4;\n  AESContext *pAVar5;\n  word32 *pwVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  \n  if (blocklen == 0x10) {\n    if (keylen == 0x10) {\n      ctx->Nb = 4;\n      ctx->Nr = 10;\n      iVar7 = 4;\n      iVar11 = 10;\n    }\n    else {\n      if (keylen != 0x18) goto LAB_0004fdb4;\n      iVar7 = 6;\n      ctx->Nb = 4;\n      iVar11 = 0xc;\n      ctx->Nr = 0xc;\n    }\nLAB_0004fd88:\n    ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x2570);\n    ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x15f0);\n    iVar12 = 4;\n    goto LAB_0004fe48;\n  }\n  if (blocklen == 0x18) {\n    if (keylen == 0x10) {\n      ctx->Nb = 6;\n      ctx->Nr = 0xc;\n      iVar7 = 4;\n      iVar11 = 0xc;\n    }\n    else {\n      if (keylen != 0x18) goto LAB_0004fdb4;\n      iVar7 = 6;\n      ctx->Nb = 6;\n      iVar11 = 0xc;\n      ctx->Nr = 0xc;\n    }\nLAB_0004fea8:\n    ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x21f0);\n    ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x1270);\n    iVar12 = 6;\n  }\n  else {\n    if (blocklen != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_PC2_1357_27__000b8348 + -0x3d74,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a6,\n                 PTR_PC2_1357_27__000b8348 + -0x3c14);\n      return;\n    }\n    if (keylen == 0x10) {\n      ctx->Nb = 8;\n      ctx->Nr = 0xe;\n      iVar7 = 4;\n      iVar11 = 0xe;\n    }\n    else if (keylen == 0x18) {\n      iVar7 = 6;\n      ctx->Nb = 8;\n      iVar11 = 0xe;\n      ctx->Nr = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (keylen != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_PC2_1357_27__000b8348 + -0x3d40,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a7,\n                   PTR_PC2_1357_27__000b8348 + -0x3c14);\n        return;\n      }\n      iVar7 = 8;\n      if (blocklen < 0) {\n        blocklen = blocklen + 3;\n      }\n      iVar12 = blocklen >> 2;\n      ctx->Nb = iVar12;\n      iVar11 = iVar7;\n      if (7 < iVar12) {\n        iVar11 = iVar12;\n      }\n      iVar11 = iVar11 + 6;\n      ctx->Nr = iVar11;\n      if (iVar12 != 8) {\n        if (iVar12 != 6) {\n          if (iVar12 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x1cc0);\n    ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0xd40);\n    iVar12 = 8;\n  }\nLAB_0004fe48:\n  puVar1 = PTR_PC2_1357_27__000b8348;\n  if (0 < (iVar11 + 1) * iVar12) {\n    iVar11 = ctx->Nr;\n    iVar12 = ctx->Nb;\n    uVar10 = 1;\n    iVar2 = 0;\n    pAVar5 = ctx;\n    do {\n      if (iVar2 < iVar7) {\n        pAVar5->keysched[0] =\n             (uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3] | (uint)key[2] << 8;\n      }\n      else {\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        uVar3 = pAVar5[-1].Nr;\n        if (iVar2 % iVar7 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar8 = uVar10 & 0x80;\n          if (uVar8 != 0) {\n            uVar8 = 0x1b;\n          }\n          uVar10 = (uVar10 & 0x7f) << 1 ^ uVar8;\n        }\n        else if ((iVar2 % iVar7 == 4) && (0x1b < keylen)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        pAVar5->keysched[0] = *(uint *)((int)pAVar5 + iVar7 * -4) ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      key = key + 4;\n      pAVar5 = (AESContext *)(pAVar5->keysched + 1);\n    } while (iVar2 < (iVar11 + 1) * iVar12);\n  }\n  puVar1 = PTR_PC2_1357_27__000b8348;\n  if (-1 < iVar11) {\n    pwVar6 = ctx->keysched;\n    iVar2 = iVar12 * iVar11 * 4;\n    iVar9 = 0;\n    iVar7 = 0;\n    do {\n      pwVar6 = pwVar6 + iVar12;\n      pwVar4 = pwVar6 + -iVar12;\n      if (0 < iVar12) {\n        do {\n          uVar10 = *(uint *)((int)pwVar4 + iVar2 + iVar9);\n          if ((iVar7 != 0) && (iVar11 != iVar7)) {\n            uVar10 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08)\n                     ^ *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +\n                                          -0x3008) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4 +\n                                        -0x3408) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4\n                                        + -0x3808);\n          }\n          pwVar4[0x78] = uVar10;\n          pwVar4 = pwVar4 + 1;\n        } while (pwVar4 != pwVar6);\n      }\n      iVar7 = iVar7 + 1;\n      iVar9 = iVar9 + iVar12 * -4;\n      iVar2 = iVar2 + iVar12 * -4;\n    } while (iVar7 != iVar11 + 1);\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "word32 *pwVar4;" type_identifier (pointer_declarator "*pwVar4" * identifier) ;) (declaration "AESContext *pAVar5;" type_identifier (pointer_declarator "*pAVar5" * identifier) ;) (declaration "word32 *pwVar6;" type_identifier (pointer_declarator "*pwVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (if_statement "if (blocklen == 0x10) {\n    if (keylen == 0x10) {\n      ctx->Nb = 4;\n      ctx->Nr = 10;\n      iVar7 = 4;\n      iVar11 = 10;\n    }\n    else {\n      if (keylen != 0x18) goto LAB_0004fdb4;\n      iVar7 = 6;\n      ctx->Nb = 4;\n      iVar11 = 0xc;\n      ctx->Nr = 0xc;\n    }\nLAB_0004fd88:\n    ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x2570);\n    ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x15f0);\n    iVar12 = 4;\n    goto LAB_0004fe48;\n  }" if (parenthesized_expression "(blocklen == 0x10)" ( (binary_expression "blocklen == 0x10" identifier == number_literal) )) (compound_statement "{\n    if (keylen == 0x10) {\n      ctx->Nb = 4;\n      ctx->Nr = 10;\n      iVar7 = 4;\n      iVar11 = 10;\n    }\n    else {\n      if (keylen != 0x18) goto LAB_0004fdb4;\n      iVar7 = 6;\n      ctx->Nb = 4;\n      iVar11 = 0xc;\n      ctx->Nr = 0xc;\n    }\nLAB_0004fd88:\n    ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x2570);\n    ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x15f0);\n    iVar12 = 4;\n    goto LAB_0004fe48;\n  }" { (if_statement "if (keylen == 0x10) {\n      ctx->Nb = 4;\n      ctx->Nr = 10;\n      iVar7 = 4;\n      iVar11 = 10;\n    }\n    else {\n      if (keylen != 0x18) goto LAB_0004fdb4;\n      iVar7 = 6;\n      ctx->Nb = 4;\n      iVar11 = 0xc;\n      ctx->Nr = 0xc;\n    }" if (parenthesized_expression "(keylen == 0x10)" ( (binary_expression "keylen == 0x10" identifier == number_literal) )) (compound_statement "{\n      ctx->Nb = 4;\n      ctx->Nr = 10;\n      iVar7 = 4;\n      iVar11 = 10;\n    }" { (expression_statement "ctx->Nb = 4;" (assignment_expression "ctx->Nb = 4" (field_expression "ctx->Nb" identifier -> field_identifier) = number_literal) ;) (expression_statement "ctx->Nr = 10;" (assignment_expression "ctx->Nr = 10" (field_expression "ctx->Nr" identifier -> field_identifier) = number_literal) ;) (expression_statement "iVar7 = 4;" (assignment_expression "iVar7 = 4" identifier = number_literal) ;) (expression_statement "iVar11 = 10;" (assignment_expression "iVar11 = 10" identifier = number_literal) ;) }) (else_clause "else {\n      if (keylen != 0x18) goto LAB_0004fdb4;\n      iVar7 = 6;\n      ctx->Nb = 4;\n      iVar11 = 0xc;\n      ctx->Nr = 0xc;\n    }" else (compound_statement "{\n      if (keylen != 0x18) goto LAB_0004fdb4;\n      iVar7 = 6;\n      ctx->Nb = 4;\n      iVar11 = 0xc;\n      ctx->Nr = 0xc;\n    }" { (if_statement "if (keylen != 0x18) goto LAB_0004fdb4;" if (parenthesized_expression "(keylen != 0x18)" ( (binary_expression "keylen != 0x18" identifier != number_literal) )) (goto_statement "goto LAB_0004fdb4;" goto statement_identifier ;)) (expression_statement "iVar7 = 6;" (assignment_expression "iVar7 = 6" identifier = number_literal) ;) (expression_statement "ctx->Nb = 4;" (assignment_expression "ctx->Nb = 4" (field_expression "ctx->Nb" identifier -> field_identifier) = number_literal) ;) (expression_statement "iVar11 = 0xc;" (assignment_expression "iVar11 = 0xc" identifier = number_literal) ;) (expression_statement "ctx->Nr = 0xc;" (assignment_expression "ctx->Nr = 0xc" (field_expression "ctx->Nr" identifier -> field_identifier) = number_literal) ;) }))) (labeled_statement "LAB_0004fd88:\n    ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x2570);" statement_identifier : (expression_statement "ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x2570);" (assignment_expression "ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x2570)" (field_expression "ctx->encrypt" identifier -> field_identifier) = (cast_expression "(_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x2570)" ( (type_descriptor "_func_void_AESContext_ptr_word32_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000b8640 + -0x2570)" ( (binary_expression "PTR_LAB_000b8640 + -0x2570" identifier + number_literal) )))) ;)) (expression_statement "ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x15f0);" (assignment_expression "ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x15f0)" (field_expression "ctx->decrypt" identifier -> field_identifier) = (cast_expression "(_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x15f0)" ( (type_descriptor "_func_void_AESContext_ptr_word32_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000b8640 + -0x15f0)" ( (binary_expression "PTR_LAB_000b8640 + -0x15f0" identifier + number_literal) )))) ;) (expression_statement "iVar12 = 4;" (assignment_expression "iVar12 = 4" identifier = number_literal) ;) (goto_statement "goto LAB_0004fe48;" goto statement_identifier ;) })) (if_statement "if (blocklen == 0x18) {\n    if (keylen == 0x10) {\n      ctx->Nb = 6;\n      ctx->Nr = 0xc;\n      iVar7 = 4;\n      iVar11 = 0xc;\n    }\n    else {\n      if (keylen != 0x18) goto LAB_0004fdb4;\n      iVar7 = 6;\n      ctx->Nb = 6;\n      iVar11 = 0xc;\n      ctx->Nr = 0xc;\n    }\nLAB_0004fea8:\n    ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x21f0);\n    ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x1270);\n    iVar12 = 6;\n  }\n  else {\n    if (blocklen != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_PC2_1357_27__000b8348 + -0x3d74,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a6,\n                 PTR_PC2_1357_27__000b8348 + -0x3c14);\n      return;\n    }\n    if (keylen == 0x10) {\n      ctx->Nb = 8;\n      ctx->Nr = 0xe;\n      iVar7 = 4;\n      iVar11 = 0xe;\n    }\n    else if (keylen == 0x18) {\n      iVar7 = 6;\n      ctx->Nb = 8;\n      iVar11 = 0xe;\n      ctx->Nr = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (keylen != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_PC2_1357_27__000b8348 + -0x3d40,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a7,\n                   PTR_PC2_1357_27__000b8348 + -0x3c14);\n        return;\n      }\n      iVar7 = 8;\n      if (blocklen < 0) {\n        blocklen = blocklen + 3;\n      }\n      iVar12 = blocklen >> 2;\n      ctx->Nb = iVar12;\n      iVar11 = iVar7;\n      if (7 < iVar12) {\n        iVar11 = iVar12;\n      }\n      iVar11 = iVar11 + 6;\n      ctx->Nr = iVar11;\n      if (iVar12 != 8) {\n        if (iVar12 != 6) {\n          if (iVar12 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x1cc0);\n    ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0xd40);\n    iVar12 = 8;\n  }" if (parenthesized_expression "(blocklen == 0x18)" ( (binary_expression "blocklen == 0x18" identifier == number_literal) )) (compound_statement "{\n    if (keylen == 0x10) {\n      ctx->Nb = 6;\n      ctx->Nr = 0xc;\n      iVar7 = 4;\n      iVar11 = 0xc;\n    }\n    else {\n      if (keylen != 0x18) goto LAB_0004fdb4;\n      iVar7 = 6;\n      ctx->Nb = 6;\n      iVar11 = 0xc;\n      ctx->Nr = 0xc;\n    }\nLAB_0004fea8:\n    ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x21f0);\n    ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x1270);\n    iVar12 = 6;\n  }" { (if_statement "if (keylen == 0x10) {\n      ctx->Nb = 6;\n      ctx->Nr = 0xc;\n      iVar7 = 4;\n      iVar11 = 0xc;\n    }\n    else {\n      if (keylen != 0x18) goto LAB_0004fdb4;\n      iVar7 = 6;\n      ctx->Nb = 6;\n      iVar11 = 0xc;\n      ctx->Nr = 0xc;\n    }" if (parenthesized_expression "(keylen == 0x10)" ( (binary_expression "keylen == 0x10" identifier == number_literal) )) (compound_statement "{\n      ctx->Nb = 6;\n      ctx->Nr = 0xc;\n      iVar7 = 4;\n      iVar11 = 0xc;\n    }" { (expression_statement "ctx->Nb = 6;" (assignment_expression "ctx->Nb = 6" (field_expression "ctx->Nb" identifier -> field_identifier) = number_literal) ;) (expression_statement "ctx->Nr = 0xc;" (assignment_expression "ctx->Nr = 0xc" (field_expression "ctx->Nr" identifier -> field_identifier) = number_literal) ;) (expression_statement "iVar7 = 4;" (assignment_expression "iVar7 = 4" identifier = number_literal) ;) (expression_statement "iVar11 = 0xc;" (assignment_expression "iVar11 = 0xc" identifier = number_literal) ;) }) (else_clause "else {\n      if (keylen != 0x18) goto LAB_0004fdb4;\n      iVar7 = 6;\n      ctx->Nb = 6;\n      iVar11 = 0xc;\n      ctx->Nr = 0xc;\n    }" else (compound_statement "{\n      if (keylen != 0x18) goto LAB_0004fdb4;\n      iVar7 = 6;\n      ctx->Nb = 6;\n      iVar11 = 0xc;\n      ctx->Nr = 0xc;\n    }" { (if_statement "if (keylen != 0x18) goto LAB_0004fdb4;" if (parenthesized_expression "(keylen != 0x18)" ( (binary_expression "keylen != 0x18" identifier != number_literal) )) (goto_statement "goto LAB_0004fdb4;" goto statement_identifier ;)) (expression_statement "iVar7 = 6;" (assignment_expression "iVar7 = 6" identifier = number_literal) ;) (expression_statement "ctx->Nb = 6;" (assignment_expression "ctx->Nb = 6" (field_expression "ctx->Nb" identifier -> field_identifier) = number_literal) ;) (expression_statement "iVar11 = 0xc;" (assignment_expression "iVar11 = 0xc" identifier = number_literal) ;) (expression_statement "ctx->Nr = 0xc;" (assignment_expression "ctx->Nr = 0xc" (field_expression "ctx->Nr" identifier -> field_identifier) = number_literal) ;) }))) (labeled_statement "LAB_0004fea8:\n    ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x21f0);" statement_identifier : (expression_statement "ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x21f0);" (assignment_expression "ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x21f0)" (field_expression "ctx->encrypt" identifier -> field_identifier) = (cast_expression "(_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x21f0)" ( (type_descriptor "_func_void_AESContext_ptr_word32_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000b8640 + -0x21f0)" ( (binary_expression "PTR_LAB_000b8640 + -0x21f0" identifier + number_literal) )))) ;)) (expression_statement "ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x1270);" (assignment_expression "ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x1270)" (field_expression "ctx->decrypt" identifier -> field_identifier) = (cast_expression "(_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x1270)" ( (type_descriptor "_func_void_AESContext_ptr_word32_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000b8640 + -0x1270)" ( (binary_expression "PTR_LAB_000b8640 + -0x1270" identifier + number_literal) )))) ;) (expression_statement "iVar12 = 6;" (assignment_expression "iVar12 = 6" identifier = number_literal) ;) }) (else_clause "else {\n    if (blocklen != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_PC2_1357_27__000b8348 + -0x3d74,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a6,\n                 PTR_PC2_1357_27__000b8348 + -0x3c14);\n      return;\n    }\n    if (keylen == 0x10) {\n      ctx->Nb = 8;\n      ctx->Nr = 0xe;\n      iVar7 = 4;\n      iVar11 = 0xe;\n    }\n    else if (keylen == 0x18) {\n      iVar7 = 6;\n      ctx->Nb = 8;\n      iVar11 = 0xe;\n      ctx->Nr = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (keylen != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_PC2_1357_27__000b8348 + -0x3d40,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a7,\n                   PTR_PC2_1357_27__000b8348 + -0x3c14);\n        return;\n      }\n      iVar7 = 8;\n      if (blocklen < 0) {\n        blocklen = blocklen + 3;\n      }\n      iVar12 = blocklen >> 2;\n      ctx->Nb = iVar12;\n      iVar11 = iVar7;\n      if (7 < iVar12) {\n        iVar11 = iVar12;\n      }\n      iVar11 = iVar11 + 6;\n      ctx->Nr = iVar11;\n      if (iVar12 != 8) {\n        if (iVar12 != 6) {\n          if (iVar12 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x1cc0);\n    ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0xd40);\n    iVar12 = 8;\n  }" else (compound_statement "{\n    if (blocklen != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_PC2_1357_27__000b8348 + -0x3d74,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a6,\n                 PTR_PC2_1357_27__000b8348 + -0x3c14);\n      return;\n    }\n    if (keylen == 0x10) {\n      ctx->Nb = 8;\n      ctx->Nr = 0xe;\n      iVar7 = 4;\n      iVar11 = 0xe;\n    }\n    else if (keylen == 0x18) {\n      iVar7 = 6;\n      ctx->Nb = 8;\n      iVar11 = 0xe;\n      ctx->Nr = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (keylen != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_PC2_1357_27__000b8348 + -0x3d40,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a7,\n                   PTR_PC2_1357_27__000b8348 + -0x3c14);\n        return;\n      }\n      iVar7 = 8;\n      if (blocklen < 0) {\n        blocklen = blocklen + 3;\n      }\n      iVar12 = blocklen >> 2;\n      ctx->Nb = iVar12;\n      iVar11 = iVar7;\n      if (7 < iVar12) {\n        iVar11 = iVar12;\n      }\n      iVar11 = iVar11 + 6;\n      ctx->Nr = iVar11;\n      if (iVar12 != 8) {\n        if (iVar12 != 6) {\n          if (iVar12 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x1cc0);\n    ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0xd40);\n    iVar12 = 8;\n  }" { (if_statement "if (blocklen != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_PC2_1357_27__000b8348 + -0x3d74,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a6,\n                 PTR_PC2_1357_27__000b8348 + -0x3c14);\n      return;\n    }" if (parenthesized_expression "(blocklen != 0x20)" ( (binary_expression "blocklen != 0x20" identifier != number_literal) )) (compound_statement "{\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_PC2_1357_27__000b8348 + -0x3d74,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a6,\n                 PTR_PC2_1357_27__000b8348 + -0x3c14);\n      return;\n    }" { (expression_statement "(*(code *)PTR___assert_fail_000b8b18)\n                (PTR_PC2_1357_27__000b8348 + -0x3d74,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a6,\n                 PTR_PC2_1357_27__000b8348 + -0x3c14);" (call_expression "(*(code *)PTR___assert_fail_000b8b18)\n                (PTR_PC2_1357_27__000b8348 + -0x3d74,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a6,\n                 PTR_PC2_1357_27__000b8348 + -0x3c14)" (parenthesized_expression "(*(code *)PTR___assert_fail_000b8b18)" ( (pointer_expression "*(code *)PTR___assert_fail_000b8b18" * (cast_expression "(code *)PTR___assert_fail_000b8b18" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_PC2_1357_27__000b8348 + -0x3d74,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a6,\n                 PTR_PC2_1357_27__000b8348 + -0x3c14)" ( (binary_expression "PTR_PC2_1357_27__000b8348 + -0x3d74" identifier + number_literal) , (binary_expression "PTR_PC2_1357_27__000b8348 + -0x3d80" identifier + number_literal) , number_literal , (binary_expression "PTR_PC2_1357_27__000b8348 + -0x3c14" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (keylen == 0x10) {\n      ctx->Nb = 8;\n      ctx->Nr = 0xe;\n      iVar7 = 4;\n      iVar11 = 0xe;\n    }\n    else if (keylen == 0x18) {\n      iVar7 = 6;\n      ctx->Nb = 8;\n      iVar11 = 0xe;\n      ctx->Nr = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (keylen != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_PC2_1357_27__000b8348 + -0x3d40,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a7,\n                   PTR_PC2_1357_27__000b8348 + -0x3c14);\n        return;\n      }\n      iVar7 = 8;\n      if (blocklen < 0) {\n        blocklen = blocklen + 3;\n      }\n      iVar12 = blocklen >> 2;\n      ctx->Nb = iVar12;\n      iVar11 = iVar7;\n      if (7 < iVar12) {\n        iVar11 = iVar12;\n      }\n      iVar11 = iVar11 + 6;\n      ctx->Nr = iVar11;\n      if (iVar12 != 8) {\n        if (iVar12 != 6) {\n          if (iVar12 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }" if (parenthesized_expression "(keylen == 0x10)" ( (binary_expression "keylen == 0x10" identifier == number_literal) )) (compound_statement "{\n      ctx->Nb = 8;\n      ctx->Nr = 0xe;\n      iVar7 = 4;\n      iVar11 = 0xe;\n    }" { (expression_statement "ctx->Nb = 8;" (assignment_expression "ctx->Nb = 8" (field_expression "ctx->Nb" identifier -> field_identifier) = number_literal) ;) (expression_statement "ctx->Nr = 0xe;" (assignment_expression "ctx->Nr = 0xe" (field_expression "ctx->Nr" identifier -> field_identifier) = number_literal) ;) (expression_statement "iVar7 = 4;" (assignment_expression "iVar7 = 4" identifier = number_literal) ;) (expression_statement "iVar11 = 0xe;" (assignment_expression "iVar11 = 0xe" identifier = number_literal) ;) }) (else_clause "else if (keylen == 0x18) {\n      iVar7 = 6;\n      ctx->Nb = 8;\n      iVar11 = 0xe;\n      ctx->Nr = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (keylen != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_PC2_1357_27__000b8348 + -0x3d40,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a7,\n                   PTR_PC2_1357_27__000b8348 + -0x3c14);\n        return;\n      }\n      iVar7 = 8;\n      if (blocklen < 0) {\n        blocklen = blocklen + 3;\n      }\n      iVar12 = blocklen >> 2;\n      ctx->Nb = iVar12;\n      iVar11 = iVar7;\n      if (7 < iVar12) {\n        iVar11 = iVar12;\n      }\n      iVar11 = iVar11 + 6;\n      ctx->Nr = iVar11;\n      if (iVar12 != 8) {\n        if (iVar12 != 6) {\n          if (iVar12 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }" else (if_statement "if (keylen == 0x18) {\n      iVar7 = 6;\n      ctx->Nb = 8;\n      iVar11 = 0xe;\n      ctx->Nr = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (keylen != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_PC2_1357_27__000b8348 + -0x3d40,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a7,\n                   PTR_PC2_1357_27__000b8348 + -0x3c14);\n        return;\n      }\n      iVar7 = 8;\n      if (blocklen < 0) {\n        blocklen = blocklen + 3;\n      }\n      iVar12 = blocklen >> 2;\n      ctx->Nb = iVar12;\n      iVar11 = iVar7;\n      if (7 < iVar12) {\n        iVar11 = iVar12;\n      }\n      iVar11 = iVar11 + 6;\n      ctx->Nr = iVar11;\n      if (iVar12 != 8) {\n        if (iVar12 != 6) {\n          if (iVar12 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }" if (parenthesized_expression "(keylen == 0x18)" ( (binary_expression "keylen == 0x18" identifier == number_literal) )) (compound_statement "{\n      iVar7 = 6;\n      ctx->Nb = 8;\n      iVar11 = 0xe;\n      ctx->Nr = 0xe;\n    }" { (expression_statement "iVar7 = 6;" (assignment_expression "iVar7 = 6" identifier = number_literal) ;) (expression_statement "ctx->Nb = 8;" (assignment_expression "ctx->Nb = 8" (field_expression "ctx->Nb" identifier -> field_identifier) = number_literal) ;) (expression_statement "iVar11 = 0xe;" (assignment_expression "iVar11 = 0xe" identifier = number_literal) ;) (expression_statement "ctx->Nr = 0xe;" (assignment_expression "ctx->Nr = 0xe" (field_expression "ctx->Nr" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else {\nLAB_0004fdb4:\n      if (keylen != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_PC2_1357_27__000b8348 + -0x3d40,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a7,\n                   PTR_PC2_1357_27__000b8348 + -0x3c14);\n        return;\n      }\n      iVar7 = 8;\n      if (blocklen < 0) {\n        blocklen = blocklen + 3;\n      }\n      iVar12 = blocklen >> 2;\n      ctx->Nb = iVar12;\n      iVar11 = iVar7;\n      if (7 < iVar12) {\n        iVar11 = iVar12;\n      }\n      iVar11 = iVar11 + 6;\n      ctx->Nr = iVar11;\n      if (iVar12 != 8) {\n        if (iVar12 != 6) {\n          if (iVar12 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }" else (compound_statement "{\nLAB_0004fdb4:\n      if (keylen != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_PC2_1357_27__000b8348 + -0x3d40,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a7,\n                   PTR_PC2_1357_27__000b8348 + -0x3c14);\n        return;\n      }\n      iVar7 = 8;\n      if (blocklen < 0) {\n        blocklen = blocklen + 3;\n      }\n      iVar12 = blocklen >> 2;\n      ctx->Nb = iVar12;\n      iVar11 = iVar7;\n      if (7 < iVar12) {\n        iVar11 = iVar12;\n      }\n      iVar11 = iVar11 + 6;\n      ctx->Nr = iVar11;\n      if (iVar12 != 8) {\n        if (iVar12 != 6) {\n          if (iVar12 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }" { (labeled_statement "LAB_0004fdb4:\n      if (keylen != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_PC2_1357_27__000b8348 + -0x3d40,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a7,\n                   PTR_PC2_1357_27__000b8348 + -0x3c14);\n        return;\n      }" statement_identifier : (if_statement "if (keylen != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_PC2_1357_27__000b8348 + -0x3d40,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a7,\n                   PTR_PC2_1357_27__000b8348 + -0x3c14);\n        return;\n      }" if (parenthesized_expression "(keylen != 0x20)" ( (binary_expression "keylen != 0x20" identifier != number_literal) )) (compound_statement "{\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_PC2_1357_27__000b8348 + -0x3d40,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a7,\n                   PTR_PC2_1357_27__000b8348 + -0x3c14);\n        return;\n      }" { (expression_statement "(*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_PC2_1357_27__000b8348 + -0x3d40,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a7,\n                   PTR_PC2_1357_27__000b8348 + -0x3c14);" (call_expression "(*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_PC2_1357_27__000b8348 + -0x3d40,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a7,\n                   PTR_PC2_1357_27__000b8348 + -0x3c14)" (parenthesized_expression "(*(code *)PTR___assert_fail_000b8b18)" ( (pointer_expression "*(code *)PTR___assert_fail_000b8b18" * (cast_expression "(code *)PTR___assert_fail_000b8b18" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_PC2_1357_27__000b8348 + -0x3d40,PTR_PC2_1357_27__000b8348 + -0x3d80,0x3a7,\n                   PTR_PC2_1357_27__000b8348 + -0x3c14)" ( (binary_expression "PTR_PC2_1357_27__000b8348 + -0x3d40" identifier + number_literal) , (binary_expression "PTR_PC2_1357_27__000b8348 + -0x3d80" identifier + number_literal) , number_literal , (binary_expression "PTR_PC2_1357_27__000b8348 + -0x3c14" identifier + number_literal) ))) ;) (return_statement "return;" return ;) }))) (expression_statement "iVar7 = 8;" (assignment_expression "iVar7 = 8" identifier = number_literal) ;) (if_statement "if (blocklen < 0) {\n        blocklen = blocklen + 3;\n      }" if (parenthesized_expression "(blocklen < 0)" ( (binary_expression "blocklen < 0" identifier < number_literal) )) (compound_statement "{\n        blocklen = blocklen + 3;\n      }" { (expression_statement "blocklen = blocklen + 3;" (assignment_expression "blocklen = blocklen + 3" identifier = (binary_expression "blocklen + 3" identifier + number_literal)) ;) })) (expression_statement "iVar12 = blocklen >> 2;" (assignment_expression "iVar12 = blocklen >> 2" identifier = (binary_expression "blocklen >> 2" identifier >> number_literal)) ;) (expression_statement "ctx->Nb = iVar12;" (assignment_expression "ctx->Nb = iVar12" (field_expression "ctx->Nb" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar11 = iVar7;" (assignment_expression "iVar11 = iVar7" identifier = identifier) ;) (if_statement "if (7 < iVar12) {\n        iVar11 = iVar12;\n      }" if (parenthesized_expression "(7 < iVar12)" ( (binary_expression "7 < iVar12" number_literal < identifier) )) (compound_statement "{\n        iVar11 = iVar12;\n      }" { (expression_statement "iVar11 = iVar12;" (assignment_expression "iVar11 = iVar12" identifier = identifier) ;) })) (expression_statement "iVar11 = iVar11 + 6;" (assignment_expression "iVar11 = iVar11 + 6" identifier = (binary_expression "iVar11 + 6" identifier + number_literal)) ;) (expression_statement "ctx->Nr = iVar11;" (assignment_expression "ctx->Nr = iVar11" (field_expression "ctx->Nr" identifier -> field_identifier) = identifier) ;) (if_statement "if (iVar12 != 8) {\n        if (iVar12 != 6) {\n          if (iVar12 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }" if (parenthesized_expression "(iVar12 != 8)" ( (binary_expression "iVar12 != 8" identifier != number_literal) )) (compound_statement "{\n        if (iVar12 != 6) {\n          if (iVar12 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }" { (if_statement "if (iVar12 != 6) {\n          if (iVar12 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }" if (parenthesized_expression "(iVar12 != 6)" ( (binary_expression "iVar12 != 6" identifier != number_literal) )) (compound_statement "{\n          if (iVar12 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }" { (if_statement "if (iVar12 != 4) goto LAB_0004fe48;" if (parenthesized_expression "(iVar12 != 4)" ( (binary_expression "iVar12 != 4" identifier != number_literal) )) (goto_statement "goto LAB_0004fe48;" goto statement_identifier ;)) (goto_statement "goto LAB_0004fd88;" goto statement_identifier ;) })) (goto_statement "goto LAB_0004fea8;" goto statement_identifier ;) })) }))))) (expression_statement "ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x1cc0);" (assignment_expression "ctx->encrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x1cc0)" (field_expression "ctx->encrypt" identifier -> field_identifier) = (cast_expression "(_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0x1cc0)" ( (type_descriptor "_func_void_AESContext_ptr_word32_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000b8640 + -0x1cc0)" ( (binary_expression "PTR_LAB_000b8640 + -0x1cc0" identifier + number_literal) )))) ;) (expression_statement "ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0xd40);" (assignment_expression "ctx->decrypt = (_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0xd40)" (field_expression "ctx->decrypt" identifier -> field_identifier) = (cast_expression "(_func_void_AESContext_ptr_word32_ptr *)(PTR_LAB_000b8640 + -0xd40)" ( (type_descriptor "_func_void_AESContext_ptr_word32_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000b8640 + -0xd40)" ( (binary_expression "PTR_LAB_000b8640 + -0xd40" identifier + number_literal) )))) ;) (expression_statement "iVar12 = 8;" (assignment_expression "iVar12 = 8" identifier = number_literal) ;) }))) (labeled_statement "LAB_0004fe48:\n  puVar1 = PTR_PC2_1357_27__000b8348;" statement_identifier : (expression_statement "puVar1 = PTR_PC2_1357_27__000b8348;" (assignment_expression "puVar1 = PTR_PC2_1357_27__000b8348" identifier = identifier) ;)) (if_statement "if (0 < (iVar11 + 1) * iVar12) {\n    iVar11 = ctx->Nr;\n    iVar12 = ctx->Nb;\n    uVar10 = 1;\n    iVar2 = 0;\n    pAVar5 = ctx;\n    do {\n      if (iVar2 < iVar7) {\n        pAVar5->keysched[0] =\n             (uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3] | (uint)key[2] << 8;\n      }\n      else {\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        uVar3 = pAVar5[-1].Nr;\n        if (iVar2 % iVar7 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar8 = uVar10 & 0x80;\n          if (uVar8 != 0) {\n            uVar8 = 0x1b;\n          }\n          uVar10 = (uVar10 & 0x7f) << 1 ^ uVar8;\n        }\n        else if ((iVar2 % iVar7 == 4) && (0x1b < keylen)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        pAVar5->keysched[0] = *(uint *)((int)pAVar5 + iVar7 * -4) ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      key = key + 4;\n      pAVar5 = (AESContext *)(pAVar5->keysched + 1);\n    } while (iVar2 < (iVar11 + 1) * iVar12);\n  }" if (parenthesized_expression "(0 < (iVar11 + 1) * iVar12)" ( (binary_expression "0 < (iVar11 + 1) * iVar12" number_literal < (binary_expression "(iVar11 + 1) * iVar12" (parenthesized_expression "(iVar11 + 1)" ( (binary_expression "iVar11 + 1" identifier + number_literal) )) * identifier)) )) (compound_statement "{\n    iVar11 = ctx->Nr;\n    iVar12 = ctx->Nb;\n    uVar10 = 1;\n    iVar2 = 0;\n    pAVar5 = ctx;\n    do {\n      if (iVar2 < iVar7) {\n        pAVar5->keysched[0] =\n             (uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3] | (uint)key[2] << 8;\n      }\n      else {\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        uVar3 = pAVar5[-1].Nr;\n        if (iVar2 % iVar7 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar8 = uVar10 & 0x80;\n          if (uVar8 != 0) {\n            uVar8 = 0x1b;\n          }\n          uVar10 = (uVar10 & 0x7f) << 1 ^ uVar8;\n        }\n        else if ((iVar2 % iVar7 == 4) && (0x1b < keylen)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        pAVar5->keysched[0] = *(uint *)((int)pAVar5 + iVar7 * -4) ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      key = key + 4;\n      pAVar5 = (AESContext *)(pAVar5->keysched + 1);\n    } while (iVar2 < (iVar11 + 1) * iVar12);\n  }" { (expression_statement "iVar11 = ctx->Nr;" (assignment_expression "iVar11 = ctx->Nr" identifier = (field_expression "ctx->Nr" identifier -> field_identifier)) ;) (expression_statement "iVar12 = ctx->Nb;" (assignment_expression "iVar12 = ctx->Nb" identifier = (field_expression "ctx->Nb" identifier -> field_identifier)) ;) (expression_statement "uVar10 = 1;" (assignment_expression "uVar10 = 1" identifier = number_literal) ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (expression_statement "pAVar5 = ctx;" (assignment_expression "pAVar5 = ctx" identifier = identifier) ;) (do_statement "do {\n      if (iVar2 < iVar7) {\n        pAVar5->keysched[0] =\n             (uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3] | (uint)key[2] << 8;\n      }\n      else {\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        uVar3 = pAVar5[-1].Nr;\n        if (iVar2 % iVar7 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar8 = uVar10 & 0x80;\n          if (uVar8 != 0) {\n            uVar8 = 0x1b;\n          }\n          uVar10 = (uVar10 & 0x7f) << 1 ^ uVar8;\n        }\n        else if ((iVar2 % iVar7 == 4) && (0x1b < keylen)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        pAVar5->keysched[0] = *(uint *)((int)pAVar5 + iVar7 * -4) ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      key = key + 4;\n      pAVar5 = (AESContext *)(pAVar5->keysched + 1);\n    } while (iVar2 < (iVar11 + 1) * iVar12);" do (compound_statement "{\n      if (iVar2 < iVar7) {\n        pAVar5->keysched[0] =\n             (uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3] | (uint)key[2] << 8;\n      }\n      else {\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        uVar3 = pAVar5[-1].Nr;\n        if (iVar2 % iVar7 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar8 = uVar10 & 0x80;\n          if (uVar8 != 0) {\n            uVar8 = 0x1b;\n          }\n          uVar10 = (uVar10 & 0x7f) << 1 ^ uVar8;\n        }\n        else if ((iVar2 % iVar7 == 4) && (0x1b < keylen)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        pAVar5->keysched[0] = *(uint *)((int)pAVar5 + iVar7 * -4) ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      key = key + 4;\n      pAVar5 = (AESContext *)(pAVar5->keysched + 1);\n    }" { (if_statement "if (iVar2 < iVar7) {\n        pAVar5->keysched[0] =\n             (uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3] | (uint)key[2] << 8;\n      }\n      else {\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        uVar3 = pAVar5[-1].Nr;\n        if (iVar2 % iVar7 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar8 = uVar10 & 0x80;\n          if (uVar8 != 0) {\n            uVar8 = 0x1b;\n          }\n          uVar10 = (uVar10 & 0x7f) << 1 ^ uVar8;\n        }\n        else if ((iVar2 % iVar7 == 4) && (0x1b < keylen)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        pAVar5->keysched[0] = *(uint *)((int)pAVar5 + iVar7 * -4) ^ uVar3;\n      }" if (parenthesized_expression "(iVar2 < iVar7)" ( (binary_expression "iVar2 < iVar7" identifier < identifier) )) (compound_statement "{\n        pAVar5->keysched[0] =\n             (uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3] | (uint)key[2] << 8;\n      }" { (expression_statement "pAVar5->keysched[0] =\n             (uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3] | (uint)key[2] << 8;" (assignment_expression "pAVar5->keysched[0] =\n             (uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3] | (uint)key[2] << 8" (subscript_expression "pAVar5->keysched[0]" (field_expression "pAVar5->keysched" identifier -> field_identifier) [ number_literal ]) = (binary_expression "(uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3] | (uint)key[2] << 8" (binary_expression "(uint)*key << 0x18 | (uint)key[1] << 0x10 | (uint)key[3]" (binary_expression "(uint)*key << 0x18 | (uint)key[1] << 0x10" (binary_expression "(uint)*key << 0x18" (binary_expression "(uint)*key" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal) | (binary_expression "(uint)key[1] << 0x10" (cast_expression "(uint)key[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[1]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)key[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[3]" identifier [ number_literal ]))) | (binary_expression "(uint)key[2] << 8" (cast_expression "(uint)key[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "key[2]" identifier [ number_literal ])) << number_literal))) ;) }) (else_clause "else {\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        uVar3 = pAVar5[-1].Nr;\n        if (iVar2 % iVar7 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar8 = uVar10 & 0x80;\n          if (uVar8 != 0) {\n            uVar8 = 0x1b;\n          }\n          uVar10 = (uVar10 & 0x7f) << 1 ^ uVar8;\n        }\n        else if ((iVar2 % iVar7 == 4) && (0x1b < keylen)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        pAVar5->keysched[0] = *(uint *)((int)pAVar5 + iVar7 * -4) ^ uVar3;\n      }" else (compound_statement "{\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        uVar3 = pAVar5[-1].Nr;\n        if (iVar2 % iVar7 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar8 = uVar10 & 0x80;\n          if (uVar8 != 0) {\n            uVar8 = 0x1b;\n          }\n          uVar10 = (uVar10 & 0x7f) << 1 ^ uVar8;\n        }\n        else if ((iVar2 % iVar7 == 4) && (0x1b < keylen)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        pAVar5->keysched[0] = *(uint *)((int)pAVar5 + iVar7 * -4) ^ uVar3;\n      }" { (if_statement "if (iVar7 == 0) {\n          trap(7);\n        }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n          trap(7);\n        }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar3 = pAVar5[-1].Nr;" (assignment_expression "uVar3 = pAVar5[-1].Nr" identifier = (field_expression "pAVar5[-1].Nr" (subscript_expression "pAVar5[-1]" identifier [ number_literal ]) . field_identifier)) ;) (if_statement "if (iVar2 % iVar7 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar8 = uVar10 & 0x80;\n          if (uVar8 != 0) {\n            uVar8 = 0x1b;\n          }\n          uVar10 = (uVar10 & 0x7f) << 1 ^ uVar8;\n        }\n        else if ((iVar2 % iVar7 == 4) && (0x1b < keylen)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }" if (parenthesized_expression "(iVar2 % iVar7 == 0)" ( (binary_expression "iVar2 % iVar7 == 0" (binary_expression "iVar2 % iVar7" identifier % identifier) == number_literal) )) (compound_statement "{\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar8 = uVar10 & 0x80;\n          if (uVar8 != 0) {\n            uVar8 = 0x1b;\n          }\n          uVar10 = (uVar10 & 0x7f) << 1 ^ uVar8;\n        }" { (expression_statement "uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];" (assignment_expression "uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08]" identifier = (binary_expression "((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08]" (binary_expression "((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8" (parenthesized_expression "((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08])" ( (binary_expression "(((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]" (binary_expression "(((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8" (parenthesized_expression "(((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08])" ( (binary_expression "((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]" (binary_expression "((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10) << 8" (parenthesized_expression "((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10)" ( (binary_expression "(byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar10" (cast_expression "(byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]" identifier [ (binary_expression "((uVar3 << 8) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar3 << 8) >> 0x18)" ( (binary_expression "(uVar3 << 8) >> 0x18" (parenthesized_expression "(uVar3 << 8)" ( (binary_expression "uVar3 << 8" identifier << number_literal) )) >> number_literal) )) - number_literal) ])) ^ identifier) )) << number_literal) | (cast_expression "(uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]" identifier [ (binary_expression "((uVar3 << 0x10) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar3 << 0x10) >> 0x18)" ( (binary_expression "(uVar3 << 0x10) >> 0x18" (parenthesized_expression "(uVar3 << 0x10)" ( (binary_expression "uVar3 << 0x10" identifier << number_literal) )) >> number_literal) )) - number_literal) ])))) )) << number_literal) | (cast_expression "(uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar1[(uVar3 & 0xff) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[(uVar3 & 0xff) - 0x1b08]" identifier [ (binary_expression "(uVar3 & 0xff) - 0x1b08" (parenthesized_expression "(uVar3 & 0xff)" ( (binary_expression "uVar3 & 0xff" identifier & number_literal) )) - number_literal) ])))) )) << number_literal) | (cast_expression "(uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar1[(uVar3 >> 0x18) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[(uVar3 >> 0x18) - 0x1b08]" identifier [ (binary_expression "(uVar3 >> 0x18) - 0x1b08" (parenthesized_expression "(uVar3 >> 0x18)" ( (binary_expression "uVar3 >> 0x18" identifier >> number_literal) )) - number_literal) ]))))) ;) (expression_statement "uVar8 = uVar10 & 0x80;" (assignment_expression "uVar8 = uVar10 & 0x80" identifier = (binary_expression "uVar10 & 0x80" identifier & number_literal)) ;) (if_statement "if (uVar8 != 0) {\n            uVar8 = 0x1b;\n          }" if (parenthesized_expression "(uVar8 != 0)" ( (binary_expression "uVar8 != 0" identifier != number_literal) )) (compound_statement "{\n            uVar8 = 0x1b;\n          }" { (expression_statement "uVar8 = 0x1b;" (assignment_expression "uVar8 = 0x1b" identifier = number_literal) ;) })) (expression_statement "uVar10 = (uVar10 & 0x7f) << 1 ^ uVar8;" (assignment_expression "uVar10 = (uVar10 & 0x7f) << 1 ^ uVar8" identifier = (binary_expression "(uVar10 & 0x7f) << 1 ^ uVar8" (binary_expression "(uVar10 & 0x7f) << 1" (parenthesized_expression "(uVar10 & 0x7f)" ( (binary_expression "uVar10 & 0x7f" identifier & number_literal) )) << number_literal) ^ identifier)) ;) }) (else_clause "else if ((iVar2 % iVar7 == 4) && (0x1b < keylen)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }" else (if_statement "if ((iVar2 % iVar7 == 4) && (0x1b < keylen)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }" if (parenthesized_expression "((iVar2 % iVar7 == 4) && (0x1b < keylen))" ( (binary_expression "(iVar2 % iVar7 == 4) && (0x1b < keylen)" (parenthesized_expression "(iVar2 % iVar7 == 4)" ( (binary_expression "iVar2 % iVar7 == 4" (binary_expression "iVar2 % iVar7" identifier % identifier) == number_literal) )) && (parenthesized_expression "(0x1b < keylen)" ( (binary_expression "0x1b < keylen" number_literal < identifier) ))) )) (compound_statement "{\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }" { (expression_statement "uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);" (assignment_expression "uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08])" identifier = (call_expression "CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08])" identifier (argument_list "(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08])" ( (call_expression "CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08])" identifier (argument_list "(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08])" ( (call_expression "CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08])" identifier (argument_list "(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08])" ( (subscript_expression "puVar1[(uVar3 >> 0x18) - 0x1b08]" identifier [ (binary_expression "(uVar3 >> 0x18) - 0x1b08" (parenthesized_expression "(uVar3 >> 0x18)" ( (binary_expression "uVar3 >> 0x18" identifier >> number_literal) )) - number_literal) ]) , (subscript_expression "puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]" identifier [ (binary_expression "((uVar3 << 8) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar3 << 8) >> 0x18)" ( (binary_expression "(uVar3 << 8) >> 0x18" (parenthesized_expression "(uVar3 << 8)" ( (binary_expression "uVar3 << 8" identifier << number_literal) )) >> number_literal) )) - number_literal) ]) ))) , (subscript_expression "puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]" identifier [ (binary_expression "((uVar3 << 0x10) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar3 << 0x10) >> 0x18)" ( (binary_expression "(uVar3 << 0x10) >> 0x18" (parenthesized_expression "(uVar3 << 0x10)" ( (binary_expression "uVar3 << 0x10" identifier << number_literal) )) >> number_literal) )) - number_literal) ]) ))) , (subscript_expression "puVar1[(uVar3 & 0xff) - 0x1b08]" identifier [ (binary_expression "(uVar3 & 0xff) - 0x1b08" (parenthesized_expression "(uVar3 & 0xff)" ( (binary_expression "uVar3 & 0xff" identifier & number_literal) )) - number_literal) ]) )))) ;) })))) (expression_statement "pAVar5->keysched[0] = *(uint *)((int)pAVar5 + iVar7 * -4) ^ uVar3;" (assignment_expression "pAVar5->keysched[0] = *(uint *)((int)pAVar5 + iVar7 * -4) ^ uVar3" (subscript_expression "pAVar5->keysched[0]" (field_expression "pAVar5->keysched" identifier -> field_identifier) [ number_literal ]) = (binary_expression "*(uint *)((int)pAVar5 + iVar7 * -4) ^ uVar3" (pointer_expression "*(uint *)((int)pAVar5 + iVar7 * -4)" * (cast_expression "(uint *)((int)pAVar5 + iVar7 * -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pAVar5 + iVar7 * -4)" ( (binary_expression "(int)pAVar5 + iVar7 * -4" (cast_expression "(int)pAVar5" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar7 * -4" identifier * number_literal)) )))) ^ identifier)) ;) }))) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (expression_statement "key = key + 4;" (assignment_expression "key = key + 4" identifier = (binary_expression "key + 4" identifier + number_literal)) ;) (expression_statement "pAVar5 = (AESContext *)(pAVar5->keysched + 1);" (assignment_expression "pAVar5 = (AESContext *)(pAVar5->keysched + 1)" identifier = (cast_expression "(AESContext *)(pAVar5->keysched + 1)" ( (type_descriptor "AESContext *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pAVar5->keysched + 1)" ( (binary_expression "pAVar5->keysched + 1" (field_expression "pAVar5->keysched" identifier -> field_identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(iVar2 < (iVar11 + 1) * iVar12)" ( (binary_expression "iVar2 < (iVar11 + 1) * iVar12" identifier < (binary_expression "(iVar11 + 1) * iVar12" (parenthesized_expression "(iVar11 + 1)" ( (binary_expression "iVar11 + 1" identifier + number_literal) )) * identifier)) )) ;) })) (expression_statement "puVar1 = PTR_PC2_1357_27__000b8348;" (assignment_expression "puVar1 = PTR_PC2_1357_27__000b8348" identifier = identifier) ;) (if_statement "if (-1 < iVar11) {\n    pwVar6 = ctx->keysched;\n    iVar2 = iVar12 * iVar11 * 4;\n    iVar9 = 0;\n    iVar7 = 0;\n    do {\n      pwVar6 = pwVar6 + iVar12;\n      pwVar4 = pwVar6 + -iVar12;\n      if (0 < iVar12) {\n        do {\n          uVar10 = *(uint *)((int)pwVar4 + iVar2 + iVar9);\n          if ((iVar7 != 0) && (iVar11 != iVar7)) {\n            uVar10 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08)\n                     ^ *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +\n                                          -0x3008) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4 +\n                                        -0x3408) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4\n                                        + -0x3808);\n          }\n          pwVar4[0x78] = uVar10;\n          pwVar4 = pwVar4 + 1;\n        } while (pwVar4 != pwVar6);\n      }\n      iVar7 = iVar7 + 1;\n      iVar9 = iVar9 + iVar12 * -4;\n      iVar2 = iVar2 + iVar12 * -4;\n    } while (iVar7 != iVar11 + 1);\n  }" if (parenthesized_expression "(-1 < iVar11)" ( (binary_expression "-1 < iVar11" number_literal < identifier) )) (compound_statement "{\n    pwVar6 = ctx->keysched;\n    iVar2 = iVar12 * iVar11 * 4;\n    iVar9 = 0;\n    iVar7 = 0;\n    do {\n      pwVar6 = pwVar6 + iVar12;\n      pwVar4 = pwVar6 + -iVar12;\n      if (0 < iVar12) {\n        do {\n          uVar10 = *(uint *)((int)pwVar4 + iVar2 + iVar9);\n          if ((iVar7 != 0) && (iVar11 != iVar7)) {\n            uVar10 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08)\n                     ^ *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +\n                                          -0x3008) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4 +\n                                        -0x3408) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4\n                                        + -0x3808);\n          }\n          pwVar4[0x78] = uVar10;\n          pwVar4 = pwVar4 + 1;\n        } while (pwVar4 != pwVar6);\n      }\n      iVar7 = iVar7 + 1;\n      iVar9 = iVar9 + iVar12 * -4;\n      iVar2 = iVar2 + iVar12 * -4;\n    } while (iVar7 != iVar11 + 1);\n  }" { (expression_statement "pwVar6 = ctx->keysched;" (assignment_expression "pwVar6 = ctx->keysched" identifier = (field_expression "ctx->keysched" identifier -> field_identifier)) ;) (expression_statement "iVar2 = iVar12 * iVar11 * 4;" (assignment_expression "iVar2 = iVar12 * iVar11 * 4" identifier = (binary_expression "iVar12 * iVar11 * 4" (binary_expression "iVar12 * iVar11" identifier * identifier) * number_literal)) ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n      pwVar6 = pwVar6 + iVar12;\n      pwVar4 = pwVar6 + -iVar12;\n      if (0 < iVar12) {\n        do {\n          uVar10 = *(uint *)((int)pwVar4 + iVar2 + iVar9);\n          if ((iVar7 != 0) && (iVar11 != iVar7)) {\n            uVar10 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08)\n                     ^ *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +\n                                          -0x3008) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4 +\n                                        -0x3408) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4\n                                        + -0x3808);\n          }\n          pwVar4[0x78] = uVar10;\n          pwVar4 = pwVar4 + 1;\n        } while (pwVar4 != pwVar6);\n      }\n      iVar7 = iVar7 + 1;\n      iVar9 = iVar9 + iVar12 * -4;\n      iVar2 = iVar2 + iVar12 * -4;\n    } while (iVar7 != iVar11 + 1);" do (compound_statement "{\n      pwVar6 = pwVar6 + iVar12;\n      pwVar4 = pwVar6 + -iVar12;\n      if (0 < iVar12) {\n        do {\n          uVar10 = *(uint *)((int)pwVar4 + iVar2 + iVar9);\n          if ((iVar7 != 0) && (iVar11 != iVar7)) {\n            uVar10 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08)\n                     ^ *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +\n                                          -0x3008) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4 +\n                                        -0x3408) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4\n                                        + -0x3808);\n          }\n          pwVar4[0x78] = uVar10;\n          pwVar4 = pwVar4 + 1;\n        } while (pwVar4 != pwVar6);\n      }\n      iVar7 = iVar7 + 1;\n      iVar9 = iVar9 + iVar12 * -4;\n      iVar2 = iVar2 + iVar12 * -4;\n    }" { (expression_statement "pwVar6 = pwVar6 + iVar12;" (assignment_expression "pwVar6 = pwVar6 + iVar12" identifier = (binary_expression "pwVar6 + iVar12" identifier + identifier)) ;) (expression_statement "pwVar4 = pwVar6 + -iVar12;" (assignment_expression "pwVar4 = pwVar6 + -iVar12" identifier = (binary_expression "pwVar6 + -iVar12" identifier + (unary_expression "-iVar12" - identifier))) ;) (if_statement "if (0 < iVar12) {\n        do {\n          uVar10 = *(uint *)((int)pwVar4 + iVar2 + iVar9);\n          if ((iVar7 != 0) && (iVar11 != iVar7)) {\n            uVar10 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08)\n                     ^ *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +\n                                          -0x3008) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4 +\n                                        -0x3408) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4\n                                        + -0x3808);\n          }\n          pwVar4[0x78] = uVar10;\n          pwVar4 = pwVar4 + 1;\n        } while (pwVar4 != pwVar6);\n      }" if (parenthesized_expression "(0 < iVar12)" ( (binary_expression "0 < iVar12" number_literal < identifier) )) (compound_statement "{\n        do {\n          uVar10 = *(uint *)((int)pwVar4 + iVar2 + iVar9);\n          if ((iVar7 != 0) && (iVar11 != iVar7)) {\n            uVar10 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08)\n                     ^ *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +\n                                          -0x3008) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4 +\n                                        -0x3408) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4\n                                        + -0x3808);\n          }\n          pwVar4[0x78] = uVar10;\n          pwVar4 = pwVar4 + 1;\n        } while (pwVar4 != pwVar6);\n      }" { (do_statement "do {\n          uVar10 = *(uint *)((int)pwVar4 + iVar2 + iVar9);\n          if ((iVar7 != 0) && (iVar11 != iVar7)) {\n            uVar10 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08)\n                     ^ *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +\n                                          -0x3008) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4 +\n                                        -0x3408) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4\n                                        + -0x3808);\n          }\n          pwVar4[0x78] = uVar10;\n          pwVar4 = pwVar4 + 1;\n        } while (pwVar4 != pwVar6);" do (compound_statement "{\n          uVar10 = *(uint *)((int)pwVar4 + iVar2 + iVar9);\n          if ((iVar7 != 0) && (iVar11 != iVar7)) {\n            uVar10 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08)\n                     ^ *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +\n                                          -0x3008) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4 +\n                                        -0x3408) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4\n                                        + -0x3808);\n          }\n          pwVar4[0x78] = uVar10;\n          pwVar4 = pwVar4 + 1;\n        }" { (expression_statement "uVar10 = *(uint *)((int)pwVar4 + iVar2 + iVar9);" (assignment_expression "uVar10 = *(uint *)((int)pwVar4 + iVar2 + iVar9)" identifier = (pointer_expression "*(uint *)((int)pwVar4 + iVar2 + iVar9)" * (cast_expression "(uint *)((int)pwVar4 + iVar2 + iVar9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pwVar4 + iVar2 + iVar9)" ( (binary_expression "(int)pwVar4 + iVar2 + iVar9" (binary_expression "(int)pwVar4 + iVar2" (cast_expression "(int)pwVar4" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier) ))))) ;) (if_statement "if ((iVar7 != 0) && (iVar11 != iVar7)) {\n            uVar10 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08)\n                     ^ *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +\n                                          -0x3008) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4 +\n                                        -0x3408) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4\n                                        + -0x3808);\n          }" if (parenthesized_expression "((iVar7 != 0) && (iVar11 != iVar7))" ( (binary_expression "(iVar7 != 0) && (iVar11 != iVar7)" (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar11 != iVar7)" ( (binary_expression "iVar11 != iVar7" identifier != identifier) ))) )) (compound_statement "{\n            uVar10 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08)\n                     ^ *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +\n                                          -0x3008) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4 +\n                                        -0x3408) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4\n                                        + -0x3808);\n          }" { (expression_statement "uVar10 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08)\n                     ^ *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +\n                                          -0x3008) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4 +\n                                        -0x3408) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4\n                                        + -0x3808);" (assignment_expression "uVar10 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08)\n                     ^ *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +\n                                          -0x3008) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4 +\n                                        -0x3408) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4\n                                        + -0x3808)" identifier = (binary_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08)\n                     ^ *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +\n                                          -0x3008) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4 +\n                                        -0x3408) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4\n                                        + -0x3808)" (binary_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08)\n                     ^ *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +\n                                          -0x3008) ^\n                     *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4 +\n                                        -0x3408)" (binary_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08)\n                     ^ *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +\n                                          -0x3008)" (pointer_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08)" * (cast_expression "(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08)" ( (binary_expression "puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4 + -0x3c08" (binary_expression "puVar1 + (uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4" identifier + (binary_expression "(uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08] * 4" (cast_expression "(uint)(byte)puVar1[(uVar10 & 0xff) - 0x1b08]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar1[(uVar10 & 0xff) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[(uVar10 & 0xff) - 0x1b08]" identifier [ (binary_expression "(uVar10 & 0xff) - 0x1b08" (parenthesized_expression "(uVar10 & 0xff)" ( (binary_expression "uVar10 & 0xff" identifier & number_literal) )) - number_literal) ]))) * number_literal)) + number_literal) )))) ^ (pointer_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +\n                                          -0x3008)" * (cast_expression "(uint *)(puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +\n                                          -0x3008)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +\n                                          -0x3008)" ( (binary_expression "puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4 +\n                                          -0x3008" (binary_expression "puVar1 + (uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4" identifier + (binary_expression "(uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08] * 4" (cast_expression "(uint)(byte)puVar1[(uVar10 >> 0x18) - 0x1b08]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar1[(uVar10 >> 0x18) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[(uVar10 >> 0x18) - 0x1b08]" identifier [ (binary_expression "(uVar10 >> 0x18) - 0x1b08" (parenthesized_expression "(uVar10 >> 0x18)" ( (binary_expression "uVar10 >> 0x18" identifier >> number_literal) )) - number_literal) ]))) * number_literal)) + number_literal) ))))) ^ (pointer_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4 +\n                                        -0x3408)" * (cast_expression "(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4 +\n                                        -0x3408)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4 +\n                                        -0x3408)" ( (binary_expression "puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4 +\n                                        -0x3408" (binary_expression "puVar1 + (uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4" identifier + (binary_expression "(uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08] * 4" (cast_expression "(uint)(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar1[((uVar10 << 8) >> 0x18) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[((uVar10 << 8) >> 0x18) - 0x1b08]" identifier [ (binary_expression "((uVar10 << 8) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar10 << 8) >> 0x18)" ( (binary_expression "(uVar10 << 8) >> 0x18" (parenthesized_expression "(uVar10 << 8)" ( (binary_expression "uVar10 << 8" identifier << number_literal) )) >> number_literal) )) - number_literal) ]))) * number_literal)) + number_literal) ))))) ^ (pointer_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4\n                                        + -0x3808)" * (cast_expression "(uint *)(puVar1 + (uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4\n                                        + -0x3808)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + (uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4\n                                        + -0x3808)" ( (binary_expression "puVar1 + (uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4\n                                        + -0x3808" (binary_expression "puVar1 + (uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4" identifier + (binary_expression "(uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08] * 4" (cast_expression "(uint)(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[((uVar10 << 0x10) >> 0x18) - 0x1b08]" identifier [ (binary_expression "((uVar10 << 0x10) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar10 << 0x10) >> 0x18)" ( (binary_expression "(uVar10 << 0x10) >> 0x18" (parenthesized_expression "(uVar10 << 0x10)" ( (binary_expression "uVar10 << 0x10" identifier << number_literal) )) >> number_literal) )) - number_literal) ]))) * number_literal)) + number_literal) )))))) ;) })) (expression_statement "pwVar4[0x78] = uVar10;" (assignment_expression "pwVar4[0x78] = uVar10" (subscript_expression "pwVar4[0x78]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pwVar4 = pwVar4 + 1;" (assignment_expression "pwVar4 = pwVar4 + 1" identifier = (binary_expression "pwVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pwVar4 != pwVar6)" ( (binary_expression "pwVar4 != pwVar6" identifier != identifier) )) ;) })) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "iVar9 = iVar9 + iVar12 * -4;" (assignment_expression "iVar9 = iVar9 + iVar12 * -4" identifier = (binary_expression "iVar9 + iVar12 * -4" identifier + (binary_expression "iVar12 * -4" identifier * number_literal))) ;) (expression_statement "iVar2 = iVar2 + iVar12 * -4;" (assignment_expression "iVar2 = iVar2 + iVar12 * -4" identifier = (binary_expression "iVar2 + iVar12 * -4" identifier + (binary_expression "iVar12 * -4" identifier * number_literal))) ;) }) while (parenthesized_expression "(iVar7 != iVar11 + 1)" ( (binary_expression "iVar7 != iVar11 + 1" identifier != (binary_expression "iVar11 + 1" identifier + number_literal)) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0004fa54(uint *param_1,int param_2,byte *param_3,int param_4)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  \n  if (param_2 == 0x10) {\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 4;\n      param_1[0xfb] = 10;\n      uVar5 = 4;\n      uVar9 = 10;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fd88:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x15f0);\n    uVar10 = 4;\n    goto LAB_0004fe48;\n  }\n  if (param_2 == 0x18) {\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 6;\n      param_1[0xfb] = 0xc;\n      uVar5 = 4;\n      uVar9 = 0xc;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fea8:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x1270);\n    uVar10 = 6;\n  }\n  else {\n    if (param_2 != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }\n    else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40);\n    uVar10 = 8;\n  }\nLAB_0004fe48:\n  puVar1 = PTR_DAT_000b8348;\n  if (0 < (int)((uVar9 + 1) * uVar10)) {\n    uVar9 = param_1[0xfb];\n    uVar10 = param_1[0xfa];\n    uVar8 = 1;\n    iVar2 = 0;\n    puVar4 = param_1;\n    do {\n      if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      param_3 = param_3 + 4;\n      puVar4 = puVar4 + 1;\n    } while (iVar2 < (int)((uVar9 + 1) * uVar10));\n  }\n  puVar1 = PTR_DAT_000b8348;\n  if (-1 < (int)uVar9) {\n    param_1 = param_1 + uVar10;\n    iVar2 = uVar10 * uVar9 * 4;\n    iVar7 = 0;\n    uVar5 = 0;\n    do {\n      puVar4 = param_1 + -uVar10;\n      if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }\n      uVar5 = uVar5 + 1;\n      param_1 = param_1 + uVar10;\n      iVar7 = iVar7 + uVar10 * -4;\n      iVar2 = iVar2 + uVar10 * -4;\n    } while (uVar5 != uVar9 + 1);\n  }\n  return;\n}\n\n" (function_definition "void FUN_0004fa54(uint *param_1,int param_2,byte *param_3,int param_4)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  \n  if (param_2 == 0x10) {\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 4;\n      param_1[0xfb] = 10;\n      uVar5 = 4;\n      uVar9 = 10;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fd88:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x15f0);\n    uVar10 = 4;\n    goto LAB_0004fe48;\n  }\n  if (param_2 == 0x18) {\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 6;\n      param_1[0xfb] = 0xc;\n      uVar5 = 4;\n      uVar9 = 0xc;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fea8:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x1270);\n    uVar10 = 6;\n  }\n  else {\n    if (param_2 != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }\n    else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40);\n    uVar10 = 8;\n  }\nLAB_0004fe48:\n  puVar1 = PTR_DAT_000b8348;\n  if (0 < (int)((uVar9 + 1) * uVar10)) {\n    uVar9 = param_1[0xfb];\n    uVar10 = param_1[0xfa];\n    uVar8 = 1;\n    iVar2 = 0;\n    puVar4 = param_1;\n    do {\n      if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      param_3 = param_3 + 4;\n      puVar4 = puVar4 + 1;\n    } while (iVar2 < (int)((uVar9 + 1) * uVar10));\n  }\n  puVar1 = PTR_DAT_000b8348;\n  if (-1 < (int)uVar9) {\n    param_1 = param_1 + uVar10;\n    iVar2 = uVar10 * uVar9 * 4;\n    iVar7 = 0;\n    uVar5 = 0;\n    do {\n      puVar4 = param_1 + -uVar10;\n      if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }\n      uVar5 = uVar5 + 1;\n      param_1 = param_1 + uVar10;\n      iVar7 = iVar7 + uVar10 * -4;\n      iVar2 = iVar2 + uVar10 * -4;\n    } while (uVar5 != uVar9 + 1);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0004fa54(uint *param_1,int param_2,byte *param_3,int param_4)" identifier (parameter_list "(uint *param_1,int param_2,byte *param_3,int param_4)" ( (parameter_declaration "uint *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 identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  \n  if (param_2 == 0x10) {\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 4;\n      param_1[0xfb] = 10;\n      uVar5 = 4;\n      uVar9 = 10;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fd88:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x15f0);\n    uVar10 = 4;\n    goto LAB_0004fe48;\n  }\n  if (param_2 == 0x18) {\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 6;\n      param_1[0xfb] = 0xc;\n      uVar5 = 4;\n      uVar9 = 0xc;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fea8:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x1270);\n    uVar10 = 6;\n  }\n  else {\n    if (param_2 != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }\n    else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40);\n    uVar10 = 8;\n  }\nLAB_0004fe48:\n  puVar1 = PTR_DAT_000b8348;\n  if (0 < (int)((uVar9 + 1) * uVar10)) {\n    uVar9 = param_1[0xfb];\n    uVar10 = param_1[0xfa];\n    uVar8 = 1;\n    iVar2 = 0;\n    puVar4 = param_1;\n    do {\n      if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      param_3 = param_3 + 4;\n      puVar4 = puVar4 + 1;\n    } while (iVar2 < (int)((uVar9 + 1) * uVar10));\n  }\n  puVar1 = PTR_DAT_000b8348;\n  if (-1 < (int)uVar9) {\n    param_1 = param_1 + uVar10;\n    iVar2 = uVar10 * uVar9 * 4;\n    iVar7 = 0;\n    uVar5 = 0;\n    do {\n      puVar4 = param_1 + -uVar10;\n      if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }\n      uVar5 = uVar5 + 1;\n      param_1 = param_1 + uVar10;\n      iVar7 = iVar7 + uVar10 * -4;\n      iVar2 = iVar2 + uVar10 * -4;\n    } while (uVar5 != uVar9 + 1);\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (if_statement "if (param_2 == 0x10) {\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 4;\n      param_1[0xfb] = 10;\n      uVar5 = 4;\n      uVar9 = 10;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fd88:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x15f0);\n    uVar10 = 4;\n    goto LAB_0004fe48;\n  }" if (parenthesized_expression "(param_2 == 0x10)" ( (binary_expression "param_2 == 0x10" identifier == number_literal) )) (compound_statement "{\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 4;\n      param_1[0xfb] = 10;\n      uVar5 = 4;\n      uVar9 = 10;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fd88:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x15f0);\n    uVar10 = 4;\n    goto LAB_0004fe48;\n  }" { (if_statement "if (param_4 == 0x10) {\n      param_1[0xfa] = 4;\n      param_1[0xfb] = 10;\n      uVar5 = 4;\n      uVar9 = 10;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }" if (parenthesized_expression "(param_4 == 0x10)" ( (binary_expression "param_4 == 0x10" identifier == number_literal) )) (compound_statement "{\n      param_1[0xfa] = 4;\n      param_1[0xfb] = 10;\n      uVar5 = 4;\n      uVar9 = 10;\n    }" { (expression_statement "param_1[0xfa] = 4;" (assignment_expression "param_1[0xfa] = 4" (subscript_expression "param_1[0xfa]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xfb] = 10;" (assignment_expression "param_1[0xfb] = 10" (subscript_expression "param_1[0xfb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar5 = 4;" (assignment_expression "uVar5 = 4" identifier = number_literal) ;) (expression_statement "uVar9 = 10;" (assignment_expression "uVar9 = 10" identifier = number_literal) ;) }) (else_clause "else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }" else (compound_statement "{\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }" { (if_statement "if (param_4 != 0x18) goto LAB_0004fdb4;" if (parenthesized_expression "(param_4 != 0x18)" ( (binary_expression "param_4 != 0x18" identifier != number_literal) )) (goto_statement "goto LAB_0004fdb4;" goto statement_identifier ;)) (expression_statement "uVar5 = 6;" (assignment_expression "uVar5 = 6" identifier = number_literal) ;) (expression_statement "param_1[0xfa] = 4;" (assignment_expression "param_1[0xfa] = 4" (subscript_expression "param_1[0xfa]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar9 = 0xc;" (assignment_expression "uVar9 = 0xc" identifier = number_literal) ;) (expression_statement "param_1[0xfb] = 0xc;" (assignment_expression "param_1[0xfb] = 0xc" (subscript_expression "param_1[0xfb]" identifier [ number_literal ]) = number_literal) ;) }))) (labeled_statement "LAB_0004fd88:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570);" statement_identifier : (expression_statement "param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570);" (assignment_expression "param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570)" (subscript_expression "param_1[0xf0]" identifier [ number_literal ]) = (call_expression "(uint)(PTR_LAB_000b8640 + -0x2570)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(PTR_LAB_000b8640 + -0x2570)" ( (binary_expression "PTR_LAB_000b8640 + -0x2570" identifier + number_literal) )))) ;)) (expression_statement "param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x15f0);" (assignment_expression "param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x15f0)" (subscript_expression "param_1[0xf1]" identifier [ number_literal ]) = (call_expression "(uint)(PTR_LAB_000b8640 + -0x15f0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(PTR_LAB_000b8640 + -0x15f0)" ( (binary_expression "PTR_LAB_000b8640 + -0x15f0" identifier + number_literal) )))) ;) (expression_statement "uVar10 = 4;" (assignment_expression "uVar10 = 4" identifier = number_literal) ;) (goto_statement "goto LAB_0004fe48;" goto statement_identifier ;) })) (if_statement "if (param_2 == 0x18) {\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 6;\n      param_1[0xfb] = 0xc;\n      uVar5 = 4;\n      uVar9 = 0xc;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fea8:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x1270);\n    uVar10 = 6;\n  }\n  else {\n    if (param_2 != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }\n    else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40);\n    uVar10 = 8;\n  }" if (parenthesized_expression "(param_2 == 0x18)" ( (binary_expression "param_2 == 0x18" identifier == number_literal) )) (compound_statement "{\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 6;\n      param_1[0xfb] = 0xc;\n      uVar5 = 4;\n      uVar9 = 0xc;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fea8:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x1270);\n    uVar10 = 6;\n  }" { (if_statement "if (param_4 == 0x10) {\n      param_1[0xfa] = 6;\n      param_1[0xfb] = 0xc;\n      uVar5 = 4;\n      uVar9 = 0xc;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }" if (parenthesized_expression "(param_4 == 0x10)" ( (binary_expression "param_4 == 0x10" identifier == number_literal) )) (compound_statement "{\n      param_1[0xfa] = 6;\n      param_1[0xfb] = 0xc;\n      uVar5 = 4;\n      uVar9 = 0xc;\n    }" { (expression_statement "param_1[0xfa] = 6;" (assignment_expression "param_1[0xfa] = 6" (subscript_expression "param_1[0xfa]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xfb] = 0xc;" (assignment_expression "param_1[0xfb] = 0xc" (subscript_expression "param_1[0xfb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar5 = 4;" (assignment_expression "uVar5 = 4" identifier = number_literal) ;) (expression_statement "uVar9 = 0xc;" (assignment_expression "uVar9 = 0xc" identifier = number_literal) ;) }) (else_clause "else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }" else (compound_statement "{\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }" { (if_statement "if (param_4 != 0x18) goto LAB_0004fdb4;" if (parenthesized_expression "(param_4 != 0x18)" ( (binary_expression "param_4 != 0x18" identifier != number_literal) )) (goto_statement "goto LAB_0004fdb4;" goto statement_identifier ;)) (expression_statement "uVar5 = 6;" (assignment_expression "uVar5 = 6" identifier = number_literal) ;) (expression_statement "param_1[0xfa] = 6;" (assignment_expression "param_1[0xfa] = 6" (subscript_expression "param_1[0xfa]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar9 = 0xc;" (assignment_expression "uVar9 = 0xc" identifier = number_literal) ;) (expression_statement "param_1[0xfb] = 0xc;" (assignment_expression "param_1[0xfb] = 0xc" (subscript_expression "param_1[0xfb]" identifier [ number_literal ]) = number_literal) ;) }))) (labeled_statement "LAB_0004fea8:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0);" statement_identifier : (expression_statement "param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0);" (assignment_expression "param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0)" (subscript_expression "param_1[0xf0]" identifier [ number_literal ]) = (call_expression "(uint)(PTR_LAB_000b8640 + -0x21f0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(PTR_LAB_000b8640 + -0x21f0)" ( (binary_expression "PTR_LAB_000b8640 + -0x21f0" identifier + number_literal) )))) ;)) (expression_statement "param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x1270);" (assignment_expression "param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x1270)" (subscript_expression "param_1[0xf1]" identifier [ number_literal ]) = (call_expression "(uint)(PTR_LAB_000b8640 + -0x1270)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(PTR_LAB_000b8640 + -0x1270)" ( (binary_expression "PTR_LAB_000b8640 + -0x1270" identifier + number_literal) )))) ;) (expression_statement "uVar10 = 6;" (assignment_expression "uVar10 = 6" identifier = number_literal) ;) }) (else_clause "else {\n    if (param_2 != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }\n    else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40);\n    uVar10 = 8;\n  }" else (compound_statement "{\n    if (param_2 != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }\n    else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40);\n    uVar10 = 8;\n  }" { (if_statement "if (param_2 != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }" if (parenthesized_expression "(param_2 != 0x20)" ( (binary_expression "param_2 != 0x20" identifier != number_literal) )) (compound_statement "{\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }" { (expression_statement "(*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);" (call_expression "(*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14)" (parenthesized_expression "(*(code *)PTR___assert_fail_000b8b18)" ( (pointer_expression "*(code *)PTR___assert_fail_000b8b18" * (cast_expression "(code *)PTR___assert_fail_000b8b18" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14)" ( (binary_expression "PTR_DAT_000b8348 + -0x3d74" identifier + number_literal) , (binary_expression "PTR_DAT_000b8348 + -0x3d80" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_000b8348 + -0x3c14" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (param_4 == 0x10) {\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }\n    else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }" if (parenthesized_expression "(param_4 == 0x10)" ( (binary_expression "param_4 == 0x10" identifier == number_literal) )) (compound_statement "{\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }" { (expression_statement "param_1[0xfa] = 8;" (assignment_expression "param_1[0xfa] = 8" (subscript_expression "param_1[0xfa]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xfb] = 0xe;" (assignment_expression "param_1[0xfb] = 0xe" (subscript_expression "param_1[0xfb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar5 = 4;" (assignment_expression "uVar5 = 4" identifier = number_literal) ;) (expression_statement "uVar9 = 0xe;" (assignment_expression "uVar9 = 0xe" identifier = number_literal) ;) }) (else_clause "else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }" else (if_statement "if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }" if (parenthesized_expression "(param_4 == 0x18)" ( (binary_expression "param_4 == 0x18" identifier == number_literal) )) (compound_statement "{\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }" { (expression_statement "uVar5 = 6;" (assignment_expression "uVar5 = 6" identifier = number_literal) ;) (expression_statement "param_1[0xfa] = 8;" (assignment_expression "param_1[0xfa] = 8" (subscript_expression "param_1[0xfa]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar9 = 0xe;" (assignment_expression "uVar9 = 0xe" identifier = number_literal) ;) (expression_statement "param_1[0xfb] = 0xe;" (assignment_expression "param_1[0xfb] = 0xe" (subscript_expression "param_1[0xfb]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }" else (compound_statement "{\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }" { (labeled_statement "LAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }" statement_identifier : (if_statement "if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }" if (parenthesized_expression "(param_4 != 0x20)" ( (binary_expression "param_4 != 0x20" identifier != number_literal) )) (compound_statement "{\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }" { (expression_statement "(*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);" (call_expression "(*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14)" (parenthesized_expression "(*(code *)PTR___assert_fail_000b8b18)" ( (pointer_expression "*(code *)PTR___assert_fail_000b8b18" * (cast_expression "(code *)PTR___assert_fail_000b8b18" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14)" ( (binary_expression "PTR_DAT_000b8348 + -0x3d40" identifier + number_literal) , (binary_expression "PTR_DAT_000b8348 + -0x3d80" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_000b8348 + -0x3c14" identifier + number_literal) ))) ;) (return_statement "return;" return ;) }))) (expression_statement "uVar5 = 8;" (assignment_expression "uVar5 = 8" identifier = number_literal) ;) (if_statement "if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }" if (parenthesized_expression "(param_2 < 0)" ( (binary_expression "param_2 < 0" identifier < number_literal) )) (compound_statement "{\n        param_2 = param_2 + 3;\n      }" { (expression_statement "param_2 = param_2 + 3;" (assignment_expression "param_2 = param_2 + 3" identifier = (binary_expression "param_2 + 3" identifier + number_literal)) ;) })) (expression_statement "uVar10 = param_2 >> 2;" (assignment_expression "uVar10 = param_2 >> 2" identifier = (binary_expression "param_2 >> 2" identifier >> number_literal)) ;) (expression_statement "param_1[0xfa] = uVar10;" (assignment_expression "param_1[0xfa] = uVar10" (subscript_expression "param_1[0xfa]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar9 = uVar5;" (assignment_expression "uVar9 = uVar5" identifier = identifier) ;) (if_statement "if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }" if (parenthesized_expression "(7 < (int)uVar10)" ( (binary_expression "7 < (int)uVar10" number_literal < (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        uVar9 = uVar10;\n      }" { (expression_statement "uVar9 = uVar10;" (assignment_expression "uVar9 = uVar10" identifier = identifier) ;) })) (expression_statement "uVar9 = uVar9 + 6;" (assignment_expression "uVar9 = uVar9 + 6" identifier = (binary_expression "uVar9 + 6" identifier + number_literal)) ;) (expression_statement "param_1[0xfb] = uVar9;" (assignment_expression "param_1[0xfb] = uVar9" (subscript_expression "param_1[0xfb]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }" if (parenthesized_expression "(uVar10 != 8)" ( (binary_expression "uVar10 != 8" identifier != number_literal) )) (compound_statement "{\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }" { (if_statement "if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }" if (parenthesized_expression "(uVar10 != 6)" ( (binary_expression "uVar10 != 6" identifier != number_literal) )) (compound_statement "{\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }" { (if_statement "if (uVar10 != 4) goto LAB_0004fe48;" if (parenthesized_expression "(uVar10 != 4)" ( (binary_expression "uVar10 != 4" identifier != number_literal) )) (goto_statement "goto LAB_0004fe48;" goto statement_identifier ;)) (goto_statement "goto LAB_0004fd88;" goto statement_identifier ;) })) (goto_statement "goto LAB_0004fea8;" goto statement_identifier ;) })) }))))) (expression_statement "param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0);" (assignment_expression "param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0)" (subscript_expression "param_1[0xf0]" identifier [ number_literal ]) = (call_expression "(uint)(PTR_LAB_000b8640 + -0x1cc0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(PTR_LAB_000b8640 + -0x1cc0)" ( (binary_expression "PTR_LAB_000b8640 + -0x1cc0" identifier + number_literal) )))) ;) (expression_statement "param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40);" (assignment_expression "param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40)" (subscript_expression "param_1[0xf1]" identifier [ number_literal ]) = (call_expression "(uint)(PTR_LAB_000b8640 + -0xd40)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(PTR_LAB_000b8640 + -0xd40)" ( (binary_expression "PTR_LAB_000b8640 + -0xd40" identifier + number_literal) )))) ;) (expression_statement "uVar10 = 8;" (assignment_expression "uVar10 = 8" identifier = number_literal) ;) }))) (labeled_statement "LAB_0004fe48:\n  puVar1 = PTR_DAT_000b8348;" statement_identifier : (expression_statement "puVar1 = PTR_DAT_000b8348;" (assignment_expression "puVar1 = PTR_DAT_000b8348" identifier = identifier) ;)) (if_statement "if (0 < (int)((uVar9 + 1) * uVar10)) {\n    uVar9 = param_1[0xfb];\n    uVar10 = param_1[0xfa];\n    uVar8 = 1;\n    iVar2 = 0;\n    puVar4 = param_1;\n    do {\n      if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      param_3 = param_3 + 4;\n      puVar4 = puVar4 + 1;\n    } while (iVar2 < (int)((uVar9 + 1) * uVar10));\n  }" if (parenthesized_expression "(0 < (int)((uVar9 + 1) * uVar10))" ( (binary_expression "0 < (int)((uVar9 + 1) * uVar10)" number_literal < (cast_expression "(int)((uVar9 + 1) * uVar10)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar9 + 1) * uVar10)" ( (binary_expression "(uVar9 + 1) * uVar10" (parenthesized_expression "(uVar9 + 1)" ( (binary_expression "uVar9 + 1" identifier + number_literal) )) * identifier) )))) )) (compound_statement "{\n    uVar9 = param_1[0xfb];\n    uVar10 = param_1[0xfa];\n    uVar8 = 1;\n    iVar2 = 0;\n    puVar4 = param_1;\n    do {\n      if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      param_3 = param_3 + 4;\n      puVar4 = puVar4 + 1;\n    } while (iVar2 < (int)((uVar9 + 1) * uVar10));\n  }" { (expression_statement "uVar9 = param_1[0xfb];" (assignment_expression "uVar9 = param_1[0xfb]" identifier = (subscript_expression "param_1[0xfb]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = param_1[0xfa];" (assignment_expression "uVar10 = param_1[0xfa]" identifier = (subscript_expression "param_1[0xfa]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (expression_statement "puVar4 = param_1;" (assignment_expression "puVar4 = param_1" identifier = identifier) ;) (do_statement "do {\n      if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      param_3 = param_3 + 4;\n      puVar4 = puVar4 + 1;\n    } while (iVar2 < (int)((uVar9 + 1) * uVar10));" do (compound_statement "{\n      if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      param_3 = param_3 + 4;\n      puVar4 = puVar4 + 1;\n    }" { (if_statement "if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }" if (parenthesized_expression "(iVar2 < (int)uVar5)" ( (binary_expression "iVar2 < (int)uVar5" identifier < (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }" { (expression_statement "*puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;" (assignment_expression "*puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8" (pointer_expression "*puVar4" * identifier) = (binary_expression "(uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8" (binary_expression "(uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3]" (binary_expression "(uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10" (binary_expression "(uint)*param_3 << 0x18" (binary_expression "(uint)*param_3" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal) | (binary_expression "(uint)param_3[1] << 0x10" (cast_expression "(uint)param_3[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) | (binary_expression "(uint)param_3[2] << 8" (cast_expression "(uint)param_3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) << number_literal))) ;) }) (else_clause "else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }" else (compound_statement "{\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }" { (if_statement "if (uVar5 == 0) {\n          trap(7);\n        }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          trap(7);\n        }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar3 = puVar4[-1];" (assignment_expression "uVar3 = puVar4[-1]" identifier = (subscript_expression "puVar4[-1]" identifier [ number_literal ])) ;) (if_statement "if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }" if (parenthesized_expression "(iVar2 % (int)uVar5 == 0)" ( (binary_expression "iVar2 % (int)uVar5 == 0" (binary_expression "iVar2 % (int)uVar5" identifier % (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) == number_literal) )) (compound_statement "{\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }" { (expression_statement "uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];" (assignment_expression "uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08]" identifier = (binary_expression "((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08]" (binary_expression "((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8" (parenthesized_expression "((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08])" ( (binary_expression "(((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]" (binary_expression "(((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8" (parenthesized_expression "(((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08])" ( (binary_expression "((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]" (binary_expression "((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8" (parenthesized_expression "((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8)" ( (binary_expression "(byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8" (cast_expression "(byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]" identifier [ (binary_expression "((uVar3 << 8) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar3 << 8) >> 0x18)" ( (binary_expression "(uVar3 << 8) >> 0x18" (parenthesized_expression "(uVar3 << 8)" ( (binary_expression "uVar3 << 8" identifier << number_literal) )) >> number_literal) )) - number_literal) ])) ^ identifier) )) << number_literal) | (cast_expression "(uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]" identifier [ (binary_expression "((uVar3 << 0x10) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar3 << 0x10) >> 0x18)" ( (binary_expression "(uVar3 << 0x10) >> 0x18" (parenthesized_expression "(uVar3 << 0x10)" ( (binary_expression "uVar3 << 0x10" identifier << number_literal) )) >> number_literal) )) - number_literal) ])))) )) << number_literal) | (cast_expression "(uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar1[(uVar3 & 0xff) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[(uVar3 & 0xff) - 0x1b08]" identifier [ (binary_expression "(uVar3 & 0xff) - 0x1b08" (parenthesized_expression "(uVar3 & 0xff)" ( (binary_expression "uVar3 & 0xff" identifier & number_literal) )) - number_literal) ])))) )) << number_literal) | (cast_expression "(uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar1[(uVar3 >> 0x18) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[(uVar3 >> 0x18) - 0x1b08]" identifier [ (binary_expression "(uVar3 >> 0x18) - 0x1b08" (parenthesized_expression "(uVar3 >> 0x18)" ( (binary_expression "uVar3 >> 0x18" identifier >> number_literal) )) - number_literal) ]))))) ;) (expression_statement "uVar6 = uVar8 & 0x80;" (assignment_expression "uVar6 = uVar8 & 0x80" identifier = (binary_expression "uVar8 & 0x80" identifier & number_literal)) ;) (if_statement "if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (compound_statement "{\n            uVar6 = 0x1b;\n          }" { (expression_statement "uVar6 = 0x1b;" (assignment_expression "uVar6 = 0x1b" identifier = number_literal) ;) })) (expression_statement "uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;" (assignment_expression "uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6" identifier = (binary_expression "(uVar8 & 0x7f) << 1 ^ uVar6" (binary_expression "(uVar8 & 0x7f) << 1" (parenthesized_expression "(uVar8 & 0x7f)" ( (binary_expression "uVar8 & 0x7f" identifier & number_literal) )) << number_literal) ^ identifier)) ;) }) (else_clause "else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }" else (if_statement "if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }" if (parenthesized_expression "((iVar2 % (int)uVar5 == 4) && (0x1b < param_4))" ( (binary_expression "(iVar2 % (int)uVar5 == 4) && (0x1b < param_4)" (parenthesized_expression "(iVar2 % (int)uVar5 == 4)" ( (binary_expression "iVar2 % (int)uVar5 == 4" (binary_expression "iVar2 % (int)uVar5" identifier % (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) == number_literal) )) && (parenthesized_expression "(0x1b < param_4)" ( (binary_expression "0x1b < param_4" number_literal < identifier) ))) )) (compound_statement "{\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }" { (expression_statement "uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);" (assignment_expression "uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08])" identifier = (call_expression "CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08])" identifier (argument_list "(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08])" ( (call_expression "CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08])" identifier (argument_list "(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08])" ( (call_expression "CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08])" identifier (argument_list "(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08])" ( (subscript_expression "puVar1[(uVar3 >> 0x18) - 0x1b08]" identifier [ (binary_expression "(uVar3 >> 0x18) - 0x1b08" (parenthesized_expression "(uVar3 >> 0x18)" ( (binary_expression "uVar3 >> 0x18" identifier >> number_literal) )) - number_literal) ]) , (subscript_expression "puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]" identifier [ (binary_expression "((uVar3 << 8) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar3 << 8) >> 0x18)" ( (binary_expression "(uVar3 << 8) >> 0x18" (parenthesized_expression "(uVar3 << 8)" ( (binary_expression "uVar3 << 8" identifier << number_literal) )) >> number_literal) )) - number_literal) ]) ))) , (subscript_expression "puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]" identifier [ (binary_expression "((uVar3 << 0x10) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar3 << 0x10) >> 0x18)" ( (binary_expression "(uVar3 << 0x10) >> 0x18" (parenthesized_expression "(uVar3 << 0x10)" ( (binary_expression "uVar3 << 0x10" identifier << number_literal) )) >> number_literal) )) - number_literal) ]) ))) , (subscript_expression "puVar1[(uVar3 & 0xff) - 0x1b08]" identifier [ (binary_expression "(uVar3 & 0xff) - 0x1b08" (parenthesized_expression "(uVar3 & 0xff)" ( (binary_expression "uVar3 & 0xff" identifier & number_literal) )) - number_literal) ]) )))) ;) })))) (expression_statement "*puVar4 = puVar4[-uVar5] ^ uVar3;" (assignment_expression "*puVar4 = puVar4[-uVar5] ^ uVar3" (pointer_expression "*puVar4" * identifier) = (binary_expression "puVar4[-uVar5] ^ uVar3" (subscript_expression "puVar4[-uVar5]" identifier [ (unary_expression "-uVar5" - identifier) ]) ^ identifier)) ;) }))) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (expression_statement "param_3 = param_3 + 4;" (assignment_expression "param_3 = param_3 + 4" identifier = (binary_expression "param_3 + 4" identifier + number_literal)) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 < (int)((uVar9 + 1) * uVar10))" ( (binary_expression "iVar2 < (int)((uVar9 + 1) * uVar10)" identifier < (cast_expression "(int)((uVar9 + 1) * uVar10)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar9 + 1) * uVar10)" ( (binary_expression "(uVar9 + 1) * uVar10" (parenthesized_expression "(uVar9 + 1)" ( (binary_expression "uVar9 + 1" identifier + number_literal) )) * identifier) )))) )) ;) })) (expression_statement "puVar1 = PTR_DAT_000b8348;" (assignment_expression "puVar1 = PTR_DAT_000b8348" identifier = identifier) ;) (if_statement "if (-1 < (int)uVar9) {\n    param_1 = param_1 + uVar10;\n    iVar2 = uVar10 * uVar9 * 4;\n    iVar7 = 0;\n    uVar5 = 0;\n    do {\n      puVar4 = param_1 + -uVar10;\n      if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }\n      uVar5 = uVar5 + 1;\n      param_1 = param_1 + uVar10;\n      iVar7 = iVar7 + uVar10 * -4;\n      iVar2 = iVar2 + uVar10 * -4;\n    } while (uVar5 != uVar9 + 1);\n  }" if (parenthesized_expression "(-1 < (int)uVar9)" ( (binary_expression "-1 < (int)uVar9" number_literal < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    param_1 = param_1 + uVar10;\n    iVar2 = uVar10 * uVar9 * 4;\n    iVar7 = 0;\n    uVar5 = 0;\n    do {\n      puVar4 = param_1 + -uVar10;\n      if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }\n      uVar5 = uVar5 + 1;\n      param_1 = param_1 + uVar10;\n      iVar7 = iVar7 + uVar10 * -4;\n      iVar2 = iVar2 + uVar10 * -4;\n    } while (uVar5 != uVar9 + 1);\n  }" { (expression_statement "param_1 = param_1 + uVar10;" (assignment_expression "param_1 = param_1 + uVar10" identifier = (binary_expression "param_1 + uVar10" identifier + identifier)) ;) (expression_statement "iVar2 = uVar10 * uVar9 * 4;" (assignment_expression "iVar2 = uVar10 * uVar9 * 4" identifier = (binary_expression "uVar10 * uVar9 * 4" (binary_expression "uVar10 * uVar9" identifier * identifier) * number_literal)) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n      puVar4 = param_1 + -uVar10;\n      if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }\n      uVar5 = uVar5 + 1;\n      param_1 = param_1 + uVar10;\n      iVar7 = iVar7 + uVar10 * -4;\n      iVar2 = iVar2 + uVar10 * -4;\n    } while (uVar5 != uVar9 + 1);" do (compound_statement "{\n      puVar4 = param_1 + -uVar10;\n      if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }\n      uVar5 = uVar5 + 1;\n      param_1 = param_1 + uVar10;\n      iVar7 = iVar7 + uVar10 * -4;\n      iVar2 = iVar2 + uVar10 * -4;\n    }" { (expression_statement "puVar4 = param_1 + -uVar10;" (assignment_expression "puVar4 = param_1 + -uVar10" identifier = (binary_expression "param_1 + -uVar10" identifier + (unary_expression "-uVar10" - identifier))) ;) (if_statement "if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }" if (parenthesized_expression "(0 < (int)uVar10)" ( (binary_expression "0 < (int)uVar10" number_literal < (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }" { (do_statement "do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);" do (compound_statement "{\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        }" { (expression_statement "uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);" (assignment_expression "uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7)" identifier = (pointer_expression "*(uint *)((int)puVar4 + iVar2 + iVar7)" * (cast_expression "(uint *)((int)puVar4 + iVar2 + iVar7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + iVar2 + iVar7)" ( (binary_expression "(int)puVar4 + iVar2 + iVar7" (binary_expression "(int)puVar4 + iVar2" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier) ))))) ;) (if_statement "if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }" if (parenthesized_expression "((uVar5 != 0) && (uVar9 != uVar5))" ( (binary_expression "(uVar5 != 0) && (uVar9 != uVar5)" (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar9 != uVar5)" ( (binary_expression "uVar9 != uVar5" identifier != identifier) ))) )) (compound_statement "{\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }" { (expression_statement "uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);" (assignment_expression "uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808)" identifier = (binary_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808)" (binary_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408)" (binary_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008)" (pointer_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08)" * (cast_expression "(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08)" ( (binary_expression "puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08" (binary_expression "puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4" identifier + (binary_expression "(uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4" (cast_expression "(uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar1[(uVar8 & 0xff) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[(uVar8 & 0xff) - 0x1b08]" identifier [ (binary_expression "(uVar8 & 0xff) - 0x1b08" (parenthesized_expression "(uVar8 & 0xff)" ( (binary_expression "uVar8 & 0xff" identifier & number_literal) )) - number_literal) ]))) * number_literal)) + number_literal) )))) ^ (pointer_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008)" * (cast_expression "(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008)" ( (binary_expression "puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008" (binary_expression "puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4" identifier + (binary_expression "(uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4" (cast_expression "(uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar1[(uVar8 >> 0x18) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[(uVar8 >> 0x18) - 0x1b08]" identifier [ (binary_expression "(uVar8 >> 0x18) - 0x1b08" (parenthesized_expression "(uVar8 >> 0x18)" ( (binary_expression "uVar8 >> 0x18" identifier >> number_literal) )) - number_literal) ]))) * number_literal)) + number_literal) ))))) ^ (pointer_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408)" * (cast_expression "(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408)" ( (binary_expression "puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408" (binary_expression "puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4" identifier + (binary_expression "(uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4" (cast_expression "(uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[((uVar8 << 8) >> 0x18) - 0x1b08]" identifier [ (binary_expression "((uVar8 << 8) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar8 << 8) >> 0x18)" ( (binary_expression "(uVar8 << 8) >> 0x18" (parenthesized_expression "(uVar8 << 8)" ( (binary_expression "uVar8 << 8" identifier << number_literal) )) >> number_literal) )) - number_literal) ]))) * number_literal)) + number_literal) ))))) ^ (pointer_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808)" * (cast_expression "(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808)" ( (binary_expression "puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808" (binary_expression "puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4" identifier + (binary_expression "(uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4" (cast_expression "(uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08]" identifier [ (binary_expression "((uVar8 << 0x10) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar8 << 0x10) >> 0x18)" ( (binary_expression "(uVar8 << 0x10) >> 0x18" (parenthesized_expression "(uVar8 << 0x10)" ( (binary_expression "uVar8 << 0x10" identifier << number_literal) )) >> number_literal) )) - number_literal) ]))) * number_literal)) + number_literal) )))))) ;) })) (expression_statement "puVar4[0x78] = uVar8;" (assignment_expression "puVar4[0x78] = uVar8" (subscript_expression "puVar4[0x78]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar4 != param_1)" ( (binary_expression "puVar4 != param_1" identifier != identifier) )) ;) })) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (expression_statement "param_1 = param_1 + uVar10;" (assignment_expression "param_1 = param_1 + uVar10" identifier = (binary_expression "param_1 + uVar10" identifier + identifier)) ;) (expression_statement "iVar7 = iVar7 + uVar10 * -4;" (assignment_expression "iVar7 = iVar7 + uVar10 * -4" identifier = (binary_expression "iVar7 + uVar10 * -4" identifier + (binary_expression "uVar10 * -4" identifier * number_literal))) ;) (expression_statement "iVar2 = iVar2 + uVar10 * -4;" (assignment_expression "iVar2 = iVar2 + uVar10 * -4" identifier = (binary_expression "iVar2 + uVar10 * -4" identifier + (binary_expression "uVar10 * -4" identifier * number_literal))) ;) }) while (parenthesized_expression "(uVar5 != uVar9 + 1)" ( (binary_expression "uVar5 != uVar9 + 1" identifier != (binary_expression "uVar9 + 1" identifier + number_literal)) )) ;) })) (return_statement "return;" return ;) })))
(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 IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }))) (labeled_statement statement_identifier : (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) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto 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 (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }))) (labeled_statement statement_identifier : (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) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) (return_statement return ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) }))))) (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) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * IDENT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << LIT) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << LIT)) | (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << LIT))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT % (cast_expression ( (type_descriptor TYPE) ) IDENT)) == LIT) )) (compound_statement { (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 (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT << LIT) )) >> LIT) )) - LIT) ])) ^ IDENT) )) << LIT) | (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT << LIT) )) >> LIT) )) - LIT) ])))) )) << LIT) | (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) - LIT) ])))) )) << LIT) | (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) - LIT) ]))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) ^ IDENT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT % (cast_expression ( (type_descriptor TYPE) ) IDENT)) == LIT) )) && (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (call_expression IDENT (argument_list ( (call_expression IDENT (argument_list ( (subscript_expression IDENT [ (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) - LIT) ]) , (subscript_expression IDENT [ (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT << LIT) )) >> LIT) )) - LIT) ]) ))) , (subscript_expression IDENT [ (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT << LIT) )) >> LIT) )) - LIT) ]) ))) , (subscript_expression IDENT [ (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) - LIT) ]) )))) ;) })))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (subscript_expression IDENT [ (unary_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 IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * IDENT) )))) )) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * IDENT) * LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) - LIT) ]))) * LIT)) + LIT) )))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) - LIT) ]))) * LIT)) + LIT) ))))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT << LIT) )) >> LIT) )) - LIT) ]))) * LIT)) + LIT) ))))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT << LIT) )) >> LIT) )) - LIT) ]))) * LIT)) + LIT) )))))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) ;) })) (return_statement return ;) })))
(function_definition "void FUN_0004fa54(uint *param_1,int param_2,byte *param_3,int param_4)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  \n  if (param_2 == 0x10) {\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 4;\n      param_1[0xfb] = 10;\n      uVar5 = 4;\n      uVar9 = 10;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fd88:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x15f0);\n    uVar10 = 4;\n    goto LAB_0004fe48;\n  }\n  if (param_2 == 0x18) {\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 6;\n      param_1[0xfb] = 0xc;\n      uVar5 = 4;\n      uVar9 = 0xc;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fea8:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x1270);\n    uVar10 = 6;\n  }\n  else {\n    if (param_2 != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }\n    else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40);\n    uVar10 = 8;\n  }\nLAB_0004fe48:\n  puVar1 = PTR_DAT_000b8348;\n  if (0 < (int)((uVar9 + 1) * uVar10)) {\n    uVar9 = param_1[0xfb];\n    uVar10 = param_1[0xfa];\n    uVar8 = 1;\n    iVar2 = 0;\n    puVar4 = param_1;\n    do {\n      if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      param_3 = param_3 + 4;\n      puVar4 = puVar4 + 1;\n    } while (iVar2 < (int)((uVar9 + 1) * uVar10));\n  }\n  puVar1 = PTR_DAT_000b8348;\n  if (-1 < (int)uVar9) {\n    param_1 = param_1 + uVar10;\n    iVar2 = uVar10 * uVar9 * 4;\n    iVar7 = 0;\n    uVar5 = 0;\n    do {\n      puVar4 = param_1 + -uVar10;\n      if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }\n      uVar5 = uVar5 + 1;\n      param_1 = param_1 + uVar10;\n      iVar7 = iVar7 + uVar10 * -4;\n      iVar2 = iVar2 + uVar10 * -4;\n    } while (uVar5 != uVar9 + 1);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0004fa54(uint *param_1,int param_2,byte *param_3,int param_4)" (identifier "FUN_0004fa54") (parameter_list "(uint *param_1,int param_2,byte *param_3,int param_4)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (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") (identifier "param_4")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  \n  if (param_2 == 0x10) {\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 4;\n      param_1[0xfb] = 10;\n      uVar5 = 4;\n      uVar9 = 10;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fd88:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x15f0);\n    uVar10 = 4;\n    goto LAB_0004fe48;\n  }\n  if (param_2 == 0x18) {\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 6;\n      param_1[0xfb] = 0xc;\n      uVar5 = 4;\n      uVar9 = 0xc;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fea8:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x1270);\n    uVar10 = 6;\n  }\n  else {\n    if (param_2 != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }\n    else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40);\n    uVar10 = 8;\n  }\nLAB_0004fe48:\n  puVar1 = PTR_DAT_000b8348;\n  if (0 < (int)((uVar9 + 1) * uVar10)) {\n    uVar9 = param_1[0xfb];\n    uVar10 = param_1[0xfa];\n    uVar8 = 1;\n    iVar2 = 0;\n    puVar4 = param_1;\n    do {\n      if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      param_3 = param_3 + 4;\n      puVar4 = puVar4 + 1;\n    } while (iVar2 < (int)((uVar9 + 1) * uVar10));\n  }\n  puVar1 = PTR_DAT_000b8348;\n  if (-1 < (int)uVar9) {\n    param_1 = param_1 + uVar10;\n    iVar2 = uVar10 * uVar9 * 4;\n    iVar7 = 0;\n    uVar5 = 0;\n    do {\n      puVar4 = param_1 + -uVar10;\n      if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }\n      uVar5 = uVar5 + 1;\n      param_1 = param_1 + uVar10;\n      iVar7 = iVar7 + uVar10 * -4;\n      iVar2 = iVar2 + uVar10 * -4;\n    } while (uVar5 != uVar9 + 1);\n  }\n  return;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint *puVar4;" (type_identifier "uint") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (if_statement "if (param_2 == 0x10) {\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 4;\n      param_1[0xfb] = 10;\n      uVar5 = 4;\n      uVar9 = 10;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fd88:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x15f0);\n    uVar10 = 4;\n    goto LAB_0004fe48;\n  }" (if "if") (parenthesized_expression "(param_2 == 0x10)" (( "(") (binary_expression "param_2 == 0x10" (identifier "param_2") (== "==") (number_literal "0x10")) () ")")) (compound_statement "{\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 4;\n      param_1[0xfb] = 10;\n      uVar5 = 4;\n      uVar9 = 10;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fd88:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x15f0);\n    uVar10 = 4;\n    goto LAB_0004fe48;\n  }" ({ "{") (if_statement "if (param_4 == 0x10) {\n      param_1[0xfa] = 4;\n      param_1[0xfb] = 10;\n      uVar5 = 4;\n      uVar9 = 10;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }" (if "if") (parenthesized_expression "(param_4 == 0x10)" (( "(") (binary_expression "param_4 == 0x10" (identifier "param_4") (== "==") (number_literal "0x10")) () ")")) (compound_statement "{\n      param_1[0xfa] = 4;\n      param_1[0xfb] = 10;\n      uVar5 = 4;\n      uVar9 = 10;\n    }" ({ "{") (expression_statement "param_1[0xfa] = 4;" (assignment_expression "param_1[0xfa] = 4" (subscript_expression "param_1[0xfa]" (identifier "param_1") ([ "[") (number_literal "0xfa") (] "]")) (= "=") (number_literal "4")) (; ";")) (expression_statement "param_1[0xfb] = 10;" (assignment_expression "param_1[0xfb] = 10" (subscript_expression "param_1[0xfb]" (identifier "param_1") ([ "[") (number_literal "0xfb") (] "]")) (= "=") (number_literal "10")) (; ";")) (expression_statement "uVar5 = 4;" (assignment_expression "uVar5 = 4" (identifier "uVar5") (= "=") (number_literal "4")) (; ";")) (expression_statement "uVar9 = 10;" (assignment_expression "uVar9 = 10" (identifier "uVar9") (= "=") (number_literal "10")) (; ";")) (} "}")) (else_clause "else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }" (else "else") (compound_statement "{\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 4;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }" ({ "{") (if_statement "if (param_4 != 0x18) goto LAB_0004fdb4;" (if "if") (parenthesized_expression "(param_4 != 0x18)" (( "(") (binary_expression "param_4 != 0x18" (identifier "param_4") (!= "!=") (number_literal "0x18")) () ")")) (goto_statement "goto LAB_0004fdb4;" (goto "goto") (statement_identifier "LAB_0004fdb4") (; ";"))) (expression_statement "uVar5 = 6;" (assignment_expression "uVar5 = 6" (identifier "uVar5") (= "=") (number_literal "6")) (; ";")) (expression_statement "param_1[0xfa] = 4;" (assignment_expression "param_1[0xfa] = 4" (subscript_expression "param_1[0xfa]" (identifier "param_1") ([ "[") (number_literal "0xfa") (] "]")) (= "=") (number_literal "4")) (; ";")) (expression_statement "uVar9 = 0xc;" (assignment_expression "uVar9 = 0xc" (identifier "uVar9") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "param_1[0xfb] = 0xc;" (assignment_expression "param_1[0xfb] = 0xc" (subscript_expression "param_1[0xfb]" (identifier "param_1") ([ "[") (number_literal "0xfb") (] "]")) (= "=") (number_literal "0xc")) (; ";")) (} "}")))) (labeled_statement "LAB_0004fd88:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570);" (statement_identifier "LAB_0004fd88") (: ":") (expression_statement "param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570);" (assignment_expression "param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570)" (subscript_expression "param_1[0xf0]" (identifier "param_1") ([ "[") (number_literal "0xf0") (] "]")) (= "=") (call_expression "(uint)(PTR_LAB_000b8640 + -0x2570)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(PTR_LAB_000b8640 + -0x2570)" (( "(") (binary_expression "PTR_LAB_000b8640 + -0x2570" (identifier "PTR_LAB_000b8640") (+ "+") (number_literal "-0x2570")) () ")")))) (; ";"))) (expression_statement "param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x15f0);" (assignment_expression "param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x15f0)" (subscript_expression "param_1[0xf1]" (identifier "param_1") ([ "[") (number_literal "0xf1") (] "]")) (= "=") (call_expression "(uint)(PTR_LAB_000b8640 + -0x15f0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(PTR_LAB_000b8640 + -0x15f0)" (( "(") (binary_expression "PTR_LAB_000b8640 + -0x15f0" (identifier "PTR_LAB_000b8640") (+ "+") (number_literal "-0x15f0")) () ")")))) (; ";")) (expression_statement "uVar10 = 4;" (assignment_expression "uVar10 = 4" (identifier "uVar10") (= "=") (number_literal "4")) (; ";")) (goto_statement "goto LAB_0004fe48;" (goto "goto") (statement_identifier "LAB_0004fe48") (; ";")) (} "}"))) (if_statement "if (param_2 == 0x18) {\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 6;\n      param_1[0xfb] = 0xc;\n      uVar5 = 4;\n      uVar9 = 0xc;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fea8:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x1270);\n    uVar10 = 6;\n  }\n  else {\n    if (param_2 != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }\n    else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40);\n    uVar10 = 8;\n  }" (if "if") (parenthesized_expression "(param_2 == 0x18)" (( "(") (binary_expression "param_2 == 0x18" (identifier "param_2") (== "==") (number_literal "0x18")) () ")")) (compound_statement "{\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 6;\n      param_1[0xfb] = 0xc;\n      uVar5 = 4;\n      uVar9 = 0xc;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }\nLAB_0004fea8:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x1270);\n    uVar10 = 6;\n  }" ({ "{") (if_statement "if (param_4 == 0x10) {\n      param_1[0xfa] = 6;\n      param_1[0xfb] = 0xc;\n      uVar5 = 4;\n      uVar9 = 0xc;\n    }\n    else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }" (if "if") (parenthesized_expression "(param_4 == 0x10)" (( "(") (binary_expression "param_4 == 0x10" (identifier "param_4") (== "==") (number_literal "0x10")) () ")")) (compound_statement "{\n      param_1[0xfa] = 6;\n      param_1[0xfb] = 0xc;\n      uVar5 = 4;\n      uVar9 = 0xc;\n    }" ({ "{") (expression_statement "param_1[0xfa] = 6;" (assignment_expression "param_1[0xfa] = 6" (subscript_expression "param_1[0xfa]" (identifier "param_1") ([ "[") (number_literal "0xfa") (] "]")) (= "=") (number_literal "6")) (; ";")) (expression_statement "param_1[0xfb] = 0xc;" (assignment_expression "param_1[0xfb] = 0xc" (subscript_expression "param_1[0xfb]" (identifier "param_1") ([ "[") (number_literal "0xfb") (] "]")) (= "=") (number_literal "0xc")) (; ";")) (expression_statement "uVar5 = 4;" (assignment_expression "uVar5 = 4" (identifier "uVar5") (= "=") (number_literal "4")) (; ";")) (expression_statement "uVar9 = 0xc;" (assignment_expression "uVar9 = 0xc" (identifier "uVar9") (= "=") (number_literal "0xc")) (; ";")) (} "}")) (else_clause "else {\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }" (else "else") (compound_statement "{\n      if (param_4 != 0x18) goto LAB_0004fdb4;\n      uVar5 = 6;\n      param_1[0xfa] = 6;\n      uVar9 = 0xc;\n      param_1[0xfb] = 0xc;\n    }" ({ "{") (if_statement "if (param_4 != 0x18) goto LAB_0004fdb4;" (if "if") (parenthesized_expression "(param_4 != 0x18)" (( "(") (binary_expression "param_4 != 0x18" (identifier "param_4") (!= "!=") (number_literal "0x18")) () ")")) (goto_statement "goto LAB_0004fdb4;" (goto "goto") (statement_identifier "LAB_0004fdb4") (; ";"))) (expression_statement "uVar5 = 6;" (assignment_expression "uVar5 = 6" (identifier "uVar5") (= "=") (number_literal "6")) (; ";")) (expression_statement "param_1[0xfa] = 6;" (assignment_expression "param_1[0xfa] = 6" (subscript_expression "param_1[0xfa]" (identifier "param_1") ([ "[") (number_literal "0xfa") (] "]")) (= "=") (number_literal "6")) (; ";")) (expression_statement "uVar9 = 0xc;" (assignment_expression "uVar9 = 0xc" (identifier "uVar9") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "param_1[0xfb] = 0xc;" (assignment_expression "param_1[0xfb] = 0xc" (subscript_expression "param_1[0xfb]" (identifier "param_1") ([ "[") (number_literal "0xfb") (] "]")) (= "=") (number_literal "0xc")) (; ";")) (} "}")))) (labeled_statement "LAB_0004fea8:\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0);" (statement_identifier "LAB_0004fea8") (: ":") (expression_statement "param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0);" (assignment_expression "param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0)" (subscript_expression "param_1[0xf0]" (identifier "param_1") ([ "[") (number_literal "0xf0") (] "]")) (= "=") (call_expression "(uint)(PTR_LAB_000b8640 + -0x21f0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(PTR_LAB_000b8640 + -0x21f0)" (( "(") (binary_expression "PTR_LAB_000b8640 + -0x21f0" (identifier "PTR_LAB_000b8640") (+ "+") (number_literal "-0x21f0")) () ")")))) (; ";"))) (expression_statement "param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x1270);" (assignment_expression "param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x1270)" (subscript_expression "param_1[0xf1]" (identifier "param_1") ([ "[") (number_literal "0xf1") (] "]")) (= "=") (call_expression "(uint)(PTR_LAB_000b8640 + -0x1270)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(PTR_LAB_000b8640 + -0x1270)" (( "(") (binary_expression "PTR_LAB_000b8640 + -0x1270" (identifier "PTR_LAB_000b8640") (+ "+") (number_literal "-0x1270")) () ")")))) (; ";")) (expression_statement "uVar10 = 6;" (assignment_expression "uVar10 = 6" (identifier "uVar10") (= "=") (number_literal "6")) (; ";")) (} "}")) (else_clause "else {\n    if (param_2 != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }\n    else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40);\n    uVar10 = 8;\n  }" (else "else") (compound_statement "{\n    if (param_2 != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }\n    if (param_4 == 0x10) {\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }\n    else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }\n    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0);\n    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40);\n    uVar10 = 8;\n  }" ({ "{") (if_statement "if (param_2 != 0x20) {\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }" (if "if") (parenthesized_expression "(param_2 != 0x20)" (( "(") (binary_expression "param_2 != 0x20" (identifier "param_2") (!= "!=") (number_literal "0x20")) () ")")) (compound_statement "{\n      (*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);\n      return;\n    }" ({ "{") (expression_statement "(*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14);" (call_expression "(*(code *)PTR___assert_fail_000b8b18)\n                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14)" (parenthesized_expression "(*(code *)PTR___assert_fail_000b8b18)" (( "(") (pointer_expression "*(code *)PTR___assert_fail_000b8b18" (* "*") (cast_expression "(code *)PTR___assert_fail_000b8b18" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___assert_fail_000b8b18"))) () ")")) (argument_list "(PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,\n                 PTR_DAT_000b8348 + -0x3c14)" (( "(") (binary_expression "PTR_DAT_000b8348 + -0x3d74" (identifier "PTR_DAT_000b8348") (+ "+") (number_literal "-0x3d74")) (, ",") (binary_expression "PTR_DAT_000b8348 + -0x3d80" (identifier "PTR_DAT_000b8348") (+ "+") (number_literal "-0x3d80")) (, ",") (number_literal "0x3a6") (, ",") (binary_expression "PTR_DAT_000b8348 + -0x3c14" (identifier "PTR_DAT_000b8348") (+ "+") (number_literal "-0x3c14")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (param_4 == 0x10) {\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }\n    else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }" (if "if") (parenthesized_expression "(param_4 == 0x10)" (( "(") (binary_expression "param_4 == 0x10" (identifier "param_4") (== "==") (number_literal "0x10")) () ")")) (compound_statement "{\n      param_1[0xfa] = 8;\n      param_1[0xfb] = 0xe;\n      uVar5 = 4;\n      uVar9 = 0xe;\n    }" ({ "{") (expression_statement "param_1[0xfa] = 8;" (assignment_expression "param_1[0xfa] = 8" (subscript_expression "param_1[0xfa]" (identifier "param_1") ([ "[") (number_literal "0xfa") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "param_1[0xfb] = 0xe;" (assignment_expression "param_1[0xfb] = 0xe" (subscript_expression "param_1[0xfb]" (identifier "param_1") ([ "[") (number_literal "0xfb") (] "]")) (= "=") (number_literal "0xe")) (; ";")) (expression_statement "uVar5 = 4;" (assignment_expression "uVar5 = 4" (identifier "uVar5") (= "=") (number_literal "4")) (; ";")) (expression_statement "uVar9 = 0xe;" (assignment_expression "uVar9 = 0xe" (identifier "uVar9") (= "=") (number_literal "0xe")) (; ";")) (} "}")) (else_clause "else if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }" (else "else") (if_statement "if (param_4 == 0x18) {\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }\n    else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }" (if "if") (parenthesized_expression "(param_4 == 0x18)" (( "(") (binary_expression "param_4 == 0x18" (identifier "param_4") (== "==") (number_literal "0x18")) () ")")) (compound_statement "{\n      uVar5 = 6;\n      param_1[0xfa] = 8;\n      uVar9 = 0xe;\n      param_1[0xfb] = 0xe;\n    }" ({ "{") (expression_statement "uVar5 = 6;" (assignment_expression "uVar5 = 6" (identifier "uVar5") (= "=") (number_literal "6")) (; ";")) (expression_statement "param_1[0xfa] = 8;" (assignment_expression "param_1[0xfa] = 8" (subscript_expression "param_1[0xfa]" (identifier "param_1") ([ "[") (number_literal "0xfa") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "uVar9 = 0xe;" (assignment_expression "uVar9 = 0xe" (identifier "uVar9") (= "=") (number_literal "0xe")) (; ";")) (expression_statement "param_1[0xfb] = 0xe;" (assignment_expression "param_1[0xfb] = 0xe" (subscript_expression "param_1[0xfb]" (identifier "param_1") ([ "[") (number_literal "0xfb") (] "]")) (= "=") (number_literal "0xe")) (; ";")) (} "}")) (else_clause "else {\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }" (else "else") (compound_statement "{\nLAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }\n      uVar5 = 8;\n      if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }\n      uVar10 = param_2 >> 2;\n      param_1[0xfa] = uVar10;\n      uVar9 = uVar5;\n      if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }\n      uVar9 = uVar9 + 6;\n      param_1[0xfb] = uVar9;\n      if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }\n    }" ({ "{") (labeled_statement "LAB_0004fdb4:\n      if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }" (statement_identifier "LAB_0004fdb4") (: ":") (if_statement "if (param_4 != 0x20) {\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }" (if "if") (parenthesized_expression "(param_4 != 0x20)" (( "(") (binary_expression "param_4 != 0x20" (identifier "param_4") (!= "!=") (number_literal "0x20")) () ")")) (compound_statement "{\n        (*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);\n        return;\n      }" ({ "{") (expression_statement "(*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14);" (call_expression "(*(code *)PTR___assert_fail_000b8b18)\n                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14)" (parenthesized_expression "(*(code *)PTR___assert_fail_000b8b18)" (( "(") (pointer_expression "*(code *)PTR___assert_fail_000b8b18" (* "*") (cast_expression "(code *)PTR___assert_fail_000b8b18" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___assert_fail_000b8b18"))) () ")")) (argument_list "(PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,\n                   PTR_DAT_000b8348 + -0x3c14)" (( "(") (binary_expression "PTR_DAT_000b8348 + -0x3d40" (identifier "PTR_DAT_000b8348") (+ "+") (number_literal "-0x3d40")) (, ",") (binary_expression "PTR_DAT_000b8348 + -0x3d80" (identifier "PTR_DAT_000b8348") (+ "+") (number_literal "-0x3d80")) (, ",") (number_literal "0x3a7") (, ",") (binary_expression "PTR_DAT_000b8348 + -0x3c14" (identifier "PTR_DAT_000b8348") (+ "+") (number_literal "-0x3c14")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))) (expression_statement "uVar5 = 8;" (assignment_expression "uVar5 = 8" (identifier "uVar5") (= "=") (number_literal "8")) (; ";")) (if_statement "if (param_2 < 0) {\n        param_2 = param_2 + 3;\n      }" (if "if") (parenthesized_expression "(param_2 < 0)" (( "(") (binary_expression "param_2 < 0" (identifier "param_2") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        param_2 = param_2 + 3;\n      }" ({ "{") (expression_statement "param_2 = param_2 + 3;" (assignment_expression "param_2 = param_2 + 3" (identifier "param_2") (= "=") (binary_expression "param_2 + 3" (identifier "param_2") (+ "+") (number_literal "3"))) (; ";")) (} "}"))) (expression_statement "uVar10 = param_2 >> 2;" (assignment_expression "uVar10 = param_2 >> 2" (identifier "uVar10") (= "=") (binary_expression "param_2 >> 2" (identifier "param_2") (>> ">>") (number_literal "2"))) (; ";")) (expression_statement "param_1[0xfa] = uVar10;" (assignment_expression "param_1[0xfa] = uVar10" (subscript_expression "param_1[0xfa]" (identifier "param_1") ([ "[") (number_literal "0xfa") (] "]")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "uVar9 = uVar5;" (assignment_expression "uVar9 = uVar5" (identifier "uVar9") (= "=") (identifier "uVar5")) (; ";")) (if_statement "if (7 < (int)uVar10) {\n        uVar9 = uVar10;\n      }" (if "if") (parenthesized_expression "(7 < (int)uVar10)" (( "(") (binary_expression "7 < (int)uVar10" (number_literal "7") (< "<") (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10"))) () ")")) (compound_statement "{\n        uVar9 = uVar10;\n      }" ({ "{") (expression_statement "uVar9 = uVar10;" (assignment_expression "uVar9 = uVar10" (identifier "uVar9") (= "=") (identifier "uVar10")) (; ";")) (} "}"))) (expression_statement "uVar9 = uVar9 + 6;" (assignment_expression "uVar9 = uVar9 + 6" (identifier "uVar9") (= "=") (binary_expression "uVar9 + 6" (identifier "uVar9") (+ "+") (number_literal "6"))) (; ";")) (expression_statement "param_1[0xfb] = uVar9;" (assignment_expression "param_1[0xfb] = uVar9" (subscript_expression "param_1[0xfb]" (identifier "param_1") ([ "[") (number_literal "0xfb") (] "]")) (= "=") (identifier "uVar9")) (; ";")) (if_statement "if (uVar10 != 8) {\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }" (if "if") (parenthesized_expression "(uVar10 != 8)" (( "(") (binary_expression "uVar10 != 8" (identifier "uVar10") (!= "!=") (number_literal "8")) () ")")) (compound_statement "{\n        if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }\n        goto LAB_0004fea8;\n      }" ({ "{") (if_statement "if (uVar10 != 6) {\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }" (if "if") (parenthesized_expression "(uVar10 != 6)" (( "(") (binary_expression "uVar10 != 6" (identifier "uVar10") (!= "!=") (number_literal "6")) () ")")) (compound_statement "{\n          if (uVar10 != 4) goto LAB_0004fe48;\n          goto LAB_0004fd88;\n        }" ({ "{") (if_statement "if (uVar10 != 4) goto LAB_0004fe48;" (if "if") (parenthesized_expression "(uVar10 != 4)" (( "(") (binary_expression "uVar10 != 4" (identifier "uVar10") (!= "!=") (number_literal "4")) () ")")) (goto_statement "goto LAB_0004fe48;" (goto "goto") (statement_identifier "LAB_0004fe48") (; ";"))) (goto_statement "goto LAB_0004fd88;" (goto "goto") (statement_identifier "LAB_0004fd88") (; ";")) (} "}"))) (goto_statement "goto LAB_0004fea8;" (goto "goto") (statement_identifier "LAB_0004fea8") (; ";")) (} "}"))) (} "}")))))) (expression_statement "param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0);" (assignment_expression "param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0)" (subscript_expression "param_1[0xf0]" (identifier "param_1") ([ "[") (number_literal "0xf0") (] "]")) (= "=") (call_expression "(uint)(PTR_LAB_000b8640 + -0x1cc0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(PTR_LAB_000b8640 + -0x1cc0)" (( "(") (binary_expression "PTR_LAB_000b8640 + -0x1cc0" (identifier "PTR_LAB_000b8640") (+ "+") (number_literal "-0x1cc0")) () ")")))) (; ";")) (expression_statement "param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40);" (assignment_expression "param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40)" (subscript_expression "param_1[0xf1]" (identifier "param_1") ([ "[") (number_literal "0xf1") (] "]")) (= "=") (call_expression "(uint)(PTR_LAB_000b8640 + -0xd40)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(PTR_LAB_000b8640 + -0xd40)" (( "(") (binary_expression "PTR_LAB_000b8640 + -0xd40" (identifier "PTR_LAB_000b8640") (+ "+") (number_literal "-0xd40")) () ")")))) (; ";")) (expression_statement "uVar10 = 8;" (assignment_expression "uVar10 = 8" (identifier "uVar10") (= "=") (number_literal "8")) (; ";")) (} "}")))) (labeled_statement "LAB_0004fe48:\n  puVar1 = PTR_DAT_000b8348;" (statement_identifier "LAB_0004fe48") (: ":") (expression_statement "puVar1 = PTR_DAT_000b8348;" (assignment_expression "puVar1 = PTR_DAT_000b8348" (identifier "puVar1") (= "=") (identifier "PTR_DAT_000b8348")) (; ";"))) (if_statement "if (0 < (int)((uVar9 + 1) * uVar10)) {\n    uVar9 = param_1[0xfb];\n    uVar10 = param_1[0xfa];\n    uVar8 = 1;\n    iVar2 = 0;\n    puVar4 = param_1;\n    do {\n      if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      param_3 = param_3 + 4;\n      puVar4 = puVar4 + 1;\n    } while (iVar2 < (int)((uVar9 + 1) * uVar10));\n  }" (if "if") (parenthesized_expression "(0 < (int)((uVar9 + 1) * uVar10))" (( "(") (binary_expression "0 < (int)((uVar9 + 1) * uVar10)" (number_literal "0") (< "<") (cast_expression "(int)((uVar9 + 1) * uVar10)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uVar9 + 1) * uVar10)" (( "(") (binary_expression "(uVar9 + 1) * uVar10" (parenthesized_expression "(uVar9 + 1)" (( "(") (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1")) () ")")) (* "*") (identifier "uVar10")) () ")")))) () ")")) (compound_statement "{\n    uVar9 = param_1[0xfb];\n    uVar10 = param_1[0xfa];\n    uVar8 = 1;\n    iVar2 = 0;\n    puVar4 = param_1;\n    do {\n      if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      param_3 = param_3 + 4;\n      puVar4 = puVar4 + 1;\n    } while (iVar2 < (int)((uVar9 + 1) * uVar10));\n  }" ({ "{") (expression_statement "uVar9 = param_1[0xfb];" (assignment_expression "uVar9 = param_1[0xfb]" (identifier "uVar9") (= "=") (subscript_expression "param_1[0xfb]" (identifier "param_1") ([ "[") (number_literal "0xfb") (] "]"))) (; ";")) (expression_statement "uVar10 = param_1[0xfa];" (assignment_expression "uVar10 = param_1[0xfa]" (identifier "uVar10") (= "=") (subscript_expression "param_1[0xfa]" (identifier "param_1") ([ "[") (number_literal "0xfa") (] "]"))) (; ";")) (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" (identifier "uVar8") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4 = param_1;" (assignment_expression "puVar4 = param_1" (identifier "puVar4") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n      if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      param_3 = param_3 + 4;\n      puVar4 = puVar4 + 1;\n    } while (iVar2 < (int)((uVar9 + 1) * uVar10));" (do "do") (compound_statement "{\n      if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }\n      iVar2 = iVar2 + 1;\n      param_3 = param_3 + 4;\n      puVar4 = puVar4 + 1;\n    }" ({ "{") (if_statement "if (iVar2 < (int)uVar5) {\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }\n      else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }" (if "if") (parenthesized_expression "(iVar2 < (int)uVar5)" (( "(") (binary_expression "iVar2 < (int)uVar5" (identifier "iVar2") (< "<") (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5"))) () ")")) (compound_statement "{\n        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;\n      }" ({ "{") (expression_statement "*puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8;" (assignment_expression "*puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (binary_expression "(uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |\n                  (uint)param_3[2] << 8" (binary_expression "(uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3]" (binary_expression "(uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10" (binary_expression "(uint)*param_3 << 0x18" (binary_expression "(uint)*param_3" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "param_3")) (<< "<<") (number_literal "0x18")) (| "|") (binary_expression "(uint)param_3[1] << 0x10" (cast_expression "(uint)param_3[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (<< "<<") (number_literal "0x10"))) (| "|") (cast_expression "(uint)param_3[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]")))) (| "|") (binary_expression "(uint)param_3[2] << 8" (cast_expression "(uint)param_3[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))) (<< "<<") (number_literal "8")))) (; ";")) (} "}")) (else_clause "else {\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }" (else "else") (compound_statement "{\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar3 = puVar4[-1];\n        if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }\n        *puVar4 = puVar4[-uVar5] ^ uVar3;\n      }" ({ "{") (if_statement "if (uVar5 == 0) {\n          trap(7);\n        }" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          trap(7);\n        }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar3 = puVar4[-1];" (assignment_expression "uVar3 = puVar4[-1]" (identifier "uVar3") (= "=") (subscript_expression "puVar4[-1]" (identifier "puVar4") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (if_statement "if (iVar2 % (int)uVar5 == 0) {\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }\n        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }" (if "if") (parenthesized_expression "(iVar2 % (int)uVar5 == 0)" (( "(") (binary_expression "iVar2 % (int)uVar5 == 0" (binary_expression "iVar2 % (int)uVar5" (identifier "iVar2") (% "%") (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5"))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];\n          uVar6 = uVar8 & 0x80;\n          if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }\n          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;\n        }" ({ "{") (expression_statement "uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];" (assignment_expression "uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08]" (identifier "uVar3") (= "=") (binary_expression "((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08]" (binary_expression "((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8" (parenthesized_expression "((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08])" (( "(") (binary_expression "(((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |\n                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]" (binary_expression "(((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8" (parenthesized_expression "(((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08])" (( "(") (binary_expression "((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |\n                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]" (binary_expression "((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8" (parenthesized_expression "((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8)" (( "(") (binary_expression "(byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8" (cast_expression "(byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]" (identifier "puVar1") ([ "[") (binary_expression "((uVar3 << 8) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar3 << 8) >> 0x18)" (( "(") (binary_expression "(uVar3 << 8) >> 0x18" (parenthesized_expression "(uVar3 << 8)" (( "(") (binary_expression "uVar3 << 8" (identifier "uVar3") (<< "<<") (number_literal "8")) () ")")) (>> ">>") (number_literal "0x18")) () ")")) (- "-") (number_literal "0x1b08")) (] "]"))) (^ "^") (identifier "uVar8")) () ")")) (<< "<<") (number_literal "8")) (| "|") (cast_expression "(uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]" (identifier "puVar1") ([ "[") (binary_expression "((uVar3 << 0x10) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar3 << 0x10) >> 0x18)" (( "(") (binary_expression "(uVar3 << 0x10) >> 0x18" (parenthesized_expression "(uVar3 << 0x10)" (( "(") (binary_expression "uVar3 << 0x10" (identifier "uVar3") (<< "<<") (number_literal "0x10")) () ")")) (>> ">>") (number_literal "0x18")) () ")")) (- "-") (number_literal "0x1b08")) (] "]"))))) () ")")) (<< "<<") (number_literal "8")) (| "|") (cast_expression "(uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)puVar1[(uVar3 & 0xff) - 0x1b08]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar1[(uVar3 & 0xff) - 0x1b08]" (identifier "puVar1") ([ "[") (binary_expression "(uVar3 & 0xff) - 0x1b08" (parenthesized_expression "(uVar3 & 0xff)" (( "(") (binary_expression "uVar3 & 0xff" (identifier "uVar3") (& "&") (number_literal "0xff")) () ")")) (- "-") (number_literal "0x1b08")) (] "]"))))) () ")")) (<< "<<") (number_literal "8")) (| "|") (cast_expression "(uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)puVar1[(uVar3 >> 0x18) - 0x1b08]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar1[(uVar3 >> 0x18) - 0x1b08]" (identifier "puVar1") ([ "[") (binary_expression "(uVar3 >> 0x18) - 0x1b08" (parenthesized_expression "(uVar3 >> 0x18)" (( "(") (binary_expression "uVar3 >> 0x18" (identifier "uVar3") (>> ">>") (number_literal "0x18")) () ")")) (- "-") (number_literal "0x1b08")) (] "]")))))) (; ";")) (expression_statement "uVar6 = uVar8 & 0x80;" (assignment_expression "uVar6 = uVar8 & 0x80" (identifier "uVar6") (= "=") (binary_expression "uVar8 & 0x80" (identifier "uVar8") (& "&") (number_literal "0x80"))) (; ";")) (if_statement "if (uVar6 != 0) {\n            uVar6 = 0x1b;\n          }" (if "if") (parenthesized_expression "(uVar6 != 0)" (( "(") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            uVar6 = 0x1b;\n          }" ({ "{") (expression_statement "uVar6 = 0x1b;" (assignment_expression "uVar6 = 0x1b" (identifier "uVar6") (= "=") (number_literal "0x1b")) (; ";")) (} "}"))) (expression_statement "uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;" (assignment_expression "uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6" (identifier "uVar8") (= "=") (binary_expression "(uVar8 & 0x7f) << 1 ^ uVar6" (binary_expression "(uVar8 & 0x7f) << 1" (parenthesized_expression "(uVar8 & 0x7f)" (( "(") (binary_expression "uVar8 & 0x7f" (identifier "uVar8") (& "&") (number_literal "0x7f")) () ")")) (<< "<<") (number_literal "1")) (^ "^") (identifier "uVar6"))) (; ";")) (} "}")) (else_clause "else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }" (else "else") (if_statement "if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }" (if "if") (parenthesized_expression "((iVar2 % (int)uVar5 == 4) && (0x1b < param_4))" (( "(") (binary_expression "(iVar2 % (int)uVar5 == 4) && (0x1b < param_4)" (parenthesized_expression "(iVar2 % (int)uVar5 == 4)" (( "(") (binary_expression "iVar2 % (int)uVar5 == 4" (binary_expression "iVar2 % (int)uVar5" (identifier "iVar2") (% "%") (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5"))) (== "==") (number_literal "4")) () ")")) (&& "&&") (parenthesized_expression "(0x1b < param_4)" (( "(") (binary_expression "0x1b < param_4" (number_literal "0x1b") (< "<") (identifier "param_4")) () ")"))) () ")")) (compound_statement "{\n          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);\n        }" ({ "{") (expression_statement "uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08]);" (assignment_expression "uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08])" (identifier "uVar3") (= "=") (call_expression "CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08])" (identifier "CONCAT31") (argument_list "(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),\n                           puVar1[(uVar3 & 0xff) - 0x1b08])" (( "(") (call_expression "CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08])" (identifier "CONCAT21") (argument_list "(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),\n                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08])" (( "(") (call_expression "CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08])" (identifier "CONCAT11") (argument_list "(puVar1[(uVar3 >> 0x18) - 0x1b08],\n                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08])" (( "(") (subscript_expression "puVar1[(uVar3 >> 0x18) - 0x1b08]" (identifier "puVar1") ([ "[") (binary_expression "(uVar3 >> 0x18) - 0x1b08" (parenthesized_expression "(uVar3 >> 0x18)" (( "(") (binary_expression "uVar3 >> 0x18" (identifier "uVar3") (>> ">>") (number_literal "0x18")) () ")")) (- "-") (number_literal "0x1b08")) (] "]")) (, ",") (subscript_expression "puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]" (identifier "puVar1") ([ "[") (binary_expression "((uVar3 << 8) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar3 << 8) >> 0x18)" (( "(") (binary_expression "(uVar3 << 8) >> 0x18" (parenthesized_expression "(uVar3 << 8)" (( "(") (binary_expression "uVar3 << 8" (identifier "uVar3") (<< "<<") (number_literal "8")) () ")")) (>> ">>") (number_literal "0x18")) () ")")) (- "-") (number_literal "0x1b08")) (] "]")) () ")"))) (, ",") (subscript_expression "puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]" (identifier "puVar1") ([ "[") (binary_expression "((uVar3 << 0x10) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar3 << 0x10) >> 0x18)" (( "(") (binary_expression "(uVar3 << 0x10) >> 0x18" (parenthesized_expression "(uVar3 << 0x10)" (( "(") (binary_expression "uVar3 << 0x10" (identifier "uVar3") (<< "<<") (number_literal "0x10")) () ")")) (>> ">>") (number_literal "0x18")) () ")")) (- "-") (number_literal "0x1b08")) (] "]")) () ")"))) (, ",") (subscript_expression "puVar1[(uVar3 & 0xff) - 0x1b08]" (identifier "puVar1") ([ "[") (binary_expression "(uVar3 & 0xff) - 0x1b08" (parenthesized_expression "(uVar3 & 0xff)" (( "(") (binary_expression "uVar3 & 0xff" (identifier "uVar3") (& "&") (number_literal "0xff")) () ")")) (- "-") (number_literal "0x1b08")) (] "]")) () ")")))) (; ";")) (} "}"))))) (expression_statement "*puVar4 = puVar4[-uVar5] ^ uVar3;" (assignment_expression "*puVar4 = puVar4[-uVar5] ^ uVar3" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (binary_expression "puVar4[-uVar5] ^ uVar3" (subscript_expression "puVar4[-uVar5]" (identifier "puVar4") ([ "[") (unary_expression "-uVar5" (- "-") (identifier "uVar5")) (] "]")) (^ "^") (identifier "uVar3"))) (; ";")) (} "}")))) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" (identifier "iVar2") (= "=") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_3 = param_3 + 4;" (assignment_expression "param_3 = param_3 + 4" (identifier "param_3") (= "=") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar2 < (int)((uVar9 + 1) * uVar10))" (( "(") (binary_expression "iVar2 < (int)((uVar9 + 1) * uVar10)" (identifier "iVar2") (< "<") (cast_expression "(int)((uVar9 + 1) * uVar10)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uVar9 + 1) * uVar10)" (( "(") (binary_expression "(uVar9 + 1) * uVar10" (parenthesized_expression "(uVar9 + 1)" (( "(") (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1")) () ")")) (* "*") (identifier "uVar10")) () ")")))) () ")")) (; ";")) (} "}"))) (expression_statement "puVar1 = PTR_DAT_000b8348;" (assignment_expression "puVar1 = PTR_DAT_000b8348" (identifier "puVar1") (= "=") (identifier "PTR_DAT_000b8348")) (; ";")) (if_statement "if (-1 < (int)uVar9) {\n    param_1 = param_1 + uVar10;\n    iVar2 = uVar10 * uVar9 * 4;\n    iVar7 = 0;\n    uVar5 = 0;\n    do {\n      puVar4 = param_1 + -uVar10;\n      if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }\n      uVar5 = uVar5 + 1;\n      param_1 = param_1 + uVar10;\n      iVar7 = iVar7 + uVar10 * -4;\n      iVar2 = iVar2 + uVar10 * -4;\n    } while (uVar5 != uVar9 + 1);\n  }" (if "if") (parenthesized_expression "(-1 < (int)uVar9)" (( "(") (binary_expression "-1 < (int)uVar9" (number_literal "-1") (< "<") (cast_expression "(int)uVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar9"))) () ")")) (compound_statement "{\n    param_1 = param_1 + uVar10;\n    iVar2 = uVar10 * uVar9 * 4;\n    iVar7 = 0;\n    uVar5 = 0;\n    do {\n      puVar4 = param_1 + -uVar10;\n      if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }\n      uVar5 = uVar5 + 1;\n      param_1 = param_1 + uVar10;\n      iVar7 = iVar7 + uVar10 * -4;\n      iVar2 = iVar2 + uVar10 * -4;\n    } while (uVar5 != uVar9 + 1);\n  }" ({ "{") (expression_statement "param_1 = param_1 + uVar10;" (assignment_expression "param_1 = param_1 + uVar10" (identifier "param_1") (= "=") (binary_expression "param_1 + uVar10" (identifier "param_1") (+ "+") (identifier "uVar10"))) (; ";")) (expression_statement "iVar2 = uVar10 * uVar9 * 4;" (assignment_expression "iVar2 = uVar10 * uVar9 * 4" (identifier "iVar2") (= "=") (binary_expression "uVar10 * uVar9 * 4" (binary_expression "uVar10 * uVar9" (identifier "uVar10") (* "*") (identifier "uVar9")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" (identifier "uVar5") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      puVar4 = param_1 + -uVar10;\n      if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }\n      uVar5 = uVar5 + 1;\n      param_1 = param_1 + uVar10;\n      iVar7 = iVar7 + uVar10 * -4;\n      iVar2 = iVar2 + uVar10 * -4;\n    } while (uVar5 != uVar9 + 1);" (do "do") (compound_statement "{\n      puVar4 = param_1 + -uVar10;\n      if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }\n      uVar5 = uVar5 + 1;\n      param_1 = param_1 + uVar10;\n      iVar7 = iVar7 + uVar10 * -4;\n      iVar2 = iVar2 + uVar10 * -4;\n    }" ({ "{") (expression_statement "puVar4 = param_1 + -uVar10;" (assignment_expression "puVar4 = param_1 + -uVar10" (identifier "puVar4") (= "=") (binary_expression "param_1 + -uVar10" (identifier "param_1") (+ "+") (unary_expression "-uVar10" (- "-") (identifier "uVar10")))) (; ";")) (if_statement "if (0 < (int)uVar10) {\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }" (if "if") (parenthesized_expression "(0 < (int)uVar10)" (( "(") (binary_expression "0 < (int)uVar10" (number_literal "0") (< "<") (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10"))) () ")")) (compound_statement "{\n        do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);\n      }" ({ "{") (do_statement "do {\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        } while (puVar4 != param_1);" (do "do") (compound_statement "{\n          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);\n          if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }\n          puVar4[0x78] = uVar8;\n          puVar4 = puVar4 + 1;\n        }" ({ "{") (expression_statement "uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);" (assignment_expression "uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7)" (identifier "uVar8") (= "=") (pointer_expression "*(uint *)((int)puVar4 + iVar2 + iVar7)" (* "*") (cast_expression "(uint *)((int)puVar4 + iVar2 + iVar7)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar4 + iVar2 + iVar7)" (( "(") (binary_expression "(int)puVar4 + iVar2 + iVar7" (binary_expression "(int)puVar4 + iVar2" (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4")) (+ "+") (identifier "iVar2")) (+ "+") (identifier "iVar7")) () ")"))))) (; ";")) (if_statement "if ((uVar5 != 0) && (uVar9 != uVar5)) {\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }" (if "if") (parenthesized_expression "((uVar5 != 0) && (uVar9 != uVar5))" (( "(") (binary_expression "(uVar5 != 0) && (uVar9 != uVar5)" (parenthesized_expression "(uVar5 != 0)" (( "(") (binary_expression "uVar5 != 0" (identifier "uVar5") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar9 != uVar5)" (( "(") (binary_expression "uVar9 != uVar5" (identifier "uVar9") (!= "!=") (identifier "uVar5")) () ")"))) () ")")) (compound_statement "{\n            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);\n          }" ({ "{") (expression_statement "uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808);" (assignment_expression "uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808)" (identifier "uVar8") (= "=") (binary_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808)" (binary_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408)" (binary_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^\n                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008)" (pointer_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08)" (* "*") (cast_expression "(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08)" (( "(") (binary_expression "puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08" (binary_expression "puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4" (identifier "puVar1") (+ "+") (binary_expression "(uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4" (cast_expression "(uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)puVar1[(uVar8 & 0xff) - 0x1b08]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar1[(uVar8 & 0xff) - 0x1b08]" (identifier "puVar1") ([ "[") (binary_expression "(uVar8 & 0xff) - 0x1b08" (parenthesized_expression "(uVar8 & 0xff)" (( "(") (binary_expression "uVar8 & 0xff" (identifier "uVar8") (& "&") (number_literal "0xff")) () ")")) (- "-") (number_literal "0x1b08")) (] "]")))) (* "*") (number_literal "4"))) (+ "+") (number_literal "-0x3c08")) () ")")))) (^ "^") (pointer_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008)" (* "*") (cast_expression "(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008)" (( "(") (binary_expression "puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008" (binary_expression "puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4" (identifier "puVar1") (+ "+") (binary_expression "(uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4" (cast_expression "(uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)puVar1[(uVar8 >> 0x18) - 0x1b08]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar1[(uVar8 >> 0x18) - 0x1b08]" (identifier "puVar1") ([ "[") (binary_expression "(uVar8 >> 0x18) - 0x1b08" (parenthesized_expression "(uVar8 >> 0x18)" (( "(") (binary_expression "uVar8 >> 0x18" (identifier "uVar8") (>> ">>") (number_literal "0x18")) () ")")) (- "-") (number_literal "0x1b08")) (] "]")))) (* "*") (number_literal "4"))) (+ "+") (number_literal "-0x3008")) () ")"))))) (^ "^") (pointer_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408)" (* "*") (cast_expression "(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408)" (( "(") (binary_expression "puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3408" (binary_expression "puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4" (identifier "puVar1") (+ "+") (binary_expression "(uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4" (cast_expression "(uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar1[((uVar8 << 8) >> 0x18) - 0x1b08]" (identifier "puVar1") ([ "[") (binary_expression "((uVar8 << 8) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar8 << 8) >> 0x18)" (( "(") (binary_expression "(uVar8 << 8) >> 0x18" (parenthesized_expression "(uVar8 << 8)" (( "(") (binary_expression "uVar8 << 8" (identifier "uVar8") (<< "<<") (number_literal "8")) () ")")) (>> ">>") (number_literal "0x18")) () ")")) (- "-") (number_literal "0x1b08")) (] "]")))) (* "*") (number_literal "4"))) (+ "+") (number_literal "-0x3408")) () ")"))))) (^ "^") (pointer_expression "*(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808)" (* "*") (cast_expression "(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808)" (( "(") (binary_expression "puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +\n                                       -0x3808" (binary_expression "puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4" (identifier "puVar1") (+ "+") (binary_expression "(uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4" (cast_expression "(uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08]" (identifier "puVar1") ([ "[") (binary_expression "((uVar8 << 0x10) >> 0x18) - 0x1b08" (parenthesized_expression "((uVar8 << 0x10) >> 0x18)" (( "(") (binary_expression "(uVar8 << 0x10) >> 0x18" (parenthesized_expression "(uVar8 << 0x10)" (( "(") (binary_expression "uVar8 << 0x10" (identifier "uVar8") (<< "<<") (number_literal "0x10")) () ")")) (>> ">>") (number_literal "0x18")) () ")")) (- "-") (number_literal "0x1b08")) (] "]")))) (* "*") (number_literal "4"))) (+ "+") (number_literal "-0x3808")) () ")")))))) (; ";")) (} "}"))) (expression_statement "puVar4[0x78] = uVar8;" (assignment_expression "puVar4[0x78] = uVar8" (subscript_expression "puVar4[0x78]" (identifier "puVar4") ([ "[") (number_literal "0x78") (] "]")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar4 != param_1)" (( "(") (binary_expression "puVar4 != param_1" (identifier "puVar4") (!= "!=") (identifier "param_1")) () ")")) (; ";")) (} "}"))) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" (identifier "uVar5") (= "=") (binary_expression "uVar5 + 1" (identifier "uVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1 = param_1 + uVar10;" (assignment_expression "param_1 = param_1 + uVar10" (identifier "param_1") (= "=") (binary_expression "param_1 + uVar10" (identifier "param_1") (+ "+") (identifier "uVar10"))) (; ";")) (expression_statement "iVar7 = iVar7 + uVar10 * -4;" (assignment_expression "iVar7 = iVar7 + uVar10 * -4" (identifier "iVar7") (= "=") (binary_expression "iVar7 + uVar10 * -4" (identifier "iVar7") (+ "+") (binary_expression "uVar10 * -4" (identifier "uVar10") (* "*") (number_literal "-4")))) (; ";")) (expression_statement "iVar2 = iVar2 + uVar10 * -4;" (assignment_expression "iVar2 = iVar2 + uVar10 * -4" (identifier "iVar2") (= "=") (binary_expression "iVar2 + uVar10 * -4" (identifier "iVar2") (+ "+") (binary_expression "uVar10 * -4" (identifier "uVar10") (* "*") (number_literal "-4")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar5 != uVar9 + 1)" (( "(") (binary_expression "uVar5 != uVar9 + 1" (identifier "uVar5") (!= "!=") (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1"))) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))
(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: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator 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: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (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)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (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)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal))))) (return_statement))) (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: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal))))) (return_statement)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier))))))))) (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)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal))) consequence: (compound_statement (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (number_literal)))) right: (identifier))) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (number_literal))))))) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (identifier))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (call_expression function: (identifier) arguments: (argument_list (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) (subscript_expression argument: (identifier) index: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (number_literal))))) (subscript_expression argument: (identifier) index: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (number_literal))))) (subscript_expression argument: (identifier) index: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (unary_expression argument: (identifier))) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) right: (number_literal))) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) right: (number_literal))) right: (number_literal)))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (number_literal))))) right: (number_literal))) right: (number_literal)))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (number_literal))))) right: (number_literal))) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (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)))) (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: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (return_statement))))

/* WARNING: Removing unreachable block (ram,0x0004ff3c) */
/* WARNING: Removing unreachable block (ram,0x0004fb20) */
/* WARNING: Removing unreachable block (ram,0x0004ff5c) */
/* WARNING: Removing unreachable block (ram,0x0004ff64) */
/* WARNING: Removing unreachable block (ram,0x0004ff4c) */
/* WARNING: Removing unreachable block (ram,0x0004ff44) */
/* WARNING: Removing unreachable block (ram,0x0004ff54) */
/* WARNING: Removing unreachable block (ram,0x0004fac4) */

void MASKED(uint *param_1,int param_2,byte *param_3,int param_4)

{
  undefined *puVar1;
  int iVar2;
  uint uVar3;
  uint *puVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  
  if (param_2 == 0x10) {
    if (param_4 == 0x10) {
      param_1[0xfa] = 4;
      param_1[0xfb] = 10;
      uVar5 = 4;
      uVar9 = 10;
    }
    else {
      if (param_4 != 0x18) goto LAB_0004fdb4;
      uVar5 = 6;
      param_1[0xfa] = 4;
      uVar9 = 0xc;
      param_1[0xfb] = 0xc;
    }
LAB_0004fd88:
    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x2570);
    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x15f0);
    uVar10 = 4;
    goto LAB_0004fe48;
  }
  if (param_2 == 0x18) {
    if (param_4 == 0x10) {
      param_1[0xfa] = 6;
      param_1[0xfb] = 0xc;
      uVar5 = 4;
      uVar9 = 0xc;
    }
    else {
      if (param_4 != 0x18) goto LAB_0004fdb4;
      uVar5 = 6;
      param_1[0xfa] = 6;
      uVar9 = 0xc;
      param_1[0xfb] = 0xc;
    }
LAB_0004fea8:
    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x21f0);
    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0x1270);
    uVar10 = 6;
  }
  else {
    if (param_2 != 0x20) {
      (*(code *)PTR___assert_fail_000b8b18)
                (PTR_DAT_000b8348 + -0x3d74,PTR_DAT_000b8348 + -0x3d80,0x3a6,
                 PTR_DAT_000b8348 + -0x3c14);
      return;
    }
    if (param_4 == 0x10) {
      param_1[0xfa] = 8;
      param_1[0xfb] = 0xe;
      uVar5 = 4;
      uVar9 = 0xe;
    }
    else if (param_4 == 0x18) {
      uVar5 = 6;
      param_1[0xfa] = 8;
      uVar9 = 0xe;
      param_1[0xfb] = 0xe;
    }
    else {
LAB_0004fdb4:
      if (param_4 != 0x20) {
        (*(code *)PTR___assert_fail_000b8b18)
                  (PTR_DAT_000b8348 + -0x3d40,PTR_DAT_000b8348 + -0x3d80,0x3a7,
                   PTR_DAT_000b8348 + -0x3c14);
        return;
      }
      uVar5 = 8;
      if (param_2 < 0) {
        param_2 = param_2 + 3;
      }
      uVar10 = param_2 >> 2;
      param_1[0xfa] = uVar10;
      uVar9 = uVar5;
      if (7 < (int)uVar10) {
        uVar9 = uVar10;
      }
      uVar9 = uVar9 + 6;
      param_1[0xfb] = uVar9;
      if (uVar10 != 8) {
        if (uVar10 != 6) {
          if (uVar10 != 4) goto LAB_0004fe48;
          goto LAB_0004fd88;
        }
        goto LAB_0004fea8;
      }
    }
    param_1[0xf0] = (uint)(PTR_LAB_000b8640 + -0x1cc0);
    param_1[0xf1] = (uint)(PTR_LAB_000b8640 + -0xd40);
    uVar10 = 8;
  }
LAB_0004fe48:
  puVar1 = PTR_DAT_000b8348;
  if (0 < (int)((uVar9 + 1) * uVar10)) {
    uVar9 = param_1[0xfb];
    uVar10 = param_1[0xfa];
    uVar8 = 1;
    iVar2 = 0;
    puVar4 = param_1;
    do {
      if (iVar2 < (int)uVar5) {
        *puVar4 = (uint)*param_3 << 0x18 | (uint)param_3[1] << 0x10 | (uint)param_3[3] |
                  (uint)param_3[2] << 8;
      }
      else {
        if (uVar5 == 0) {
          trap(7);
        }
        uVar3 = puVar4[-1];
        if (iVar2 % (int)uVar5 == 0) {
          uVar3 = ((((byte)puVar1[((uVar3 << 8) >> 0x18) - 0x1b08] ^ uVar8) << 8 |
                   (uint)(byte)puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]) << 8 |
                  (uint)(byte)puVar1[(uVar3 & 0xff) - 0x1b08]) << 8 |
                  (uint)(byte)puVar1[(uVar3 >> 0x18) - 0x1b08];
          uVar6 = uVar8 & 0x80;
          if (uVar6 != 0) {
            uVar6 = 0x1b;
          }
          uVar8 = (uVar8 & 0x7f) << 1 ^ uVar6;
        }
        else if ((iVar2 % (int)uVar5 == 4) && (0x1b < param_4)) {
          uVar3 = CONCAT31(CONCAT21(CONCAT11(puVar1[(uVar3 >> 0x18) - 0x1b08],
                                             puVar1[((uVar3 << 8) >> 0x18) - 0x1b08]),
                                    puVar1[((uVar3 << 0x10) >> 0x18) - 0x1b08]),
                           puVar1[(uVar3 & 0xff) - 0x1b08]);
        }
        *puVar4 = puVar4[-uVar5] ^ uVar3;
      }
      iVar2 = iVar2 + 1;
      param_3 = param_3 + 4;
      puVar4 = puVar4 + 1;
    } while (iVar2 < (int)((uVar9 + 1) * uVar10));
  }
  puVar1 = PTR_DAT_000b8348;
  if (-1 < (int)uVar9) {
    param_1 = param_1 + uVar10;
    iVar2 = uVar10 * uVar9 * 4;
    iVar7 = 0;
    uVar5 = 0;
    do {
      puVar4 = param_1 + -uVar10;
      if (0 < (int)uVar10) {
        do {
          uVar8 = *(uint *)((int)puVar4 + iVar2 + iVar7);
          if ((uVar5 != 0) && (uVar9 != uVar5)) {
            uVar8 = *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 & 0xff) - 0x1b08] * 4 + -0x3c08) ^
                    *(uint *)(puVar1 + (uint)(byte)puVar1[(uVar8 >> 0x18) - 0x1b08] * 4 + -0x3008) ^
                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 8) >> 0x18) - 0x1b08] * 4 +
                                       -0x3408) ^
                    *(uint *)(puVar1 + (uint)(byte)puVar1[((uVar8 << 0x10) >> 0x18) - 0x1b08] * 4 +
                                       -0x3808);
          }
          puVar4[0x78] = uVar8;
          puVar4 = puVar4 + 1;
        } while (puVar4 != param_1);
      }
      uVar5 = uVar5 + 1;
      param_1 = param_1 + uVar10;
      iVar7 = iVar7 + uVar10 * -4;
      iVar2 = iVar2 + uVar10 * -4;
    } while (uVar5 != uVar9 + 1);
  }
  return;
}

