
void poly1305_feed_chunk(poly1305 *ctx,uchar *chunk,int len)

{
  ulonglong uVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  longlong lVar6;
  longlong lVar7;
  longlong lVar8;
  int iVar9;
  uint uVar10;
  poly1305 *ctx_00;
  bigval *r;
  undefined1 *puVar11;
  uchar *mac;
  uint uVar12;
  uint uVar13;
  bigval *pbVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  int *piVar18;
  uint uVar19;
  uint uVar20;
  int iVar21;
  undefined *puVar22;
  uint uVar23;
  code *pcVar24;
  uint uVar25;
  bigval bStack_b8;
  int iStack_a4;
  longlong lStack_a0;
  uint uStack_98;
  code *pcStack_94;
  uint uStack_78;
  uint uStack_74;
  undefined8 uStack_70;
  uint uStack_64;
  int iStack_5c;
  int iStack_54;
  uint uStack_4c;
  bigval c;
  
  pbVar14 = &c;
  c.w[0] = 0;
  c.w[1] = 0;
  c.w[2] = 0;
  c.w[3] = 0;
  c.w[4] = 0;
  iVar9 = *(int *)PTR___stack_chk_guard_000b0c9c;
  uVar10 = len;
  piVar18 = (int *)PTR___stack_chk_guard_000b0c9c;
  bigval_import_le(pbVar14,chunk,len);
  if (len < 0) {
    len = len + 3;
  }
  c.w[len >> 2] = 1 << ((uVar10 & 3) << 3) | c.w[len >> 2];
  bigval_add(pbVar14,pbVar14,&ctx->h);
  uVar13 = (ctx->r).w[0];
  uVar19 = (ctx->r).w[1];
  uVar20 = (ctx->r).w[2];
  uVar23 = (ctx->r).w[3];
  iVar21 = *piVar18;
  uVar1 = ((ulonglong)c.w[0] * (ulonglong)uVar13 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)uVar19;
  uVar2 = (uVar1 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)uVar20;
  lVar3 = (uVar1 & 0xffffffff) + (ulonglong)uVar13 * (ulonglong)c.w[1];
  uVar25 = (uint)((ulonglong)lVar3 >> 0x20);
  uVar10 = (int)uVar2 + uVar25;
  uVar1 = (uVar2 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)uVar23;
  uVar2 = (ulonglong)CONCAT14(uVar10 < uVar25,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[1];
  uVar4 = (uVar1 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)(ctx->r).w[4];
  uVar1 = (uVar1 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[1] + (uVar2 >> 0x20);
  lVar5 = (uVar2 & 0xffffffff) + (ulonglong)uVar13 * (ulonglong)c.w[2];
  uVar25 = (uint)((ulonglong)lVar5 >> 0x20);
  uVar10 = (int)uVar1 + uVar25;
  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[1] + (uVar1 >> 0x20);
  uVar1 = (ulonglong)CONCAT14(uVar10 < uVar25,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[2];
  uStack_70 = uVar1 & 0xffffffff;
  uVar4 = (uVar4 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[1] + (uVar2 >> 0x20);
  lVar6 = uStack_70 + (ulonglong)uVar13 * (ulonglong)c.w[3];
  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[2] + (uVar1 >> 0x20);
  uStack_78 = (uint)((ulonglong)lVar6 >> 0x20);
  uVar10 = (int)uVar1 + uStack_78;
  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[2] + (uVar1 >> 0x20);
  uVar1 = (ulonglong)CONCAT14(uVar10 < uStack_78,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[3];
  uStack_70 = uVar1 & 0xffffffff;
  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[3] + (uVar1 >> 0x20);
  uVar2 = (uVar4 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[2] + (uVar2 >> 0x20);
  lVar7 = uStack_70 + (ulonglong)uVar13 * (ulonglong)c.w[4];
  uVar25 = (uint)((ulonglong)lVar7 >> 0x20);
  uVar10 = (int)uVar1 + uVar25;
  uVar4 = (uVar2 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[3] + (uVar1 >> 0x20);
  uVar17 = (uint)(uVar4 >> 0x20);
  uVar1 = (ulonglong)CONCAT14(uVar10 < uVar25,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[4];
  uStack_4c = (uint)uVar1;
  lVar8 = (uVar2 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[3];
  uStack_70._4_4_ = (uint)lVar7;
  uVar12 = (uStack_70._4_4_ >> 2) * 4;
  uVar19 = uVar12 + (uStack_70._4_4_ >> 2 | uStack_4c << 0x1e);
  uVar10 = uVar17 + (int)lVar8;
  lVar7 = (uVar4 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[4] + (uVar1 >> 0x20);
  uVar15 = (uint)lVar7;
  uVar25 = (uint)((ulonglong)lVar7 >> 0x20);
  uStack_64 = (uint)((ulonglong)c.w[0] * (ulonglong)uVar13);
  uVar20 = uVar19 + uStack_64;
  lVar7 = (ulonglong)uVar10 + (ulonglong)uVar23 * (ulonglong)c.w[4];
  uVar13 = (uint)(uVar20 < uStack_64);
  iStack_5c = (int)lVar5;
  iStack_54 = (int)lVar3;
  uVar23 = uVar25 + (int)lVar7;
  uVar16 = uVar13 + iStack_54;
  uVar17 = c.w[4] * (ctx->r).w[4] + (uint)(uVar10 < uVar17) + (int)((ulonglong)lVar8 >> 0x20) +
           (uint)(uVar23 < uVar25) + (int)((ulonglong)lVar7 >> 0x20);
  lVar3 = (ulonglong)((uint)(uVar19 < uVar12) + (uStack_4c & 3)) +
          (ulonglong)(uStack_4c >> 2 | uVar15 * 0x40000000) * 5;
  uStack_98 = (uint)((ulonglong)lVar3 >> 0x20);
  uVar19 = uVar16 + (int)lVar3;
  uVar25 = (uint)(uVar19 < uVar16) + (uint)(uVar16 < uVar13);
  uStack_74 = (uint)lVar6;
  uVar1 = (ulonglong)uStack_98 + (ulonglong)(uVar15 >> 2 | uVar23 * 0x40000000) * 5;
  uVar10 = (uVar17 >> 4) * 0x19;
  uVar20 = uVar10 + uVar20;
  uVar13 = uVar25 + (int)uVar1;
  (ctx->h).w[0] = uVar20;
  uVar10 = (uint)(uVar20 < uVar10);
  uVar19 = uVar10 + uVar19;
  (ctx->h).w[1] = uVar19;
  uVar20 = (uint)(uVar19 < uVar10);
  lStack_a0 = (uVar1 >> 0x20) + (ulonglong)(uVar23 >> 2 | uVar17 * 0x40000000) * 5;
  uVar19 = (uint)(uVar13 + iStack_5c < uVar13) + (uint)(uVar13 < uVar25);
  uVar10 = uVar20 + uVar13 + iStack_5c;
  (ctx->h).w[2] = uVar10;
  uVar25 = (uint)(uVar10 < uVar20);
  uVar13 = (int)lStack_a0 + uStack_74;
  uVar10 = uVar19 + uVar13;
  uVar20 = (uint)(uVar13 < uStack_74);
  uVar13 = uVar25 + uVar10;
  (ctx->h).w[3] = uVar13;
  ctx_00 = (poly1305 *)
           ((uVar17 * 0x10000000 >> 0x1e) * 5 + (uStack_70._4_4_ & 3) +
            (int)((ulonglong)lStack_a0 >> 0x20) + (uVar10 < uVar19) + uVar20 +
           (uint)(uVar13 < uVar25));
  (ctx->h).w[4] = (BignumInt)ctx_00;
  if (iVar9 == iVar21) {
    return;
  }
  pcVar24 = poly1305_finalise;
  puVar22 = PTR___stack_chk_fail_000b0c70;
  (*(code *)PTR___stack_chk_fail_000b0c70)();
  piVar18 = *(int **)(puVar22 + 0x56124);
  iStack_a4 = *piVar18;
  pcStack_94 = pcVar24;
  if (ctx_00->bufferIndex != 0) {
    poly1305_feed_chunk(ctx_00,ctx_00->buffer,ctx_00->bufferIndex);
  }
  r = &bStack_b8;
  bStack_b8.w[0] = 0;
  bStack_b8.w[1] = 0;
  bStack_b8.w[2] = 0;
  bStack_b8.w[3] = 0;
  bStack_b8.w[4] = 0;
  pbVar14 = r;
  bigval_import_le(r,ctx_00,0x10);
  uVar13 = (ctx_00->h).w[4];
  uVar10 = (uVar13 >> 2) * 5;
  uVar25 = (ctx_00->h).w[0] + uVar10;
  uVar19 = (uint)(uVar25 < uVar10);
  uVar16 = uVar19 + (ctx_00->h).w[1];
  uVar10 = (uint)(uVar25 + 5 < uVar25);
  uVar19 = (uint)(uVar16 < uVar19);
  uVar15 = uVar19 + (ctx_00->h).w[2];
  uVar12 = (uint)(uVar10 + uVar16 < uVar10);
  uVar10 = (uint)(uVar15 < uVar19);
  uVar23 = uVar10 + (ctx_00->h).w[3];
  uVar19 = (uint)(uVar12 + uVar15 < uVar12);
  iVar9 = (uVar13 & 3) + (uint)(uVar23 < uVar10);
  uVar10 = (iVar9 + (uint)(uVar19 + uVar23 < uVar19) >> 2) * 5;
  uVar25 = uVar10 + uVar25;
  uVar10 = (uint)(uVar25 < uVar10);
  (ctx_00->h).w[0] = uVar25;
  uVar16 = uVar10 + uVar16;
  uVar10 = (uint)(uVar16 < uVar10);
  (ctx_00->h).w[1] = uVar16;
  uVar15 = uVar10 + uVar15;
  uVar10 = (uint)(uVar15 < uVar10);
  (ctx_00->h).w[2] = uVar15;
  uVar23 = uVar10 + uVar23;
  (ctx_00->h).w[3] = uVar23;
  (ctx_00->h).w[4] = iVar9 + (uint)(uVar23 < uVar10) & 3;
  bigval_add(r,pbVar14,&ctx_00->h);
  iVar9 = 0;
  do {
    iVar21 = iVar9 >> 2;
    mac = (uchar *)(iVar9 << 3);
    puVar11 = (undefined1 *)(uVar20 + iVar9);
    iVar9 = iVar9 + 1;
    *puVar11 = (char)(bStack_b8.w[iVar21] >> ((uint)mac & 0x1f));
  } while (iVar9 != 0x10);
  if (iStack_a4 == *piVar18) {
    return;
  }
  (**(code **)(puVar22 + 0x560f8))();
  poly1305_finalise((poly1305 *)(puVar11 + 0x114),mac);
  return;
}



void FUN_0005a528(int param_1,undefined4 param_2,uint param_3)

{
  ulonglong uVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  longlong lVar6;
  longlong lVar7;
  longlong lVar8;
  uint uVar9;
  int iVar10;
  undefined1 *puVar11;
  undefined1 *puVar12;
  uint uVar13;
  uint uVar14;
  uint *puVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  int *piVar19;
  uint uVar20;
  uint uVar21;
  int iVar22;
  code *pcVar23;
  undefined *puVar24;
  int iVar25;
  undefined1 *puVar26;
  uint uVar27;
  code *pcVar28;
  uint uVar29;
  undefined1 *puVar30;
  undefined1 auStack_90 [16];
  uint local_78;
  uint local_74;
  undefined8 local_70;
  uint local_64;
  int local_5c;
  int local_54;
  uint local_4c;
  uint local_40 [6];
  
  puVar15 = local_40;
  local_40[0] = 0;
  local_40[1] = 0;
  local_40[2] = 0;
  local_40[3] = 0;
  local_40[4] = 0;
  local_40[5] = *(uint *)PTR___stack_chk_guard_000b0c9c;
  uVar9 = param_3;
  piVar19 = (int *)PTR___stack_chk_guard_000b0c9c;
  FUN_0005a4e8(puVar15);
  if ((int)param_3 < 0) {
    param_3 = param_3 + 3;
  }
  local_40[(int)param_3 >> 2] = 1 << ((uVar9 & 3) << 3) | local_40[(int)param_3 >> 2];
  FUN_0005a298(puVar15,puVar15,param_1 + 0x24);
  uVar14 = *(uint *)(param_1 + 0x10);
  uVar20 = *(uint *)(param_1 + 0x14);
  uVar21 = *(uint *)(param_1 + 0x18);
  uVar27 = *(uint *)(param_1 + 0x1c);
  iVar22 = *piVar19;
  uVar1 = ((ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20) +
          (ulonglong)local_40[0] * (ulonglong)uVar20;
  uVar2 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar21;
  lVar3 = (uVar1 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[1];
  uVar29 = (uint)((ulonglong)lVar3 >> 0x20);
  uVar9 = (int)uVar2 + uVar29;
  uVar1 = (uVar2 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar27;
  uVar2 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[1];
  uVar4 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)*(uint *)(param_1 + 0x20);
  uVar1 = (uVar1 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[1] + (uVar2 >> 0x20);
  lVar5 = (uVar2 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[2];
  uVar29 = (uint)((ulonglong)lVar5 >> 0x20);
  uVar9 = (int)uVar1 + uVar29;
  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[1] + (uVar1 >> 0x20);
  uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[2];
  local_70 = uVar1 & 0xffffffff;
  uVar4 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1] +
          (uVar2 >> 0x20);
  lVar6 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[3];
  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[2] + (uVar1 >> 0x20);
  local_78 = (uint)((ulonglong)lVar6 >> 0x20);
  uVar9 = (int)uVar1 + local_78;
  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[2] + (uVar1 >> 0x20);
  uVar1 = (ulonglong)CONCAT14(uVar9 < local_78,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[3];
  local_70 = uVar1 & 0xffffffff;
  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[3] + (uVar1 >> 0x20);
  uVar2 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2] +
          (uVar2 >> 0x20);
  lVar7 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[4];
  uVar29 = (uint)((ulonglong)lVar7 >> 0x20);
  uVar9 = (int)uVar1 + uVar29;
  uVar4 = (uVar2 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[3] + (uVar1 >> 0x20);
  uVar18 = (uint)(uVar4 >> 0x20);
  uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[4];
  local_4c = (uint)uVar1;
  lVar8 = (uVar2 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[3];
  local_70._4_4_ = (uint)lVar7;
  uVar13 = (local_70._4_4_ >> 2) * 4;
  uVar20 = uVar13 + (local_70._4_4_ >> 2 | local_4c << 0x1e);
  uVar9 = uVar18 + (int)lVar8;
  lVar7 = (uVar4 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[4] + (uVar1 >> 0x20);
  uVar16 = (uint)lVar7;
  uVar29 = (uint)((ulonglong)lVar7 >> 0x20);
  local_64 = (uint)((ulonglong)local_40[0] * (ulonglong)uVar14);
  uVar21 = uVar20 + local_64;
  lVar7 = (ulonglong)uVar9 + (ulonglong)uVar27 * (ulonglong)local_40[4];
  uVar14 = (uint)(uVar21 < local_64);
  local_5c = (int)lVar5;
  local_54 = (int)lVar3;
  uVar27 = uVar29 + (int)lVar7;
  uVar17 = uVar14 + local_54;
  uVar18 = local_40[4] * *(int *)(param_1 + 0x20) +
           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20) +
           (uint)(uVar27 < uVar29) + (int)((ulonglong)lVar7 >> 0x20);
  lVar3 = (ulonglong)((uint)(uVar20 < uVar13) + (local_4c & 3)) +
          (ulonglong)(local_4c >> 2 | uVar16 * 0x40000000) * 5;
  puVar30 = (undefined1 *)((ulonglong)lVar3 >> 0x20);
  uVar20 = uVar17 + (int)lVar3;
  uVar29 = (uint)(uVar20 < uVar17) + (uint)(uVar17 < uVar14);
  local_74 = (uint)lVar6;
  uVar1 = ZEXT48(puVar30) + (ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000) * 5;
  uVar9 = (uVar18 >> 4) * 0x19;
  uVar21 = uVar9 + uVar21;
  uVar14 = uVar29 + (int)uVar1;
  *(uint *)(param_1 + 0x24) = uVar21;
  uVar9 = (uint)(uVar21 < uVar9);
  uVar20 = uVar9 + uVar20;
  *(uint *)(param_1 + 0x28) = uVar20;
  uVar20 = (uint)(uVar20 < uVar9);
  lVar3 = (uVar1 >> 0x20) + (ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000) * 5;
  uVar21 = (uint)(uVar14 + local_5c < uVar14) + (uint)(uVar14 < uVar29);
  uVar9 = uVar20 + uVar14 + local_5c;
  *(uint *)(param_1 + 0x2c) = uVar9;
  uVar29 = (uint)(uVar9 < uVar20);
  uVar9 = (int)lVar3 + local_74;
  uVar14 = uVar21 + uVar9;
  uVar9 = (uint)(uVar9 < local_74);
  uVar20 = uVar29 + uVar14;
  *(uint *)(param_1 + 0x30) = uVar20;
  puVar11 = (undefined1 *)
            ((uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +
             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29));
  *(undefined1 **)(param_1 + 0x34) = puVar11;
  if (local_40[5] == iVar22) {
    return;
  }
  pcVar28 = FUN_0005ab78;
  puVar24 = PTR___stack_chk_fail_000b0c70;
  (*(code *)PTR___stack_chk_fail_000b0c70)();
  puVar26 = auStack_90;
  while( true ) {
    puVar12 = puVar11;
    iVar22 = *(int *)(puVar12 + 0x48);
    *(int *)(puVar26 + -0xc) = (int)lVar3;
    piVar19 = *(int **)(puVar24 + 0x56124);
    *(undefined **)(puVar26 + -0x30) = puVar24 + 0x5d5d8;
    *(undefined1 **)(puVar26 + -8) = puVar30;
    *(int *)(puVar26 + -0x10) = (int)((ulonglong)lVar3 >> 0x20);
    lVar3 = CONCAT44(uVar9,piVar19);
    *(code **)(puVar26 + -4) = pcVar28;
    *(int *)(puVar26 + -0x14) = *piVar19;
    if (iVar22 != 0) {
      FUN_0005a528();
    }
    *(undefined4 *)(puVar26 + -0x28) = 0;
    *(undefined4 *)(puVar26 + -0x24) = 0;
    *(undefined4 *)(puVar26 + -0x20) = 0;
    *(undefined4 *)(puVar26 + -0x1c) = 0;
    *(undefined4 *)(puVar26 + -0x18) = 0;
    FUN_0005a4e8(puVar26 + -0x28,puVar12,0x10);
    uVar14 = (*(uint *)(puVar12 + 0x34) >> 2) * 5;
    uVar21 = *(int *)(puVar12 + 0x24) + uVar14;
    uVar20 = (uint)(uVar21 < uVar14);
    uVar16 = uVar20 + *(int *)(puVar12 + 0x28);
    uVar14 = (uint)(uVar21 + 5 < uVar21);
    uVar20 = (uint)(uVar16 < uVar20);
    uVar27 = uVar20 + *(int *)(puVar12 + 0x2c);
    uVar29 = (uint)(uVar14 + uVar16 < uVar14);
    uVar14 = (uint)(uVar27 < uVar20);
    uVar13 = uVar14 + *(int *)(puVar12 + 0x30);
    uVar20 = (uint)(uVar29 + uVar27 < uVar29);
    iVar22 = (*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14);
    uVar14 = (iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5;
    uVar21 = uVar14 + uVar21;
    uVar14 = (uint)(uVar21 < uVar14);
    *(uint *)(puVar12 + 0x24) = uVar21;
    uVar16 = uVar14 + uVar16;
    uVar14 = (uint)(uVar16 < uVar14);
    *(uint *)(puVar12 + 0x28) = uVar16;
    uVar27 = uVar14 + uVar27;
    uVar14 = (uint)(uVar27 < uVar14);
    *(uint *)(puVar12 + 0x2c) = uVar27;
    uVar13 = uVar14 + uVar13;
    *(uint *)(puVar12 + 0x30) = uVar13;
    *(uint *)(puVar12 + 0x34) = iVar22 + (uint)(uVar13 < uVar14) & 3;
    FUN_0005a298();
    iVar22 = 0;
    iVar25 = *(int *)(puVar26 + -0x30);
    do {
      iVar10 = iVar22 >> 2;
      uVar14 = iVar22 << 3;
      puVar11 = (undefined1 *)(uVar9 + iVar22);
      iVar22 = iVar22 + 1;
      *puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));
    } while (iVar22 != 0x10);
    if (*(int *)(puVar26 + -0x14) == *piVar19) break;
    pcVar23 = *(code **)(iVar25 + -0x74e0);
    pcVar28 = (code *)0x5ad34;
    (*pcVar23)();
    puVar24 = (undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488);
    puVar11 = puVar11 + 0x114;
    uVar9 = uVar14;
    puVar30 = puVar12;
    puVar26 = puVar26 + -0x40;
  }
  return;
}


lui gp,0x6
addiu gp,gp,-0x23d8
addu gp,gp,t9
lw t8,-0x74b4(gp)
addiu sp,sp,-0x90
lw t9,-0x78f0(gp)
or t7,a0,zero
addiu t3,sp,0x50
sw gp,0x10(sp)
or t2,a2,zero
sw ra,0x8c(sp)
addiu t9,t9,-0x5b18
sw s8,0x88(sp)
or a0,t3,zero
sw s7,0x84(sp)
sw s6,0x80(sp)
sw s5,0x7c(sp)
sw s4,0x78(sp)
sw s3,0x74(sp)
sw s2,0x70(sp)
sw s1,0x6c(sp)
sw s0,0x68(sp)
sw zero,0x50(sp)
sw zero,0x54(sp)
sw zero,0x58(sp)
sw zero,0x5c(sp)
sw zero,0x60(sp)
lw v0,0x0(t8)
sw v0,0x64(sp)
bal 0x0005a4e8
_nop
bltz a2,0x0005ab64
_lw gp,0x10(sp)
or v0,a2,zero
lui a2,0x8000
sra v0,v0,0x2
addiu a2,a2,0x3
sll v0,v0,0x2
addiu v1,sp,0x68
and a2,t2,a2
bgez a2,0x0005a5e4
_addu a0,v1,v0
addiu a2,a2,-0x1
li v1,-0x4
or a2,a2,v1
addiu a2,a2,0x1
addiu v1,sp,0x68
lw t9,-0x78f0(gp)
or s0,zero,zero
addu v1,v1,v0
sll v0,a2,0x3
addiu t9,t9,-0x5d68
lw a1,-0x18(v1)
li v1,0x1
addiu a2,t7,0x24
sllv v0,v1,v0
or v0,v0,a1
sw v0,-0x18(a0)
or a1,t3,zero
bal 0x0005a298
_or a0,t3,zero
or v0,zero,zero
lw t6,0x50(sp)
or t0,zero,zero
lw t2,0x10(t7)
or a2,zero,zero
lw s3,0x14(t7)
or a0,zero,zero
lw s5,0x18(t7)
multu t6,t2
lw t3,0x54(sp)
lw s8,0x1c(t7)
lw t9,0x64(sp)
lw t8,0x0(t8)
mfhi t4
lw s2,0x58(sp)
mflo t5
sw t9,0x48(sp)
sw t8,0x4c(sp)
or t8,zero,zero
lw s4,0x5c(sp)
lw gp,0x10(sp)
mtlo t4
sw t4,0x28(sp)
or t4,zero,zero
sw t5,0x2c(sp)
mthi v0
maddu t6,s3
mfhi v0
mflo v1
mtlo v0
mthi t0
maddu t6,s5
mfhi t0
mflo t1
mtlo v1
mthi s0
maddu t2,t3
mfhi s0
mflo s1
mtlo t0
or t0,zero,zero
addu v1,t1,s0
sw s0,0x38(sp)
sw s1,0x3c(sp)
mthi a2
sltu s0,v1,s0
maddu t6,s8
mfhi a2
mflo a3
mtlo v1
lw v1,0x20(t7)
mthi s0
or s0,zero,zero
maddu s3,t3
mfhi s6
mflo s7
mtlo a2
mthi a0
maddu t6,v1
mfhi v0
mflo v1
mtlo a3
sw v0,0x30(sp)
or v0,zero,zero
sw v1,0x34(sp)
mthi t4
lw t9,0x34(sp)
sw v0,0x18(sp)
sw v0,0x20(sp)
maddu s5,t3
mflo t5
mfhi t4
mtlo s7
addu v1,s6,t5
mthi t8
lw t8,0x30(sp)
sltu v0,v1,s6
addu t4,v0,t4
lw v0,0x18(sp)
or s6,zero,zero
maddu t2,s2
mfhi a0
mflo a1
mtlo t9
addu a3,v1,a0
sw a0,0x30(sp)
sw a1,0x34(sp)
mthi t0
sltu a1,a3,a0
maddu s8,t3
mfhi t0
mflo t1
mtlo a3
addu v1,t4,t1
mthi a1
lw a1,0x20(t7)
sw v1,0x1c(sp)
sltu t4,v1,t4
lw v1,0x1c(sp)
addu t6,t4,t0
or t4,zero,zero
maddu s3,s2
mfhi a2
mflo a3
mtlo t8
or t8,zero,zero
sw a3,0x24(sp)
mthi s0
maddu a1,t3
mfhi s0
mflo s1
mtlo v1
lw v1,0x24(sp)
addu a3,t6,s1
mthi v0
lw v0,0x20(sp)
sw a2,0x40(sp)
maddu s5,s2
mfhi t0
mflo t1
mtlo v1
mthi v0
maddu t2,s4
mfhi v0
mflo v1
mtlo a3
sw v0,0x18(sp)
or v0,zero,zero
sw v1,0x1c(sp)
addu v1,a2,t1
mthi s6
lw t3,0x18(sp)
lw a2,0x40(sp)
sw v0,0x20(sp)
addu a1,v1,t3
sltu a2,v1,a2
lw v1,0x20(t7)
sltu t3,a1,t3
addu v0,a2,t0
maddu s8,s2
sltu t0,a3,t6
addu t9,t0,s0
or s0,zero,zero
mfhi s6
mflo s7
mtlo a1
or a2,zero,zero
addu t0,v0,s7
mthi t3
sltu v0,t0,v0
maddu s3,s4
mfhi a0
mflo a1
mtlo t9
sw a0,0x40(sp)
sw a1,0x24(sp)
mthi t8
lw t1,0x24(sp)
maddu v1,s2
lw v1,0x60(sp)
or s2,zero,zero
mfhi t8
mflo t9
mtlo t0
lw t0,0x20(sp)
mthi t4
maddu s5,s4
mfhi t4
mflo t5
mtlo t1
lw t1,0x20(t7)
addu a1,a0,t5
lw a0,0x40(sp)
mthi t0
addu t0,v0,s6
or s6,zero,zero
addu t6,t0,t9
sltu a0,a1,a0
sltu t0,t6,t0
addu s7,t0,t8
maddu t2,v1
addu a0,a0,t4
or t8,zero,zero
mfhi t2
mflo t3
mtlo t6
addu v1,a1,t2
sw t2,0x20(sp)
sw t3,0x24(sp)
mthi s0
sltu t2,v1,t2
maddu s8,s4
mflo s1
mfhi s0
mtlo v1
lw v1,0x60(sp)
addu t0,a0,s1
mthi t2
or a3,t0,zero
sltu a0,t0,a0
addu s0,a0,s0
maddu s3,v1
mfhi v0
mflo v1
mtlo s7
sw v0,0x40(sp)
sw v1,0x44(sp)
mthi s6
lw v1,0x20(t7)
lw t5,0x44(sp)
lw t4,0x40(sp)
sll t0,t5,0x1e
maddu v1,s4
lw v1,0x24(sp)
or s4,zero,zero
srl t2,v1,0x2
lw v1,0x60(sp)
mfhi s6
mflo s7
mtlo a3
or t2,t2,t0
sll t0,t2,0x2
addu a1,t0,t2
srl t2,t2,0x1e
addu a0,s0,s7
mthi a2
sltu t0,a1,t0
addu s3,t0,t2
sltu s0,a0,s0
addu s6,s0,s6
maddu s5,v1
lw v1,0x60(sp)
mflo a3
mfhi a2
mtlo a0
addu t3,t4,a3
lw a3,0x60(sp)
mthi t8
sltu v0,t3,t4
addu a2,v0,a2
srl v0,t5,0x2
lw t5,0x2c(sp)
addu a1,a1,t5
maddu s8,v1
sll v1,t3,0x1e
sltu a0,a1,t5
or v0,v0,v1
lw v1,0x34(sp)
mfhi t8
mflo t9
mul t2,a3,t1
mtlo s3
li t1,0x5
srl a3,t3,0x2
lw t3,0x3c(sp)
addu t0,a2,t9
addu s6,t2,s6
mthi s2
sll t2,t0,0x1e
sltu a2,t0,a2
or a3,a3,t2
addu t8,a2,t8
addu t5,a0,t3
addu t8,s6,t8
maddu v0,t1
or v0,zero,zero
srl a2,t8,0x4
sltu a0,t5,a0
mfhi s2
mflo s3
srl t0,t0,0x2
mtlo s2
addu t2,t5,s3
sltu t5,t2,t5
addu t4,t5,a0
sll t5,t8,0x1e
mthi s4
or t0,t0,t5
lw t5,0x1c(sp)
maddu a3,t1
sll a3,a2,0x1
addu a3,a3,a2
mfhi s4
mflo s5
sll a3,a3,0x3
addu a3,a3,a2
ext a2,t8,0x2,0x2
addu a1,a3,a1
mtlo s4
addu a0,t4,s5
sw a1,0x24(t7)
sltu a3,a1,a3
addu t2,a3,t2
sltu t4,a0,t4
sw t2,0x28(t7)
sll t8,a2,0x2
sltu t2,t2,a3
mthi v0
lw v0,0x24(sp)
addu t8,t8,a2
andi a2,v0,0x3
addu t8,t8,a2
maddu t0,t1
addu t0,a0,v1
sltu a0,t0,a0
mflo s1
mfhi s0
addu a0,a0,t4
addu a3,t2,t0
sw a3,0x2c(t7)
sltu a3,a3,t2
addu a1,s1,t5
addu v0,t8,s0
lw t8,0x4c(sp)
addu v1,a0,a1
sltu a1,a1,t5
sltu a0,v1,a0
addu a0,a0,a1
addu v1,a3,v1
addu a0,v0,a0
lw v0,0x48(sp)
sltu a3,v1,a3
sw v1,0x30(t7)
addu a0,a0,a3
bne v0,t8,0x0005ab6c
_sw a0,0x34(t7)
lw ra,0x8c(sp)
lw s8,0x88(sp)
lw s7,0x84(sp)
lw s6,0x80(sp)
lw s5,0x7c(sp)
lw s4,0x78(sp)
lw s3,0x74(sp)
lw s2,0x70(sp)
lw s1,0x6c(sp)
lw s0,0x68(sp)
jr ra
_addiu sp,sp,0x90
b 0x0005a5b0
_addiu v0,a2,0x3
lw t9,-0x74e0(gp)
jalr t9
_nop
(translation_unit "void FUN_0005a528(int param_1,undefined4 param_2,uint param_3)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  longlong lVar3;\n  ulonglong uVar4;\n  longlong lVar5;\n  longlong lVar6;\n  longlong lVar7;\n  longlong lVar8;\n  uint uVar9;\n  int iVar10;\n  undefined1 *puVar11;\n  undefined1 *puVar12;\n  uint uVar13;\n  uint uVar14;\n  uint *puVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  int *piVar19;\n  uint uVar20;\n  uint uVar21;\n  int iVar22;\n  code *pcVar23;\n  undefined *puVar24;\n  int iVar25;\n  undefined1 *puVar26;\n  uint uVar27;\n  code *pcVar28;\n  uint uVar29;\n  undefined1 *puVar30;\n  undefined1 auStack_90 [16];\n  uint local_78;\n  uint local_74;\n  undefined8 local_70;\n  uint local_64;\n  int local_5c;\n  int local_54;\n  uint local_4c;\n  uint local_40 [6];\n  \n  puVar15 = local_40;\n  local_40[0] = 0;\n  local_40[1] = 0;\n  local_40[2] = 0;\n  local_40[3] = 0;\n  local_40[4] = 0;\n  local_40[5] = *(uint *)PTR___stack_chk_guard_000b0c9c;\n  uVar9 = param_3;\n  piVar19 = (int *)PTR___stack_chk_guard_000b0c9c;\n  FUN_0005a4e8(puVar15);\n  if ((int)param_3 < 0) {\n    param_3 = param_3 + 3;\n  }\n  local_40[(int)param_3 >> 2] = 1 << ((uVar9 & 3) << 3) | local_40[(int)param_3 >> 2];\n  FUN_0005a298(puVar15,puVar15,param_1 + 0x24);\n  uVar14 = *(uint *)(param_1 + 0x10);\n  uVar20 = *(uint *)(param_1 + 0x14);\n  uVar21 = *(uint *)(param_1 + 0x18);\n  uVar27 = *(uint *)(param_1 + 0x1c);\n  iVar22 = *piVar19;\n  uVar1 = ((ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20) +\n          (ulonglong)local_40[0] * (ulonglong)uVar20;\n  uVar2 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar21;\n  lVar3 = (uVar1 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[1];\n  uVar29 = (uint)((ulonglong)lVar3 >> 0x20);\n  uVar9 = (int)uVar2 + uVar29;\n  uVar1 = (uVar2 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar27;\n  uVar2 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[1];\n  uVar4 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)*(uint *)(param_1 + 0x20);\n  uVar1 = (uVar1 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[1] + (uVar2 >> 0x20);\n  lVar5 = (uVar2 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[2];\n  uVar29 = (uint)((ulonglong)lVar5 >> 0x20);\n  uVar9 = (int)uVar1 + uVar29;\n  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[1] + (uVar1 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[2];\n  local_70 = uVar1 & 0xffffffff;\n  uVar4 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1] +\n          (uVar2 >> 0x20);\n  lVar6 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[3];\n  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[2] + (uVar1 >> 0x20);\n  local_78 = (uint)((ulonglong)lVar6 >> 0x20);\n  uVar9 = (int)uVar1 + local_78;\n  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[2] + (uVar1 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < local_78,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[3];\n  local_70 = uVar1 & 0xffffffff;\n  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[3] + (uVar1 >> 0x20);\n  uVar2 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2] +\n          (uVar2 >> 0x20);\n  lVar7 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[4];\n  uVar29 = (uint)((ulonglong)lVar7 >> 0x20);\n  uVar9 = (int)uVar1 + uVar29;\n  uVar4 = (uVar2 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[3] + (uVar1 >> 0x20);\n  uVar18 = (uint)(uVar4 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[4];\n  local_4c = (uint)uVar1;\n  lVar8 = (uVar2 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[3];\n  local_70._4_4_ = (uint)lVar7;\n  uVar13 = (local_70._4_4_ >> 2) * 4;\n  uVar20 = uVar13 + (local_70._4_4_ >> 2 | local_4c << 0x1e);\n  uVar9 = uVar18 + (int)lVar8;\n  lVar7 = (uVar4 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[4] + (uVar1 >> 0x20);\n  uVar16 = (uint)lVar7;\n  uVar29 = (uint)((ulonglong)lVar7 >> 0x20);\n  local_64 = (uint)((ulonglong)local_40[0] * (ulonglong)uVar14);\n  uVar21 = uVar20 + local_64;\n  lVar7 = (ulonglong)uVar9 + (ulonglong)uVar27 * (ulonglong)local_40[4];\n  uVar14 = (uint)(uVar21 < local_64);\n  local_5c = (int)lVar5;\n  local_54 = (int)lVar3;\n  uVar27 = uVar29 + (int)lVar7;\n  uVar17 = uVar14 + local_54;\n  uVar18 = local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar27 < uVar29) + (int)((ulonglong)lVar7 >> 0x20);\n  lVar3 = (ulonglong)((uint)(uVar20 < uVar13) + (local_4c & 3)) +\n          (ulonglong)(local_4c >> 2 | uVar16 * 0x40000000) * 5;\n  puVar30 = (undefined1 *)((ulonglong)lVar3 >> 0x20);\n  uVar20 = uVar17 + (int)lVar3;\n  uVar29 = (uint)(uVar20 < uVar17) + (uint)(uVar17 < uVar14);\n  local_74 = (uint)lVar6;\n  uVar1 = ZEXT48(puVar30) + (ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000) * 5;\n  uVar9 = (uVar18 >> 4) * 0x19;\n  uVar21 = uVar9 + uVar21;\n  uVar14 = uVar29 + (int)uVar1;\n  *(uint *)(param_1 + 0x24) = uVar21;\n  uVar9 = (uint)(uVar21 < uVar9);\n  uVar20 = uVar9 + uVar20;\n  *(uint *)(param_1 + 0x28) = uVar20;\n  uVar20 = (uint)(uVar20 < uVar9);\n  lVar3 = (uVar1 >> 0x20) + (ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000) * 5;\n  uVar21 = (uint)(uVar14 + local_5c < uVar14) + (uint)(uVar14 < uVar29);\n  uVar9 = uVar20 + uVar14 + local_5c;\n  *(uint *)(param_1 + 0x2c) = uVar9;\n  uVar29 = (uint)(uVar9 < uVar20);\n  uVar9 = (int)lVar3 + local_74;\n  uVar14 = uVar21 + uVar9;\n  uVar9 = (uint)(uVar9 < local_74);\n  uVar20 = uVar29 + uVar14;\n  *(uint *)(param_1 + 0x30) = uVar20;\n  puVar11 = (undefined1 *)\n            ((uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29));\n  *(undefined1 **)(param_1 + 0x34) = puVar11;\n  if (local_40[5] == iVar22) {\n    return;\n  }\n  pcVar28 = FUN_0005ab78;\n  puVar24 = PTR___stack_chk_fail_000b0c70;\n  (*(code *)PTR___stack_chk_fail_000b0c70)();\n  puVar26 = auStack_90;\n  while( true ) {\n    puVar12 = puVar11;\n    iVar22 = *(int *)(puVar12 + 0x48);\n    *(int *)(puVar26 + -0xc) = (int)lVar3;\n    piVar19 = *(int **)(puVar24 + 0x56124);\n    *(undefined **)(puVar26 + -0x30) = puVar24 + 0x5d5d8;\n    *(undefined1 **)(puVar26 + -8) = puVar30;\n    *(int *)(puVar26 + -0x10) = (int)((ulonglong)lVar3 >> 0x20);\n    lVar3 = CONCAT44(uVar9,piVar19);\n    *(code **)(puVar26 + -4) = pcVar28;\n    *(int *)(puVar26 + -0x14) = *piVar19;\n    if (iVar22 != 0) {\n      FUN_0005a528();\n    }\n    *(undefined4 *)(puVar26 + -0x28) = 0;\n    *(undefined4 *)(puVar26 + -0x24) = 0;\n    *(undefined4 *)(puVar26 + -0x20) = 0;\n    *(undefined4 *)(puVar26 + -0x1c) = 0;\n    *(undefined4 *)(puVar26 + -0x18) = 0;\n    FUN_0005a4e8(puVar26 + -0x28,puVar12,0x10);\n    uVar14 = (*(uint *)(puVar12 + 0x34) >> 2) * 5;\n    uVar21 = *(int *)(puVar12 + 0x24) + uVar14;\n    uVar20 = (uint)(uVar21 < uVar14);\n    uVar16 = uVar20 + *(int *)(puVar12 + 0x28);\n    uVar14 = (uint)(uVar21 + 5 < uVar21);\n    uVar20 = (uint)(uVar16 < uVar20);\n    uVar27 = uVar20 + *(int *)(puVar12 + 0x2c);\n    uVar29 = (uint)(uVar14 + uVar16 < uVar14);\n    uVar14 = (uint)(uVar27 < uVar20);\n    uVar13 = uVar14 + *(int *)(puVar12 + 0x30);\n    uVar20 = (uint)(uVar29 + uVar27 < uVar29);\n    iVar22 = (*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14);\n    uVar14 = (iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5;\n    uVar21 = uVar14 + uVar21;\n    uVar14 = (uint)(uVar21 < uVar14);\n    *(uint *)(puVar12 + 0x24) = uVar21;\n    uVar16 = uVar14 + uVar16;\n    uVar14 = (uint)(uVar16 < uVar14);\n    *(uint *)(puVar12 + 0x28) = uVar16;\n    uVar27 = uVar14 + uVar27;\n    uVar14 = (uint)(uVar27 < uVar14);\n    *(uint *)(puVar12 + 0x2c) = uVar27;\n    uVar13 = uVar14 + uVar13;\n    *(uint *)(puVar12 + 0x30) = uVar13;\n    *(uint *)(puVar12 + 0x34) = iVar22 + (uint)(uVar13 < uVar14) & 3;\n    FUN_0005a298();\n    iVar22 = 0;\n    iVar25 = *(int *)(puVar26 + -0x30);\n    do {\n      iVar10 = iVar22 >> 2;\n      uVar14 = iVar22 << 3;\n      puVar11 = (undefined1 *)(uVar9 + iVar22);\n      iVar22 = iVar22 + 1;\n      *puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));\n    } while (iVar22 != 0x10);\n    if (*(int *)(puVar26 + -0x14) == *piVar19) break;\n    pcVar23 = *(code **)(iVar25 + -0x74e0);\n    pcVar28 = (code *)0x5ad34;\n    (*pcVar23)();\n    puVar24 = (undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488);\n    puVar11 = puVar11 + 0x114;\n    uVar9 = uVar14;\n    puVar30 = puVar12;\n    puVar26 = puVar26 + -0x40;\n  }\n  return;\n}\n\n" (function_definition "void FUN_0005a528(int param_1,undefined4 param_2,uint param_3)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  longlong lVar3;\n  ulonglong uVar4;\n  longlong lVar5;\n  longlong lVar6;\n  longlong lVar7;\n  longlong lVar8;\n  uint uVar9;\n  int iVar10;\n  undefined1 *puVar11;\n  undefined1 *puVar12;\n  uint uVar13;\n  uint uVar14;\n  uint *puVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  int *piVar19;\n  uint uVar20;\n  uint uVar21;\n  int iVar22;\n  code *pcVar23;\n  undefined *puVar24;\n  int iVar25;\n  undefined1 *puVar26;\n  uint uVar27;\n  code *pcVar28;\n  uint uVar29;\n  undefined1 *puVar30;\n  undefined1 auStack_90 [16];\n  uint local_78;\n  uint local_74;\n  undefined8 local_70;\n  uint local_64;\n  int local_5c;\n  int local_54;\n  uint local_4c;\n  uint local_40 [6];\n  \n  puVar15 = local_40;\n  local_40[0] = 0;\n  local_40[1] = 0;\n  local_40[2] = 0;\n  local_40[3] = 0;\n  local_40[4] = 0;\n  local_40[5] = *(uint *)PTR___stack_chk_guard_000b0c9c;\n  uVar9 = param_3;\n  piVar19 = (int *)PTR___stack_chk_guard_000b0c9c;\n  FUN_0005a4e8(puVar15);\n  if ((int)param_3 < 0) {\n    param_3 = param_3 + 3;\n  }\n  local_40[(int)param_3 >> 2] = 1 << ((uVar9 & 3) << 3) | local_40[(int)param_3 >> 2];\n  FUN_0005a298(puVar15,puVar15,param_1 + 0x24);\n  uVar14 = *(uint *)(param_1 + 0x10);\n  uVar20 = *(uint *)(param_1 + 0x14);\n  uVar21 = *(uint *)(param_1 + 0x18);\n  uVar27 = *(uint *)(param_1 + 0x1c);\n  iVar22 = *piVar19;\n  uVar1 = ((ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20) +\n          (ulonglong)local_40[0] * (ulonglong)uVar20;\n  uVar2 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar21;\n  lVar3 = (uVar1 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[1];\n  uVar29 = (uint)((ulonglong)lVar3 >> 0x20);\n  uVar9 = (int)uVar2 + uVar29;\n  uVar1 = (uVar2 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar27;\n  uVar2 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[1];\n  uVar4 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)*(uint *)(param_1 + 0x20);\n  uVar1 = (uVar1 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[1] + (uVar2 >> 0x20);\n  lVar5 = (uVar2 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[2];\n  uVar29 = (uint)((ulonglong)lVar5 >> 0x20);\n  uVar9 = (int)uVar1 + uVar29;\n  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[1] + (uVar1 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[2];\n  local_70 = uVar1 & 0xffffffff;\n  uVar4 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1] +\n          (uVar2 >> 0x20);\n  lVar6 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[3];\n  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[2] + (uVar1 >> 0x20);\n  local_78 = (uint)((ulonglong)lVar6 >> 0x20);\n  uVar9 = (int)uVar1 + local_78;\n  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[2] + (uVar1 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < local_78,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[3];\n  local_70 = uVar1 & 0xffffffff;\n  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[3] + (uVar1 >> 0x20);\n  uVar2 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2] +\n          (uVar2 >> 0x20);\n  lVar7 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[4];\n  uVar29 = (uint)((ulonglong)lVar7 >> 0x20);\n  uVar9 = (int)uVar1 + uVar29;\n  uVar4 = (uVar2 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[3] + (uVar1 >> 0x20);\n  uVar18 = (uint)(uVar4 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[4];\n  local_4c = (uint)uVar1;\n  lVar8 = (uVar2 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[3];\n  local_70._4_4_ = (uint)lVar7;\n  uVar13 = (local_70._4_4_ >> 2) * 4;\n  uVar20 = uVar13 + (local_70._4_4_ >> 2 | local_4c << 0x1e);\n  uVar9 = uVar18 + (int)lVar8;\n  lVar7 = (uVar4 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[4] + (uVar1 >> 0x20);\n  uVar16 = (uint)lVar7;\n  uVar29 = (uint)((ulonglong)lVar7 >> 0x20);\n  local_64 = (uint)((ulonglong)local_40[0] * (ulonglong)uVar14);\n  uVar21 = uVar20 + local_64;\n  lVar7 = (ulonglong)uVar9 + (ulonglong)uVar27 * (ulonglong)local_40[4];\n  uVar14 = (uint)(uVar21 < local_64);\n  local_5c = (int)lVar5;\n  local_54 = (int)lVar3;\n  uVar27 = uVar29 + (int)lVar7;\n  uVar17 = uVar14 + local_54;\n  uVar18 = local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar27 < uVar29) + (int)((ulonglong)lVar7 >> 0x20);\n  lVar3 = (ulonglong)((uint)(uVar20 < uVar13) + (local_4c & 3)) +\n          (ulonglong)(local_4c >> 2 | uVar16 * 0x40000000) * 5;\n  puVar30 = (undefined1 *)((ulonglong)lVar3 >> 0x20);\n  uVar20 = uVar17 + (int)lVar3;\n  uVar29 = (uint)(uVar20 < uVar17) + (uint)(uVar17 < uVar14);\n  local_74 = (uint)lVar6;\n  uVar1 = ZEXT48(puVar30) + (ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000) * 5;\n  uVar9 = (uVar18 >> 4) * 0x19;\n  uVar21 = uVar9 + uVar21;\n  uVar14 = uVar29 + (int)uVar1;\n  *(uint *)(param_1 + 0x24) = uVar21;\n  uVar9 = (uint)(uVar21 < uVar9);\n  uVar20 = uVar9 + uVar20;\n  *(uint *)(param_1 + 0x28) = uVar20;\n  uVar20 = (uint)(uVar20 < uVar9);\n  lVar3 = (uVar1 >> 0x20) + (ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000) * 5;\n  uVar21 = (uint)(uVar14 + local_5c < uVar14) + (uint)(uVar14 < uVar29);\n  uVar9 = uVar20 + uVar14 + local_5c;\n  *(uint *)(param_1 + 0x2c) = uVar9;\n  uVar29 = (uint)(uVar9 < uVar20);\n  uVar9 = (int)lVar3 + local_74;\n  uVar14 = uVar21 + uVar9;\n  uVar9 = (uint)(uVar9 < local_74);\n  uVar20 = uVar29 + uVar14;\n  *(uint *)(param_1 + 0x30) = uVar20;\n  puVar11 = (undefined1 *)\n            ((uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29));\n  *(undefined1 **)(param_1 + 0x34) = puVar11;\n  if (local_40[5] == iVar22) {\n    return;\n  }\n  pcVar28 = FUN_0005ab78;\n  puVar24 = PTR___stack_chk_fail_000b0c70;\n  (*(code *)PTR___stack_chk_fail_000b0c70)();\n  puVar26 = auStack_90;\n  while( true ) {\n    puVar12 = puVar11;\n    iVar22 = *(int *)(puVar12 + 0x48);\n    *(int *)(puVar26 + -0xc) = (int)lVar3;\n    piVar19 = *(int **)(puVar24 + 0x56124);\n    *(undefined **)(puVar26 + -0x30) = puVar24 + 0x5d5d8;\n    *(undefined1 **)(puVar26 + -8) = puVar30;\n    *(int *)(puVar26 + -0x10) = (int)((ulonglong)lVar3 >> 0x20);\n    lVar3 = CONCAT44(uVar9,piVar19);\n    *(code **)(puVar26 + -4) = pcVar28;\n    *(int *)(puVar26 + -0x14) = *piVar19;\n    if (iVar22 != 0) {\n      FUN_0005a528();\n    }\n    *(undefined4 *)(puVar26 + -0x28) = 0;\n    *(undefined4 *)(puVar26 + -0x24) = 0;\n    *(undefined4 *)(puVar26 + -0x20) = 0;\n    *(undefined4 *)(puVar26 + -0x1c) = 0;\n    *(undefined4 *)(puVar26 + -0x18) = 0;\n    FUN_0005a4e8(puVar26 + -0x28,puVar12,0x10);\n    uVar14 = (*(uint *)(puVar12 + 0x34) >> 2) * 5;\n    uVar21 = *(int *)(puVar12 + 0x24) + uVar14;\n    uVar20 = (uint)(uVar21 < uVar14);\n    uVar16 = uVar20 + *(int *)(puVar12 + 0x28);\n    uVar14 = (uint)(uVar21 + 5 < uVar21);\n    uVar20 = (uint)(uVar16 < uVar20);\n    uVar27 = uVar20 + *(int *)(puVar12 + 0x2c);\n    uVar29 = (uint)(uVar14 + uVar16 < uVar14);\n    uVar14 = (uint)(uVar27 < uVar20);\n    uVar13 = uVar14 + *(int *)(puVar12 + 0x30);\n    uVar20 = (uint)(uVar29 + uVar27 < uVar29);\n    iVar22 = (*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14);\n    uVar14 = (iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5;\n    uVar21 = uVar14 + uVar21;\n    uVar14 = (uint)(uVar21 < uVar14);\n    *(uint *)(puVar12 + 0x24) = uVar21;\n    uVar16 = uVar14 + uVar16;\n    uVar14 = (uint)(uVar16 < uVar14);\n    *(uint *)(puVar12 + 0x28) = uVar16;\n    uVar27 = uVar14 + uVar27;\n    uVar14 = (uint)(uVar27 < uVar14);\n    *(uint *)(puVar12 + 0x2c) = uVar27;\n    uVar13 = uVar14 + uVar13;\n    *(uint *)(puVar12 + 0x30) = uVar13;\n    *(uint *)(puVar12 + 0x34) = iVar22 + (uint)(uVar13 < uVar14) & 3;\n    FUN_0005a298();\n    iVar22 = 0;\n    iVar25 = *(int *)(puVar26 + -0x30);\n    do {\n      iVar10 = iVar22 >> 2;\n      uVar14 = iVar22 << 3;\n      puVar11 = (undefined1 *)(uVar9 + iVar22);\n      iVar22 = iVar22 + 1;\n      *puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));\n    } while (iVar22 != 0x10);\n    if (*(int *)(puVar26 + -0x14) == *piVar19) break;\n    pcVar23 = *(code **)(iVar25 + -0x74e0);\n    pcVar28 = (code *)0x5ad34;\n    (*pcVar23)();\n    puVar24 = (undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488);\n    puVar11 = puVar11 + 0x114;\n    uVar9 = uVar14;\n    puVar30 = puVar12;\n    puVar26 = puVar26 + -0x40;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0005a528(int param_1,undefined4 param_2,uint param_3)" identifier (parameter_list "(int param_1,undefined4 param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  longlong lVar3;\n  ulonglong uVar4;\n  longlong lVar5;\n  longlong lVar6;\n  longlong lVar7;\n  longlong lVar8;\n  uint uVar9;\n  int iVar10;\n  undefined1 *puVar11;\n  undefined1 *puVar12;\n  uint uVar13;\n  uint uVar14;\n  uint *puVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  int *piVar19;\n  uint uVar20;\n  uint uVar21;\n  int iVar22;\n  code *pcVar23;\n  undefined *puVar24;\n  int iVar25;\n  undefined1 *puVar26;\n  uint uVar27;\n  code *pcVar28;\n  uint uVar29;\n  undefined1 *puVar30;\n  undefined1 auStack_90 [16];\n  uint local_78;\n  uint local_74;\n  undefined8 local_70;\n  uint local_64;\n  int local_5c;\n  int local_54;\n  uint local_4c;\n  uint local_40 [6];\n  \n  puVar15 = local_40;\n  local_40[0] = 0;\n  local_40[1] = 0;\n  local_40[2] = 0;\n  local_40[3] = 0;\n  local_40[4] = 0;\n  local_40[5] = *(uint *)PTR___stack_chk_guard_000b0c9c;\n  uVar9 = param_3;\n  piVar19 = (int *)PTR___stack_chk_guard_000b0c9c;\n  FUN_0005a4e8(puVar15);\n  if ((int)param_3 < 0) {\n    param_3 = param_3 + 3;\n  }\n  local_40[(int)param_3 >> 2] = 1 << ((uVar9 & 3) << 3) | local_40[(int)param_3 >> 2];\n  FUN_0005a298(puVar15,puVar15,param_1 + 0x24);\n  uVar14 = *(uint *)(param_1 + 0x10);\n  uVar20 = *(uint *)(param_1 + 0x14);\n  uVar21 = *(uint *)(param_1 + 0x18);\n  uVar27 = *(uint *)(param_1 + 0x1c);\n  iVar22 = *piVar19;\n  uVar1 = ((ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20) +\n          (ulonglong)local_40[0] * (ulonglong)uVar20;\n  uVar2 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar21;\n  lVar3 = (uVar1 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[1];\n  uVar29 = (uint)((ulonglong)lVar3 >> 0x20);\n  uVar9 = (int)uVar2 + uVar29;\n  uVar1 = (uVar2 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar27;\n  uVar2 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[1];\n  uVar4 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)*(uint *)(param_1 + 0x20);\n  uVar1 = (uVar1 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[1] + (uVar2 >> 0x20);\n  lVar5 = (uVar2 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[2];\n  uVar29 = (uint)((ulonglong)lVar5 >> 0x20);\n  uVar9 = (int)uVar1 + uVar29;\n  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[1] + (uVar1 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[2];\n  local_70 = uVar1 & 0xffffffff;\n  uVar4 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1] +\n          (uVar2 >> 0x20);\n  lVar6 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[3];\n  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[2] + (uVar1 >> 0x20);\n  local_78 = (uint)((ulonglong)lVar6 >> 0x20);\n  uVar9 = (int)uVar1 + local_78;\n  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[2] + (uVar1 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < local_78,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[3];\n  local_70 = uVar1 & 0xffffffff;\n  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[3] + (uVar1 >> 0x20);\n  uVar2 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2] +\n          (uVar2 >> 0x20);\n  lVar7 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[4];\n  uVar29 = (uint)((ulonglong)lVar7 >> 0x20);\n  uVar9 = (int)uVar1 + uVar29;\n  uVar4 = (uVar2 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[3] + (uVar1 >> 0x20);\n  uVar18 = (uint)(uVar4 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[4];\n  local_4c = (uint)uVar1;\n  lVar8 = (uVar2 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[3];\n  local_70._4_4_ = (uint)lVar7;\n  uVar13 = (local_70._4_4_ >> 2) * 4;\n  uVar20 = uVar13 + (local_70._4_4_ >> 2 | local_4c << 0x1e);\n  uVar9 = uVar18 + (int)lVar8;\n  lVar7 = (uVar4 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[4] + (uVar1 >> 0x20);\n  uVar16 = (uint)lVar7;\n  uVar29 = (uint)((ulonglong)lVar7 >> 0x20);\n  local_64 = (uint)((ulonglong)local_40[0] * (ulonglong)uVar14);\n  uVar21 = uVar20 + local_64;\n  lVar7 = (ulonglong)uVar9 + (ulonglong)uVar27 * (ulonglong)local_40[4];\n  uVar14 = (uint)(uVar21 < local_64);\n  local_5c = (int)lVar5;\n  local_54 = (int)lVar3;\n  uVar27 = uVar29 + (int)lVar7;\n  uVar17 = uVar14 + local_54;\n  uVar18 = local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar27 < uVar29) + (int)((ulonglong)lVar7 >> 0x20);\n  lVar3 = (ulonglong)((uint)(uVar20 < uVar13) + (local_4c & 3)) +\n          (ulonglong)(local_4c >> 2 | uVar16 * 0x40000000) * 5;\n  puVar30 = (undefined1 *)((ulonglong)lVar3 >> 0x20);\n  uVar20 = uVar17 + (int)lVar3;\n  uVar29 = (uint)(uVar20 < uVar17) + (uint)(uVar17 < uVar14);\n  local_74 = (uint)lVar6;\n  uVar1 = ZEXT48(puVar30) + (ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000) * 5;\n  uVar9 = (uVar18 >> 4) * 0x19;\n  uVar21 = uVar9 + uVar21;\n  uVar14 = uVar29 + (int)uVar1;\n  *(uint *)(param_1 + 0x24) = uVar21;\n  uVar9 = (uint)(uVar21 < uVar9);\n  uVar20 = uVar9 + uVar20;\n  *(uint *)(param_1 + 0x28) = uVar20;\n  uVar20 = (uint)(uVar20 < uVar9);\n  lVar3 = (uVar1 >> 0x20) + (ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000) * 5;\n  uVar21 = (uint)(uVar14 + local_5c < uVar14) + (uint)(uVar14 < uVar29);\n  uVar9 = uVar20 + uVar14 + local_5c;\n  *(uint *)(param_1 + 0x2c) = uVar9;\n  uVar29 = (uint)(uVar9 < uVar20);\n  uVar9 = (int)lVar3 + local_74;\n  uVar14 = uVar21 + uVar9;\n  uVar9 = (uint)(uVar9 < local_74);\n  uVar20 = uVar29 + uVar14;\n  *(uint *)(param_1 + 0x30) = uVar20;\n  puVar11 = (undefined1 *)\n            ((uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29));\n  *(undefined1 **)(param_1 + 0x34) = puVar11;\n  if (local_40[5] == iVar22) {\n    return;\n  }\n  pcVar28 = FUN_0005ab78;\n  puVar24 = PTR___stack_chk_fail_000b0c70;\n  (*(code *)PTR___stack_chk_fail_000b0c70)();\n  puVar26 = auStack_90;\n  while( true ) {\n    puVar12 = puVar11;\n    iVar22 = *(int *)(puVar12 + 0x48);\n    *(int *)(puVar26 + -0xc) = (int)lVar3;\n    piVar19 = *(int **)(puVar24 + 0x56124);\n    *(undefined **)(puVar26 + -0x30) = puVar24 + 0x5d5d8;\n    *(undefined1 **)(puVar26 + -8) = puVar30;\n    *(int *)(puVar26 + -0x10) = (int)((ulonglong)lVar3 >> 0x20);\n    lVar3 = CONCAT44(uVar9,piVar19);\n    *(code **)(puVar26 + -4) = pcVar28;\n    *(int *)(puVar26 + -0x14) = *piVar19;\n    if (iVar22 != 0) {\n      FUN_0005a528();\n    }\n    *(undefined4 *)(puVar26 + -0x28) = 0;\n    *(undefined4 *)(puVar26 + -0x24) = 0;\n    *(undefined4 *)(puVar26 + -0x20) = 0;\n    *(undefined4 *)(puVar26 + -0x1c) = 0;\n    *(undefined4 *)(puVar26 + -0x18) = 0;\n    FUN_0005a4e8(puVar26 + -0x28,puVar12,0x10);\n    uVar14 = (*(uint *)(puVar12 + 0x34) >> 2) * 5;\n    uVar21 = *(int *)(puVar12 + 0x24) + uVar14;\n    uVar20 = (uint)(uVar21 < uVar14);\n    uVar16 = uVar20 + *(int *)(puVar12 + 0x28);\n    uVar14 = (uint)(uVar21 + 5 < uVar21);\n    uVar20 = (uint)(uVar16 < uVar20);\n    uVar27 = uVar20 + *(int *)(puVar12 + 0x2c);\n    uVar29 = (uint)(uVar14 + uVar16 < uVar14);\n    uVar14 = (uint)(uVar27 < uVar20);\n    uVar13 = uVar14 + *(int *)(puVar12 + 0x30);\n    uVar20 = (uint)(uVar29 + uVar27 < uVar29);\n    iVar22 = (*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14);\n    uVar14 = (iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5;\n    uVar21 = uVar14 + uVar21;\n    uVar14 = (uint)(uVar21 < uVar14);\n    *(uint *)(puVar12 + 0x24) = uVar21;\n    uVar16 = uVar14 + uVar16;\n    uVar14 = (uint)(uVar16 < uVar14);\n    *(uint *)(puVar12 + 0x28) = uVar16;\n    uVar27 = uVar14 + uVar27;\n    uVar14 = (uint)(uVar27 < uVar14);\n    *(uint *)(puVar12 + 0x2c) = uVar27;\n    uVar13 = uVar14 + uVar13;\n    *(uint *)(puVar12 + 0x30) = uVar13;\n    *(uint *)(puVar12 + 0x34) = iVar22 + (uint)(uVar13 < uVar14) & 3;\n    FUN_0005a298();\n    iVar22 = 0;\n    iVar25 = *(int *)(puVar26 + -0x30);\n    do {\n      iVar10 = iVar22 >> 2;\n      uVar14 = iVar22 << 3;\n      puVar11 = (undefined1 *)(uVar9 + iVar22);\n      iVar22 = iVar22 + 1;\n      *puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));\n    } while (iVar22 != 0x10);\n    if (*(int *)(puVar26 + -0x14) == *piVar19) break;\n    pcVar23 = *(code **)(iVar25 + -0x74e0);\n    pcVar28 = (code *)0x5ad34;\n    (*pcVar23)();\n    puVar24 = (undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488);\n    puVar11 = puVar11 + 0x114;\n    uVar9 = uVar14;\n    puVar30 = puVar12;\n    puVar26 = puVar26 + -0x40;\n  }\n  return;\n}" { (declaration "ulonglong uVar1;" type_identifier identifier ;) (declaration "ulonglong uVar2;" type_identifier identifier ;) (declaration "longlong lVar3;" type_identifier identifier ;) (declaration "ulonglong uVar4;" type_identifier identifier ;) (declaration "longlong lVar5;" type_identifier identifier ;) (declaration "longlong lVar6;" type_identifier identifier ;) (declaration "longlong lVar7;" type_identifier identifier ;) (declaration "longlong lVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined1 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "uint *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int *piVar19;" primitive_type (pointer_declarator "*piVar19" * identifier) ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "code *pcVar23;" type_identifier (pointer_declarator "*pcVar23" * identifier) ;) (declaration "undefined *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "int iVar25;" primitive_type identifier ;) (declaration "undefined1 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "uint uVar27;" type_identifier identifier ;) (declaration "code *pcVar28;" type_identifier (pointer_declarator "*pcVar28" * identifier) ;) (declaration "uint uVar29;" type_identifier identifier ;) (declaration "undefined1 *puVar30;" type_identifier (pointer_declarator "*puVar30" * identifier) ;) (declaration "undefined1 auStack_90 [16];" type_identifier (array_declarator "auStack_90 [16]" identifier [ number_literal ]) ;) (declaration "uint local_78;" type_identifier identifier ;) (declaration "uint local_74;" type_identifier identifier ;) (declaration "undefined8 local_70;" type_identifier identifier ;) (declaration "uint local_64;" type_identifier identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "uint local_40 [6];" type_identifier (array_declarator "local_40 [6]" identifier [ number_literal ]) ;) (expression_statement "puVar15 = local_40;" (assignment_expression "puVar15 = local_40" identifier = identifier) ;) (expression_statement "local_40[0] = 0;" (assignment_expression "local_40[0] = 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_40[1] = 0;" (assignment_expression "local_40[1] = 0" (subscript_expression "local_40[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_40[2] = 0;" (assignment_expression "local_40[2] = 0" (subscript_expression "local_40[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_40[3] = 0;" (assignment_expression "local_40[3] = 0" (subscript_expression "local_40[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_40[4] = 0;" (assignment_expression "local_40[4] = 0" (subscript_expression "local_40[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_40[5] = *(uint *)PTR___stack_chk_guard_000b0c9c;" (assignment_expression "local_40[5] = *(uint *)PTR___stack_chk_guard_000b0c9c" (subscript_expression "local_40[5]" identifier [ number_literal ]) = (pointer_expression "*(uint *)PTR___stack_chk_guard_000b0c9c" * (cast_expression "(uint *)PTR___stack_chk_guard_000b0c9c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar9 = param_3;" (assignment_expression "uVar9 = param_3" identifier = identifier) ;) (expression_statement "piVar19 = (int *)PTR___stack_chk_guard_000b0c9c;" (assignment_expression "piVar19 = (int *)PTR___stack_chk_guard_000b0c9c" identifier = (cast_expression "(int *)PTR___stack_chk_guard_000b0c9c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "FUN_0005a4e8(puVar15);" (call_expression "FUN_0005a4e8(puVar15)" identifier (argument_list "(puVar15)" ( identifier ))) ;) (if_statement "if ((int)param_3 < 0) {\n    param_3 = param_3 + 3;\n  }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    param_3 = param_3 + 3;\n  }" { (expression_statement "param_3 = param_3 + 3;" (assignment_expression "param_3 = param_3 + 3" identifier = (binary_expression "param_3 + 3" identifier + number_literal)) ;) })) (expression_statement "local_40[(int)param_3 >> 2] = 1 << ((uVar9 & 3) << 3) | local_40[(int)param_3 >> 2];" (assignment_expression "local_40[(int)param_3 >> 2] = 1 << ((uVar9 & 3) << 3) | local_40[(int)param_3 >> 2]" (subscript_expression "local_40[(int)param_3 >> 2]" identifier [ (binary_expression "(int)param_3 >> 2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ]) = (binary_expression "1 << ((uVar9 & 3) << 3) | local_40[(int)param_3 >> 2]" (binary_expression "1 << ((uVar9 & 3) << 3)" number_literal << (parenthesized_expression "((uVar9 & 3) << 3)" ( (binary_expression "(uVar9 & 3) << 3" (parenthesized_expression "(uVar9 & 3)" ( (binary_expression "uVar9 & 3" identifier & number_literal) )) << number_literal) ))) | (subscript_expression "local_40[(int)param_3 >> 2]" identifier [ (binary_expression "(int)param_3 >> 2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ]))) ;) (expression_statement "FUN_0005a298(puVar15,puVar15,param_1 + 0x24);" (call_expression "FUN_0005a298(puVar15,puVar15,param_1 + 0x24)" identifier (argument_list "(puVar15,puVar15,param_1 + 0x24)" ( identifier , identifier , (binary_expression "param_1 + 0x24" identifier + number_literal) ))) ;) (expression_statement "uVar14 = *(uint *)(param_1 + 0x10);" (assignment_expression "uVar14 = *(uint *)(param_1 + 0x10)" identifier = (pointer_expression "*(uint *)(param_1 + 0x10)" * (cast_expression "(uint *)(param_1 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar20 = *(uint *)(param_1 + 0x14);" (assignment_expression "uVar20 = *(uint *)(param_1 + 0x14)" identifier = (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar21 = *(uint *)(param_1 + 0x18)" identifier = (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar27 = *(uint *)(param_1 + 0x1c);" (assignment_expression "uVar27 = *(uint *)(param_1 + 0x1c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x1c)" * (cast_expression "(uint *)(param_1 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "iVar22 = *piVar19;" (assignment_expression "iVar22 = *piVar19" identifier = (pointer_expression "*piVar19" * identifier)) ;) (expression_statement "uVar1 = ((ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20) +\n          (ulonglong)local_40[0] * (ulonglong)uVar20;" (assignment_expression "uVar1 = ((ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20) +\n          (ulonglong)local_40[0] * (ulonglong)uVar20" identifier = (binary_expression "((ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20) +\n          (ulonglong)local_40[0] * (ulonglong)uVar20" (parenthesized_expression "((ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20)" ( (binary_expression "(ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20" (binary_expression "(ulonglong)local_40[0] * (ulonglong)uVar14" (cast_expression "(ulonglong)local_40[0]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) * (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) )) + (binary_expression "(ulonglong)local_40[0] * (ulonglong)uVar20" (cast_expression "(ulonglong)local_40[0]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) * (cast_expression "(ulonglong)uVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier)))) ;) (expression_statement "uVar2 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar21;" (assignment_expression "uVar2 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar21" identifier = (binary_expression "(uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar21" (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )) + (binary_expression "(ulonglong)local_40[0] * (ulonglong)uVar21" (cast_expression "(ulonglong)local_40[0]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) * (cast_expression "(ulonglong)uVar21" ( (type_descriptor "ulonglong" type_identifier) ) identifier)))) ;) (expression_statement "lVar3 = (uVar1 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[1];" (assignment_expression "lVar3 = (uVar1 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[1]" identifier = (binary_expression "(uVar1 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[1]" (parenthesized_expression "(uVar1 & 0xffffffff)" ( (binary_expression "uVar1 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar14 * (ulonglong)local_40[1]" (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[1]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[1]" identifier [ number_literal ]))))) ;) (expression_statement "uVar29 = (uint)((ulonglong)lVar3 >> 0x20);" (assignment_expression "uVar29 = (uint)((ulonglong)lVar3 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar3 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar3 >> 0x20)" ( (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar9 = (int)uVar2 + uVar29;" (assignment_expression "uVar9 = (int)uVar2 + uVar29" identifier = (binary_expression "(int)uVar2 + uVar29" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "uVar1 = (uVar2 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar27;" (assignment_expression "uVar1 = (uVar2 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar27" identifier = (binary_expression "(uVar2 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar27" (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )) + (binary_expression "(ulonglong)local_40[0] * (ulonglong)uVar27" (cast_expression "(ulonglong)local_40[0]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) * (cast_expression "(ulonglong)uVar27" ( (type_descriptor "ulonglong" type_identifier) ) identifier)))) ;) (expression_statement "uVar2 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[1];" (assignment_expression "uVar2 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[1]" identifier = (binary_expression "(ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[1]" (cast_expression "(ulonglong)CONCAT14(uVar9 < uVar29,uVar9)" ( (type_descriptor "ulonglong" type_identifier) ) (call_expression "CONCAT14(uVar9 < uVar29,uVar9)" identifier (argument_list "(uVar9 < uVar29,uVar9)" ( (binary_expression "uVar9 < uVar29" identifier < identifier) , identifier )))) + (binary_expression "(ulonglong)uVar20 * (ulonglong)local_40[1]" (cast_expression "(ulonglong)uVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[1]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[1]" identifier [ number_literal ]))))) ;) (expression_statement "uVar4 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)*(uint *)(param_1 + 0x20);" (assignment_expression "uVar4 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)*(uint *)(param_1 + 0x20)" identifier = (binary_expression "(uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)*(uint *)(param_1 + 0x20)" (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )) + (binary_expression "(ulonglong)local_40[0] * (ulonglong)*(uint *)(param_1 + 0x20)" (binary_expression "(ulonglong)local_40[0] * (ulonglong)" (cast_expression "(ulonglong)local_40[0]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) * (parenthesized_expression "(ulonglong)" ( identifier ))) * (cast_expression "(uint *)(param_1 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))))) ;) (expression_statement "uVar1 = (uVar1 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[1] + (uVar2 >> 0x20);" (assignment_expression "uVar1 = (uVar1 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[1] + (uVar2 >> 0x20)" identifier = (binary_expression "(uVar1 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[1] + (uVar2 >> 0x20)" (binary_expression "(uVar1 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[1]" (parenthesized_expression "(uVar1 & 0xffffffff)" ( (binary_expression "uVar1 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar21 * (ulonglong)local_40[1]" (cast_expression "(ulonglong)uVar21" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[1]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[1]" identifier [ number_literal ])))) + (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "lVar5 = (uVar2 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[2];" (assignment_expression "lVar5 = (uVar2 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[2]" identifier = (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[2]" (parenthesized_expression "(uVar2 & 0xffffffff)" ( (binary_expression "uVar2 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar14 * (ulonglong)local_40[2]" (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[2]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[2]" identifier [ number_literal ]))))) ;) (expression_statement "uVar29 = (uint)((ulonglong)lVar5 >> 0x20);" (assignment_expression "uVar29 = (uint)((ulonglong)lVar5 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar5 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar5 >> 0x20)" ( (binary_expression "(ulonglong)lVar5 >> 0x20" (cast_expression "(ulonglong)lVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar9 = (int)uVar1 + uVar29;" (assignment_expression "uVar9 = (int)uVar1 + uVar29" identifier = (binary_expression "(int)uVar1 + uVar29" (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[1] + (uVar1 >> 0x20);" (assignment_expression "uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[1] + (uVar1 >> 0x20)" identifier = (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[1] + (uVar1 >> 0x20)" (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[1]" (parenthesized_expression "(uVar4 & 0xffffffff)" ( (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar27 * (ulonglong)local_40[1]" (cast_expression "(ulonglong)uVar27" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[1]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[1]" identifier [ number_literal ])))) + (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[2];" (assignment_expression "uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[2]" identifier = (binary_expression "(ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[2]" (cast_expression "(ulonglong)CONCAT14(uVar9 < uVar29,uVar9)" ( (type_descriptor "ulonglong" type_identifier) ) (call_expression "CONCAT14(uVar9 < uVar29,uVar9)" identifier (argument_list "(uVar9 < uVar29,uVar9)" ( (binary_expression "uVar9 < uVar29" identifier < identifier) , identifier )))) + (binary_expression "(ulonglong)uVar20 * (ulonglong)local_40[2]" (cast_expression "(ulonglong)uVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[2]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[2]" identifier [ number_literal ]))))) ;) (expression_statement "local_70 = uVar1 & 0xffffffff;" (assignment_expression "local_70 = uVar1 & 0xffffffff" identifier = (binary_expression "uVar1 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "uVar4 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1] +\n          (uVar2 >> 0x20);" (assignment_expression "uVar4 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1] +\n          (uVar2 >> 0x20)" identifier = (binary_expression "(uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1] +\n          (uVar2 >> 0x20)" (binary_expression "(uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1]" (parenthesized_expression "(uVar4 >> 0x20)" ( (binary_expression "uVar4 >> 0x20" identifier >> number_literal) )) + (binary_expression "(ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1]" (binary_expression "(ulonglong)*(uint *)(param_1 + 0x20)" (parenthesized_expression "(ulonglong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) * (cast_expression "(ulonglong)local_40[1]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[1]" identifier [ number_literal ])))) + (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "lVar6 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[3];" (assignment_expression "lVar6 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[3]" identifier = (binary_expression "local_70 + (ulonglong)uVar14 * (ulonglong)local_40[3]" identifier + (binary_expression "(ulonglong)uVar14 * (ulonglong)local_40[3]" (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[3]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[3]" identifier [ number_literal ]))))) ;) (expression_statement "uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[2] + (uVar1 >> 0x20);" (assignment_expression "uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[2] + (uVar1 >> 0x20)" identifier = (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[2] + (uVar1 >> 0x20)" (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[2]" (parenthesized_expression "(uVar2 & 0xffffffff)" ( (binary_expression "uVar2 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar21 * (ulonglong)local_40[2]" (cast_expression "(ulonglong)uVar21" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[2]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[2]" identifier [ number_literal ])))) + (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "local_78 = (uint)((ulonglong)lVar6 >> 0x20);" (assignment_expression "local_78 = (uint)((ulonglong)lVar6 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar6 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar6 >> 0x20)" ( (binary_expression "(ulonglong)lVar6 >> 0x20" (cast_expression "(ulonglong)lVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar9 = (int)uVar1 + local_78;" (assignment_expression "uVar9 = (int)uVar1 + local_78" identifier = (binary_expression "(int)uVar1 + local_78" (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[2] + (uVar1 >> 0x20);" (assignment_expression "uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[2] + (uVar1 >> 0x20)" identifier = (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[2] + (uVar1 >> 0x20)" (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[2]" (parenthesized_expression "(uVar4 & 0xffffffff)" ( (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar27 * (ulonglong)local_40[2]" (cast_expression "(ulonglong)uVar27" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[2]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[2]" identifier [ number_literal ])))) + (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar1 = (ulonglong)CONCAT14(uVar9 < local_78,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[3];" (assignment_expression "uVar1 = (ulonglong)CONCAT14(uVar9 < local_78,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[3]" identifier = (binary_expression "(ulonglong)CONCAT14(uVar9 < local_78,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[3]" (cast_expression "(ulonglong)CONCAT14(uVar9 < local_78,uVar9)" ( (type_descriptor "ulonglong" type_identifier) ) (call_expression "CONCAT14(uVar9 < local_78,uVar9)" identifier (argument_list "(uVar9 < local_78,uVar9)" ( (binary_expression "uVar9 < local_78" identifier < identifier) , identifier )))) + (binary_expression "(ulonglong)uVar20 * (ulonglong)local_40[3]" (cast_expression "(ulonglong)uVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[3]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[3]" identifier [ number_literal ]))))) ;) (expression_statement "local_70 = uVar1 & 0xffffffff;" (assignment_expression "local_70 = uVar1 & 0xffffffff" identifier = (binary_expression "uVar1 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[3] + (uVar1 >> 0x20);" (assignment_expression "uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[3] + (uVar1 >> 0x20)" identifier = (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[3] + (uVar1 >> 0x20)" (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[3]" (parenthesized_expression "(uVar2 & 0xffffffff)" ( (binary_expression "uVar2 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar21 * (ulonglong)local_40[3]" (cast_expression "(ulonglong)uVar21" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[3]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[3]" identifier [ number_literal ])))) + (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar2 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2] +\n          (uVar2 >> 0x20);" (assignment_expression "uVar2 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2] +\n          (uVar2 >> 0x20)" identifier = (binary_expression "(uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2] +\n          (uVar2 >> 0x20)" (binary_expression "(uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2]" (parenthesized_expression "(uVar4 >> 0x20)" ( (binary_expression "uVar4 >> 0x20" identifier >> number_literal) )) + (binary_expression "(ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2]" (binary_expression "(ulonglong)*(uint *)(param_1 + 0x20)" (parenthesized_expression "(ulonglong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) * (cast_expression "(ulonglong)local_40[2]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[2]" identifier [ number_literal ])))) + (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "lVar7 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[4];" (assignment_expression "lVar7 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[4]" identifier = (binary_expression "local_70 + (ulonglong)uVar14 * (ulonglong)local_40[4]" identifier + (binary_expression "(ulonglong)uVar14 * (ulonglong)local_40[4]" (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[4]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[4]" identifier [ number_literal ]))))) ;) (expression_statement "uVar29 = (uint)((ulonglong)lVar7 >> 0x20);" (assignment_expression "uVar29 = (uint)((ulonglong)lVar7 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar7 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar7 >> 0x20)" ( (binary_expression "(ulonglong)lVar7 >> 0x20" (cast_expression "(ulonglong)lVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar9 = (int)uVar1 + uVar29;" (assignment_expression "uVar9 = (int)uVar1 + uVar29" identifier = (binary_expression "(int)uVar1 + uVar29" (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "uVar4 = (uVar2 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[3] + (uVar1 >> 0x20);" (assignment_expression "uVar4 = (uVar2 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[3] + (uVar1 >> 0x20)" identifier = (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[3] + (uVar1 >> 0x20)" (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[3]" (parenthesized_expression "(uVar2 & 0xffffffff)" ( (binary_expression "uVar2 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar27 * (ulonglong)local_40[3]" (cast_expression "(ulonglong)uVar27" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[3]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[3]" identifier [ number_literal ])))) + (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar18 = (uint)(uVar4 >> 0x20);" (assignment_expression "uVar18 = (uint)(uVar4 >> 0x20)" identifier = (call_expression "(uint)(uVar4 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 >> 0x20)" ( (binary_expression "uVar4 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[4];" (assignment_expression "uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[4]" identifier = (binary_expression "(ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[4]" (cast_expression "(ulonglong)CONCAT14(uVar9 < uVar29,uVar9)" ( (type_descriptor "ulonglong" type_identifier) ) (call_expression "CONCAT14(uVar9 < uVar29,uVar9)" identifier (argument_list "(uVar9 < uVar29,uVar9)" ( (binary_expression "uVar9 < uVar29" identifier < identifier) , identifier )))) + (binary_expression "(ulonglong)uVar20 * (ulonglong)local_40[4]" (cast_expression "(ulonglong)uVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[4]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[4]" identifier [ number_literal ]))))) ;) (expression_statement "local_4c = (uint)uVar1;" (assignment_expression "local_4c = (uint)uVar1" identifier = (cast_expression "(uint)uVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "lVar8 = (uVar2 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[3];" (assignment_expression "lVar8 = (uVar2 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[3]" identifier = (binary_expression "(uVar2 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[3]" (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )) + (binary_expression "(ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[3]" (binary_expression "(ulonglong)*(uint *)(param_1 + 0x20)" (parenthesized_expression "(ulonglong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) * (cast_expression "(ulonglong)local_40[3]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[3]" identifier [ number_literal ]))))) ;) (expression_statement "local_70._4_4_ = (uint)lVar7;" (assignment_expression "local_70._4_4_ = (uint)lVar7" (field_expression "local_70._4_4_" identifier . field_identifier) = (cast_expression "(uint)lVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar13 = (local_70._4_4_ >> 2) * 4;" (assignment_expression "uVar13 = (local_70._4_4_ >> 2) * 4" identifier = (binary_expression "(local_70._4_4_ >> 2) * 4" (parenthesized_expression "(local_70._4_4_ >> 2)" ( (binary_expression "local_70._4_4_ >> 2" (field_expression "local_70._4_4_" identifier . field_identifier) >> number_literal) )) * number_literal)) ;) (expression_statement "uVar20 = uVar13 + (local_70._4_4_ >> 2 | local_4c << 0x1e);" (assignment_expression "uVar20 = uVar13 + (local_70._4_4_ >> 2 | local_4c << 0x1e)" identifier = (binary_expression "uVar13 + (local_70._4_4_ >> 2 | local_4c << 0x1e)" identifier + (parenthesized_expression "(local_70._4_4_ >> 2 | local_4c << 0x1e)" ( (binary_expression "local_70._4_4_ >> 2 | local_4c << 0x1e" (binary_expression "local_70._4_4_ >> 2" (field_expression "local_70._4_4_" identifier . field_identifier) >> number_literal) | (binary_expression "local_4c << 0x1e" identifier << number_literal)) )))) ;) (expression_statement "uVar9 = uVar18 + (int)lVar8;" (assignment_expression "uVar9 = uVar18 + (int)lVar8" identifier = (binary_expression "uVar18 + (int)lVar8" identifier + (cast_expression "(int)lVar8" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "lVar7 = (uVar4 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[4] + (uVar1 >> 0x20);" (assignment_expression "lVar7 = (uVar4 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[4] + (uVar1 >> 0x20)" identifier = (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[4] + (uVar1 >> 0x20)" (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[4]" (parenthesized_expression "(uVar4 & 0xffffffff)" ( (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar21 * (ulonglong)local_40[4]" (cast_expression "(ulonglong)uVar21" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[4]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[4]" identifier [ number_literal ])))) + (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar16 = (uint)lVar7;" (assignment_expression "uVar16 = (uint)lVar7" identifier = (cast_expression "(uint)lVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar29 = (uint)((ulonglong)lVar7 >> 0x20);" (assignment_expression "uVar29 = (uint)((ulonglong)lVar7 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar7 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar7 >> 0x20)" ( (binary_expression "(ulonglong)lVar7 >> 0x20" (cast_expression "(ulonglong)lVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_64 = (uint)((ulonglong)local_40[0] * (ulonglong)uVar14);" (assignment_expression "local_64 = (uint)((ulonglong)local_40[0] * (ulonglong)uVar14)" identifier = (call_expression "(uint)((ulonglong)local_40[0] * (ulonglong)uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)local_40[0] * (ulonglong)uVar14)" ( (binary_expression "(ulonglong)local_40[0] * (ulonglong)uVar14" (cast_expression "(ulonglong)local_40[0]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) * (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )))) ;) (expression_statement "uVar21 = uVar20 + local_64;" (assignment_expression "uVar21 = uVar20 + local_64" identifier = (binary_expression "uVar20 + local_64" identifier + identifier)) ;) (expression_statement "lVar7 = (ulonglong)uVar9 + (ulonglong)uVar27 * (ulonglong)local_40[4];" (assignment_expression "lVar7 = (ulonglong)uVar9 + (ulonglong)uVar27 * (ulonglong)local_40[4]" identifier = (binary_expression "(ulonglong)uVar9 + (ulonglong)uVar27 * (ulonglong)local_40[4]" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) + (binary_expression "(ulonglong)uVar27 * (ulonglong)local_40[4]" (cast_expression "(ulonglong)uVar27" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[4]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[4]" identifier [ number_literal ]))))) ;) (expression_statement "uVar14 = (uint)(uVar21 < local_64);" (assignment_expression "uVar14 = (uint)(uVar21 < local_64)" identifier = (call_expression "(uint)(uVar21 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar21 < local_64)" ( (binary_expression "uVar21 < local_64" identifier < identifier) )))) ;) (expression_statement "local_5c = (int)lVar5;" (assignment_expression "local_5c = (int)lVar5" identifier = (cast_expression "(int)lVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_54 = (int)lVar3;" (assignment_expression "local_54 = (int)lVar3" identifier = (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar27 = uVar29 + (int)lVar7;" (assignment_expression "uVar27 = uVar29 + (int)lVar7" identifier = (binary_expression "uVar29 + (int)lVar7" identifier + (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar17 = uVar14 + local_54;" (assignment_expression "uVar17 = uVar14 + local_54" identifier = (binary_expression "uVar14 + local_54" identifier + identifier)) ;) (expression_statement "uVar18 = local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar27 < uVar29) + (int)((ulonglong)lVar7 >> 0x20);" (assignment_expression "uVar18 = local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar27 < uVar29) + (int)((ulonglong)lVar7 >> 0x20)" identifier = (binary_expression "local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar27 < uVar29) + (int)((ulonglong)lVar7 >> 0x20)" (binary_expression "local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar27 < uVar29)" (binary_expression "local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20)" (binary_expression "local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18)" (binary_expression "local_40[4] * *(int *)(param_1 + 0x20)" (subscript_expression "local_40[4]" identifier [ number_literal ]) * (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) + (call_expression "(uint)(uVar9 < uVar18)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < uVar18)" ( (binary_expression "uVar9 < uVar18" identifier < identifier) )))) + (cast_expression "(int)((ulonglong)lVar8 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar8 >> 0x20)" ( (binary_expression "(ulonglong)lVar8 >> 0x20" (cast_expression "(ulonglong)lVar8" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) + (call_expression "(uint)(uVar27 < uVar29)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar27 < uVar29)" ( (binary_expression "uVar27 < uVar29" identifier < identifier) )))) + (cast_expression "(int)((ulonglong)lVar7 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar7 >> 0x20)" ( (binary_expression "(ulonglong)lVar7 >> 0x20" (cast_expression "(ulonglong)lVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))))) ;) (expression_statement "lVar3 = (ulonglong)((uint)(uVar20 < uVar13) + (local_4c & 3)) +\n          (ulonglong)(local_4c >> 2 | uVar16 * 0x40000000) * 5;" (assignment_expression "lVar3 = (ulonglong)((uint)(uVar20 < uVar13) + (local_4c & 3)) +\n          (ulonglong)(local_4c >> 2 | uVar16 * 0x40000000) * 5" identifier = (binary_expression "(ulonglong)((uint)(uVar20 < uVar13) + (local_4c & 3)) +\n          (ulonglong)(local_4c >> 2 | uVar16 * 0x40000000) * 5" (call_expression "(ulonglong)((uint)(uVar20 < uVar13) + (local_4c & 3))" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "((uint)(uVar20 < uVar13) + (local_4c & 3))" ( (binary_expression "(uint)(uVar20 < uVar13) + (local_4c & 3)" (call_expression "(uint)(uVar20 < uVar13)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar20 < uVar13)" ( (binary_expression "uVar20 < uVar13" identifier < identifier) ))) + (parenthesized_expression "(local_4c & 3)" ( (binary_expression "local_4c & 3" identifier & number_literal) ))) ))) + (binary_expression "(ulonglong)(local_4c >> 2 | uVar16 * 0x40000000) * 5" (call_expression "(ulonglong)(local_4c >> 2 | uVar16 * 0x40000000)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(local_4c >> 2 | uVar16 * 0x40000000)" ( (binary_expression "local_4c >> 2 | uVar16 * 0x40000000" (binary_expression "local_4c >> 2" identifier >> number_literal) | (binary_expression "uVar16 * 0x40000000" identifier * number_literal)) ))) * number_literal))) ;) (expression_statement "puVar30 = (undefined1 *)((ulonglong)lVar3 >> 0x20);" (assignment_expression "puVar30 = (undefined1 *)((ulonglong)lVar3 >> 0x20)" identifier = (cast_expression "(undefined1 *)((ulonglong)lVar3 >> 0x20)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)lVar3 >> 0x20)" ( (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar20 = uVar17 + (int)lVar3;" (assignment_expression "uVar20 = uVar17 + (int)lVar3" identifier = (binary_expression "uVar17 + (int)lVar3" identifier + (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar29 = (uint)(uVar20 < uVar17) + (uint)(uVar17 < uVar14);" (assignment_expression "uVar29 = (uint)(uVar20 < uVar17) + (uint)(uVar17 < uVar14)" identifier = (binary_expression "(uint)(uVar20 < uVar17) + (uint)(uVar17 < uVar14)" (call_expression "(uint)(uVar20 < uVar17)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar20 < uVar17)" ( (binary_expression "uVar20 < uVar17" identifier < identifier) ))) + (call_expression "(uint)(uVar17 < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar17 < uVar14)" ( (binary_expression "uVar17 < uVar14" identifier < identifier) ))))) ;) (expression_statement "local_74 = (uint)lVar6;" (assignment_expression "local_74 = (uint)lVar6" identifier = (cast_expression "(uint)lVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar1 = ZEXT48(puVar30) + (ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000) * 5;" (assignment_expression "uVar1 = ZEXT48(puVar30) + (ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000) * 5" identifier = (binary_expression "ZEXT48(puVar30) + (ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000) * 5" (call_expression "ZEXT48(puVar30)" identifier (argument_list "(puVar30)" ( identifier ))) + (binary_expression "(ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000) * 5" (call_expression "(ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar16 >> 2 | uVar27 * 0x40000000)" ( (binary_expression "uVar16 >> 2 | uVar27 * 0x40000000" (binary_expression "uVar16 >> 2" identifier >> number_literal) | (binary_expression "uVar27 * 0x40000000" identifier * number_literal)) ))) * number_literal))) ;) (expression_statement "uVar9 = (uVar18 >> 4) * 0x19;" (assignment_expression "uVar9 = (uVar18 >> 4) * 0x19" identifier = (binary_expression "(uVar18 >> 4) * 0x19" (parenthesized_expression "(uVar18 >> 4)" ( (binary_expression "uVar18 >> 4" identifier >> number_literal) )) * number_literal)) ;) (expression_statement "uVar21 = uVar9 + uVar21;" (assignment_expression "uVar21 = uVar9 + uVar21" identifier = (binary_expression "uVar9 + uVar21" identifier + identifier)) ;) (expression_statement "uVar14 = uVar29 + (int)uVar1;" (assignment_expression "uVar14 = uVar29 + (int)uVar1" identifier = (binary_expression "uVar29 + (int)uVar1" identifier + (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*(uint *)(param_1 + 0x24) = uVar21;" (assignment_expression "*(uint *)(param_1 + 0x24) = uVar21" (pointer_expression "*(uint *)(param_1 + 0x24)" * (cast_expression "(uint *)(param_1 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar9 = (uint)(uVar21 < uVar9);" (assignment_expression "uVar9 = (uint)(uVar21 < uVar9)" identifier = (call_expression "(uint)(uVar21 < uVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar21 < uVar9)" ( (binary_expression "uVar21 < uVar9" identifier < identifier) )))) ;) (expression_statement "uVar20 = uVar9 + uVar20;" (assignment_expression "uVar20 = uVar9 + uVar20" identifier = (binary_expression "uVar9 + uVar20" identifier + identifier)) ;) (expression_statement "*(uint *)(param_1 + 0x28) = uVar20;" (assignment_expression "*(uint *)(param_1 + 0x28) = uVar20" (pointer_expression "*(uint *)(param_1 + 0x28)" * (cast_expression "(uint *)(param_1 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar20 = (uint)(uVar20 < uVar9);" (assignment_expression "uVar20 = (uint)(uVar20 < uVar9)" identifier = (call_expression "(uint)(uVar20 < uVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar20 < uVar9)" ( (binary_expression "uVar20 < uVar9" identifier < identifier) )))) ;) (expression_statement "lVar3 = (uVar1 >> 0x20) + (ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000) * 5;" (assignment_expression "lVar3 = (uVar1 >> 0x20) + (ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000) * 5" identifier = (binary_expression "(uVar1 >> 0x20) + (ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000) * 5" (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )) + (binary_expression "(ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000) * 5" (call_expression "(ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar27 >> 2 | uVar18 * 0x40000000)" ( (binary_expression "uVar27 >> 2 | uVar18 * 0x40000000" (binary_expression "uVar27 >> 2" identifier >> number_literal) | (binary_expression "uVar18 * 0x40000000" identifier * number_literal)) ))) * number_literal))) ;) (expression_statement "uVar21 = (uint)(uVar14 + local_5c < uVar14) + (uint)(uVar14 < uVar29);" (assignment_expression "uVar21 = (uint)(uVar14 + local_5c < uVar14) + (uint)(uVar14 < uVar29)" identifier = (binary_expression "(uint)(uVar14 + local_5c < uVar14) + (uint)(uVar14 < uVar29)" (call_expression "(uint)(uVar14 + local_5c < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar14 + local_5c < uVar14)" ( (binary_expression "uVar14 + local_5c < uVar14" (binary_expression "uVar14 + local_5c" identifier + identifier) < identifier) ))) + (call_expression "(uint)(uVar14 < uVar29)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar14 < uVar29)" ( (binary_expression "uVar14 < uVar29" identifier < identifier) ))))) ;) (expression_statement "uVar9 = uVar20 + uVar14 + local_5c;" (assignment_expression "uVar9 = uVar20 + uVar14 + local_5c" identifier = (binary_expression "uVar20 + uVar14 + local_5c" (binary_expression "uVar20 + uVar14" identifier + identifier) + identifier)) ;) (expression_statement "*(uint *)(param_1 + 0x2c) = uVar9;" (assignment_expression "*(uint *)(param_1 + 0x2c) = uVar9" (pointer_expression "*(uint *)(param_1 + 0x2c)" * (cast_expression "(uint *)(param_1 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar29 = (uint)(uVar9 < uVar20);" (assignment_expression "uVar29 = (uint)(uVar9 < uVar20)" identifier = (call_expression "(uint)(uVar9 < uVar20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < uVar20)" ( (binary_expression "uVar9 < uVar20" identifier < identifier) )))) ;) (expression_statement "uVar9 = (int)lVar3 + local_74;" (assignment_expression "uVar9 = (int)lVar3 + local_74" identifier = (binary_expression "(int)lVar3 + local_74" (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "uVar14 = uVar21 + uVar9;" (assignment_expression "uVar14 = uVar21 + uVar9" identifier = (binary_expression "uVar21 + uVar9" identifier + identifier)) ;) (expression_statement "uVar9 = (uint)(uVar9 < local_74);" (assignment_expression "uVar9 = (uint)(uVar9 < local_74)" identifier = (call_expression "(uint)(uVar9 < local_74)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < local_74)" ( (binary_expression "uVar9 < local_74" identifier < identifier) )))) ;) (expression_statement "uVar20 = uVar29 + uVar14;" (assignment_expression "uVar20 = uVar29 + uVar14" identifier = (binary_expression "uVar29 + uVar14" identifier + identifier)) ;) (expression_statement "*(uint *)(param_1 + 0x30) = uVar20;" (assignment_expression "*(uint *)(param_1 + 0x30) = uVar20" (pointer_expression "*(uint *)(param_1 + 0x30)" * (cast_expression "(uint *)(param_1 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar11 = (undefined1 *)\n            ((uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29));" (assignment_expression "puVar11 = (undefined1 *)\n            ((uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29))" identifier = (cast_expression "(undefined1 *)\n            ((uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29))" ( (binary_expression "(uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29)" (binary_expression "(uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9" (binary_expression "(uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21)" (binary_expression "(uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20)" (binary_expression "(uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3)" (binary_expression "(uVar18 * 0x10000000 >> 0x1e) * 5" (parenthesized_expression "(uVar18 * 0x10000000 >> 0x1e)" ( (binary_expression "uVar18 * 0x10000000 >> 0x1e" (binary_expression "uVar18 * 0x10000000" identifier * number_literal) >> number_literal) )) * number_literal) + (parenthesized_expression "(local_70._4_4_ & 3)" ( (binary_expression "local_70._4_4_ & 3" (field_expression "local_70._4_4_" identifier . field_identifier) & number_literal) ))) + (cast_expression "(int)((ulonglong)lVar3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar3 >> 0x20)" ( (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) + (parenthesized_expression "(uVar14 < uVar21)" ( (binary_expression "uVar14 < uVar21" identifier < identifier) ))) + identifier) + (call_expression "(uint)(uVar20 < uVar29)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar20 < uVar29)" ( (binary_expression "uVar20 < uVar29" identifier < identifier) )))) )))) ;) (expression_statement "*(undefined1 **)(param_1 + 0x34) = puVar11;" (assignment_expression "*(undefined1 **)(param_1 + 0x34) = puVar11" (pointer_expression "*(undefined1 **)(param_1 + 0x34)" * (cast_expression "(undefined1 **)(param_1 + 0x34)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_40[5] == iVar22) {\n    return;\n  }" if (parenthesized_expression "(local_40[5] == iVar22)" ( (binary_expression "local_40[5] == iVar22" (subscript_expression "local_40[5]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar28 = FUN_0005ab78;" (assignment_expression "pcVar28 = FUN_0005ab78" identifier = identifier) ;) (expression_statement "puVar24 = PTR___stack_chk_fail_000b0c70;" (assignment_expression "puVar24 = PTR___stack_chk_fail_000b0c70" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000b0c70)();" (call_expression "(*(code *)PTR___stack_chk_fail_000b0c70)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000b0c70)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000b0c70" * (cast_expression "(code *)PTR___stack_chk_fail_000b0c70" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar26 = auStack_90;" (assignment_expression "puVar26 = auStack_90" identifier = identifier) ;) (while_statement "while( true ) {\n    puVar12 = puVar11;\n    iVar22 = *(int *)(puVar12 + 0x48);\n    *(int *)(puVar26 + -0xc) = (int)lVar3;\n    piVar19 = *(int **)(puVar24 + 0x56124);\n    *(undefined **)(puVar26 + -0x30) = puVar24 + 0x5d5d8;\n    *(undefined1 **)(puVar26 + -8) = puVar30;\n    *(int *)(puVar26 + -0x10) = (int)((ulonglong)lVar3 >> 0x20);\n    lVar3 = CONCAT44(uVar9,piVar19);\n    *(code **)(puVar26 + -4) = pcVar28;\n    *(int *)(puVar26 + -0x14) = *piVar19;\n    if (iVar22 != 0) {\n      FUN_0005a528();\n    }\n    *(undefined4 *)(puVar26 + -0x28) = 0;\n    *(undefined4 *)(puVar26 + -0x24) = 0;\n    *(undefined4 *)(puVar26 + -0x20) = 0;\n    *(undefined4 *)(puVar26 + -0x1c) = 0;\n    *(undefined4 *)(puVar26 + -0x18) = 0;\n    FUN_0005a4e8(puVar26 + -0x28,puVar12,0x10);\n    uVar14 = (*(uint *)(puVar12 + 0x34) >> 2) * 5;\n    uVar21 = *(int *)(puVar12 + 0x24) + uVar14;\n    uVar20 = (uint)(uVar21 < uVar14);\n    uVar16 = uVar20 + *(int *)(puVar12 + 0x28);\n    uVar14 = (uint)(uVar21 + 5 < uVar21);\n    uVar20 = (uint)(uVar16 < uVar20);\n    uVar27 = uVar20 + *(int *)(puVar12 + 0x2c);\n    uVar29 = (uint)(uVar14 + uVar16 < uVar14);\n    uVar14 = (uint)(uVar27 < uVar20);\n    uVar13 = uVar14 + *(int *)(puVar12 + 0x30);\n    uVar20 = (uint)(uVar29 + uVar27 < uVar29);\n    iVar22 = (*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14);\n    uVar14 = (iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5;\n    uVar21 = uVar14 + uVar21;\n    uVar14 = (uint)(uVar21 < uVar14);\n    *(uint *)(puVar12 + 0x24) = uVar21;\n    uVar16 = uVar14 + uVar16;\n    uVar14 = (uint)(uVar16 < uVar14);\n    *(uint *)(puVar12 + 0x28) = uVar16;\n    uVar27 = uVar14 + uVar27;\n    uVar14 = (uint)(uVar27 < uVar14);\n    *(uint *)(puVar12 + 0x2c) = uVar27;\n    uVar13 = uVar14 + uVar13;\n    *(uint *)(puVar12 + 0x30) = uVar13;\n    *(uint *)(puVar12 + 0x34) = iVar22 + (uint)(uVar13 < uVar14) & 3;\n    FUN_0005a298();\n    iVar22 = 0;\n    iVar25 = *(int *)(puVar26 + -0x30);\n    do {\n      iVar10 = iVar22 >> 2;\n      uVar14 = iVar22 << 3;\n      puVar11 = (undefined1 *)(uVar9 + iVar22);\n      iVar22 = iVar22 + 1;\n      *puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));\n    } while (iVar22 != 0x10);\n    if (*(int *)(puVar26 + -0x14) == *piVar19) break;\n    pcVar23 = *(code **)(iVar25 + -0x74e0);\n    pcVar28 = (code *)0x5ad34;\n    (*pcVar23)();\n    puVar24 = (undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488);\n    puVar11 = puVar11 + 0x114;\n    uVar9 = uVar14;\n    puVar30 = puVar12;\n    puVar26 = puVar26 + -0x40;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    puVar12 = puVar11;\n    iVar22 = *(int *)(puVar12 + 0x48);\n    *(int *)(puVar26 + -0xc) = (int)lVar3;\n    piVar19 = *(int **)(puVar24 + 0x56124);\n    *(undefined **)(puVar26 + -0x30) = puVar24 + 0x5d5d8;\n    *(undefined1 **)(puVar26 + -8) = puVar30;\n    *(int *)(puVar26 + -0x10) = (int)((ulonglong)lVar3 >> 0x20);\n    lVar3 = CONCAT44(uVar9,piVar19);\n    *(code **)(puVar26 + -4) = pcVar28;\n    *(int *)(puVar26 + -0x14) = *piVar19;\n    if (iVar22 != 0) {\n      FUN_0005a528();\n    }\n    *(undefined4 *)(puVar26 + -0x28) = 0;\n    *(undefined4 *)(puVar26 + -0x24) = 0;\n    *(undefined4 *)(puVar26 + -0x20) = 0;\n    *(undefined4 *)(puVar26 + -0x1c) = 0;\n    *(undefined4 *)(puVar26 + -0x18) = 0;\n    FUN_0005a4e8(puVar26 + -0x28,puVar12,0x10);\n    uVar14 = (*(uint *)(puVar12 + 0x34) >> 2) * 5;\n    uVar21 = *(int *)(puVar12 + 0x24) + uVar14;\n    uVar20 = (uint)(uVar21 < uVar14);\n    uVar16 = uVar20 + *(int *)(puVar12 + 0x28);\n    uVar14 = (uint)(uVar21 + 5 < uVar21);\n    uVar20 = (uint)(uVar16 < uVar20);\n    uVar27 = uVar20 + *(int *)(puVar12 + 0x2c);\n    uVar29 = (uint)(uVar14 + uVar16 < uVar14);\n    uVar14 = (uint)(uVar27 < uVar20);\n    uVar13 = uVar14 + *(int *)(puVar12 + 0x30);\n    uVar20 = (uint)(uVar29 + uVar27 < uVar29);\n    iVar22 = (*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14);\n    uVar14 = (iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5;\n    uVar21 = uVar14 + uVar21;\n    uVar14 = (uint)(uVar21 < uVar14);\n    *(uint *)(puVar12 + 0x24) = uVar21;\n    uVar16 = uVar14 + uVar16;\n    uVar14 = (uint)(uVar16 < uVar14);\n    *(uint *)(puVar12 + 0x28) = uVar16;\n    uVar27 = uVar14 + uVar27;\n    uVar14 = (uint)(uVar27 < uVar14);\n    *(uint *)(puVar12 + 0x2c) = uVar27;\n    uVar13 = uVar14 + uVar13;\n    *(uint *)(puVar12 + 0x30) = uVar13;\n    *(uint *)(puVar12 + 0x34) = iVar22 + (uint)(uVar13 < uVar14) & 3;\n    FUN_0005a298();\n    iVar22 = 0;\n    iVar25 = *(int *)(puVar26 + -0x30);\n    do {\n      iVar10 = iVar22 >> 2;\n      uVar14 = iVar22 << 3;\n      puVar11 = (undefined1 *)(uVar9 + iVar22);\n      iVar22 = iVar22 + 1;\n      *puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));\n    } while (iVar22 != 0x10);\n    if (*(int *)(puVar26 + -0x14) == *piVar19) break;\n    pcVar23 = *(code **)(iVar25 + -0x74e0);\n    pcVar28 = (code *)0x5ad34;\n    (*pcVar23)();\n    puVar24 = (undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488);\n    puVar11 = puVar11 + 0x114;\n    uVar9 = uVar14;\n    puVar30 = puVar12;\n    puVar26 = puVar26 + -0x40;\n  }" { (expression_statement "puVar12 = puVar11;" (assignment_expression "puVar12 = puVar11" identifier = identifier) ;) (expression_statement "iVar22 = *(int *)(puVar12 + 0x48);" (assignment_expression "iVar22 = *(int *)(puVar12 + 0x48)" identifier = (pointer_expression "*(int *)(puVar12 + 0x48)" * (cast_expression "(int *)(puVar12 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x48)" ( (binary_expression "puVar12 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar26 + -0xc) = (int)lVar3;" (assignment_expression "*(int *)(puVar26 + -0xc) = (int)lVar3" (pointer_expression "*(int *)(puVar26 + -0xc)" * (cast_expression "(int *)(puVar26 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0xc)" ( (binary_expression "puVar26 + -0xc" identifier + number_literal) )))) = (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar19 = *(int **)(puVar24 + 0x56124);" (assignment_expression "piVar19 = *(int **)(puVar24 + 0x56124)" identifier = (pointer_expression "*(int **)(puVar24 + 0x56124)" * (cast_expression "(int **)(puVar24 + 0x56124)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x56124)" ( (binary_expression "puVar24 + 0x56124" identifier + number_literal) ))))) ;) (expression_statement "*(undefined **)(puVar26 + -0x30) = puVar24 + 0x5d5d8;" (assignment_expression "*(undefined **)(puVar26 + -0x30) = puVar24 + 0x5d5d8" (pointer_expression "*(undefined **)(puVar26 + -0x30)" * (cast_expression "(undefined **)(puVar26 + -0x30)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0x30)" ( (binary_expression "puVar26 + -0x30" identifier + number_literal) )))) = (binary_expression "puVar24 + 0x5d5d8" identifier + number_literal)) ;) (expression_statement "*(undefined1 **)(puVar26 + -8) = puVar30;" (assignment_expression "*(undefined1 **)(puVar26 + -8) = puVar30" (pointer_expression "*(undefined1 **)(puVar26 + -8)" * (cast_expression "(undefined1 **)(puVar26 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -8)" ( (binary_expression "puVar26 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar26 + -0x10) = (int)((ulonglong)lVar3 >> 0x20);" (assignment_expression "*(int *)(puVar26 + -0x10) = (int)((ulonglong)lVar3 >> 0x20)" (pointer_expression "*(int *)(puVar26 + -0x10)" * (cast_expression "(int *)(puVar26 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x10)" ( (binary_expression "puVar26 + -0x10" identifier + number_literal) )))) = (cast_expression "(int)((ulonglong)lVar3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar3 >> 0x20)" ( (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "lVar3 = CONCAT44(uVar9,piVar19);" (assignment_expression "lVar3 = CONCAT44(uVar9,piVar19)" identifier = (call_expression "CONCAT44(uVar9,piVar19)" identifier (argument_list "(uVar9,piVar19)" ( identifier , identifier )))) ;) (expression_statement "*(code **)(puVar26 + -4) = pcVar28;" (assignment_expression "*(code **)(puVar26 + -4) = pcVar28" (pointer_expression "*(code **)(puVar26 + -4)" * (cast_expression "(code **)(puVar26 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -4)" ( (binary_expression "puVar26 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar26 + -0x14) = *piVar19;" (assignment_expression "*(int *)(puVar26 + -0x14) = *piVar19" (pointer_expression "*(int *)(puVar26 + -0x14)" * (cast_expression "(int *)(puVar26 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x14)" ( (binary_expression "puVar26 + -0x14" identifier + number_literal) )))) = (pointer_expression "*piVar19" * identifier)) ;) (if_statement "if (iVar22 != 0) {\n      FUN_0005a528();\n    }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_0005a528();\n    }" { (expression_statement "FUN_0005a528();" (call_expression "FUN_0005a528()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined4 *)(puVar26 + -0x28) = 0;" (assignment_expression "*(undefined4 *)(puVar26 + -0x28) = 0" (pointer_expression "*(undefined4 *)(puVar26 + -0x28)" * (cast_expression "(undefined4 *)(puVar26 + -0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x28)" ( (binary_expression "puVar26 + -0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar26 + -0x24) = 0;" (assignment_expression "*(undefined4 *)(puVar26 + -0x24) = 0" (pointer_expression "*(undefined4 *)(puVar26 + -0x24)" * (cast_expression "(undefined4 *)(puVar26 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x24)" ( (binary_expression "puVar26 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar26 + -0x20) = 0;" (assignment_expression "*(undefined4 *)(puVar26 + -0x20) = 0" (pointer_expression "*(undefined4 *)(puVar26 + -0x20)" * (cast_expression "(undefined4 *)(puVar26 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x20)" ( (binary_expression "puVar26 + -0x20" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar26 + -0x1c) = 0;" (assignment_expression "*(undefined4 *)(puVar26 + -0x1c) = 0" (pointer_expression "*(undefined4 *)(puVar26 + -0x1c)" * (cast_expression "(undefined4 *)(puVar26 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x1c)" ( (binary_expression "puVar26 + -0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar26 + -0x18) = 0;" (assignment_expression "*(undefined4 *)(puVar26 + -0x18) = 0" (pointer_expression "*(undefined4 *)(puVar26 + -0x18)" * (cast_expression "(undefined4 *)(puVar26 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x18)" ( (binary_expression "puVar26 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0005a4e8(puVar26 + -0x28,puVar12,0x10);" (call_expression "FUN_0005a4e8(puVar26 + -0x28,puVar12,0x10)" identifier (argument_list "(puVar26 + -0x28,puVar12,0x10)" ( (binary_expression "puVar26 + -0x28" identifier + number_literal) , identifier , number_literal ))) ;) (expression_statement "uVar14 = (*(uint *)(puVar12 + 0x34) >> 2) * 5;" (assignment_expression "uVar14 = (*(uint *)(puVar12 + 0x34) >> 2) * 5" identifier = (binary_expression "(*(uint *)(puVar12 + 0x34) >> 2) * 5" (parenthesized_expression "(*(uint *)(puVar12 + 0x34) >> 2)" ( (binary_expression "*(uint *)(puVar12 + 0x34) >> 2" (pointer_expression "*(uint *)(puVar12 + 0x34)" * (cast_expression "(uint *)(puVar12 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x34)" ( (binary_expression "puVar12 + 0x34" identifier + number_literal) )))) >> number_literal) )) * number_literal)) ;) (expression_statement "uVar21 = *(int *)(puVar12 + 0x24) + uVar14;" (assignment_expression "uVar21 = *(int *)(puVar12 + 0x24) + uVar14" identifier = (binary_expression "*(int *)(puVar12 + 0x24) + uVar14" (pointer_expression "*(int *)(puVar12 + 0x24)" * (cast_expression "(int *)(puVar12 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x24)" ( (binary_expression "puVar12 + 0x24" identifier + number_literal) )))) + identifier)) ;) (expression_statement "uVar20 = (uint)(uVar21 < uVar14);" (assignment_expression "uVar20 = (uint)(uVar21 < uVar14)" identifier = (call_expression "(uint)(uVar21 < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar21 < uVar14)" ( (binary_expression "uVar21 < uVar14" identifier < identifier) )))) ;) (expression_statement "uVar16 = uVar20 + *(int *)(puVar12 + 0x28);" (assignment_expression "uVar16 = uVar20 + *(int *)(puVar12 + 0x28)" identifier = (binary_expression "uVar20 + *(int *)(puVar12 + 0x28)" identifier + (pointer_expression "*(int *)(puVar12 + 0x28)" * (cast_expression "(int *)(puVar12 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x28)" ( (binary_expression "puVar12 + 0x28" identifier + number_literal) )))))) ;) (expression_statement "uVar14 = (uint)(uVar21 + 5 < uVar21);" (assignment_expression "uVar14 = (uint)(uVar21 + 5 < uVar21)" identifier = (call_expression "(uint)(uVar21 + 5 < uVar21)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar21 + 5 < uVar21)" ( (binary_expression "uVar21 + 5 < uVar21" (binary_expression "uVar21 + 5" identifier + number_literal) < identifier) )))) ;) (expression_statement "uVar20 = (uint)(uVar16 < uVar20);" (assignment_expression "uVar20 = (uint)(uVar16 < uVar20)" identifier = (call_expression "(uint)(uVar16 < uVar20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar16 < uVar20)" ( (binary_expression "uVar16 < uVar20" identifier < identifier) )))) ;) (expression_statement "uVar27 = uVar20 + *(int *)(puVar12 + 0x2c);" (assignment_expression "uVar27 = uVar20 + *(int *)(puVar12 + 0x2c)" identifier = (binary_expression "uVar20 + *(int *)(puVar12 + 0x2c)" identifier + (pointer_expression "*(int *)(puVar12 + 0x2c)" * (cast_expression "(int *)(puVar12 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x2c)" ( (binary_expression "puVar12 + 0x2c" identifier + number_literal) )))))) ;) (expression_statement "uVar29 = (uint)(uVar14 + uVar16 < uVar14);" (assignment_expression "uVar29 = (uint)(uVar14 + uVar16 < uVar14)" identifier = (call_expression "(uint)(uVar14 + uVar16 < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar14 + uVar16 < uVar14)" ( (binary_expression "uVar14 + uVar16 < uVar14" (binary_expression "uVar14 + uVar16" identifier + identifier) < identifier) )))) ;) (expression_statement "uVar14 = (uint)(uVar27 < uVar20);" (assignment_expression "uVar14 = (uint)(uVar27 < uVar20)" identifier = (call_expression "(uint)(uVar27 < uVar20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar27 < uVar20)" ( (binary_expression "uVar27 < uVar20" identifier < identifier) )))) ;) (expression_statement "uVar13 = uVar14 + *(int *)(puVar12 + 0x30);" (assignment_expression "uVar13 = uVar14 + *(int *)(puVar12 + 0x30)" identifier = (binary_expression "uVar14 + *(int *)(puVar12 + 0x30)" identifier + (pointer_expression "*(int *)(puVar12 + 0x30)" * (cast_expression "(int *)(puVar12 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x30)" ( (binary_expression "puVar12 + 0x30" identifier + number_literal) )))))) ;) (expression_statement "uVar20 = (uint)(uVar29 + uVar27 < uVar29);" (assignment_expression "uVar20 = (uint)(uVar29 + uVar27 < uVar29)" identifier = (call_expression "(uint)(uVar29 + uVar27 < uVar29)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar29 + uVar27 < uVar29)" ( (binary_expression "uVar29 + uVar27 < uVar29" (binary_expression "uVar29 + uVar27" identifier + identifier) < identifier) )))) ;) (expression_statement "iVar22 = (*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14);" (assignment_expression "iVar22 = (*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14)" identifier = (binary_expression "(*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14)" (parenthesized_expression "(*(uint *)(puVar12 + 0x34) & 3)" ( (binary_expression "*(uint *)(puVar12 + 0x34) & 3" (pointer_expression "*(uint *)(puVar12 + 0x34)" * (cast_expression "(uint *)(puVar12 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x34)" ( (binary_expression "puVar12 + 0x34" identifier + number_literal) )))) & number_literal) )) + (call_expression "(uint)(uVar13 < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 < uVar14)" ( (binary_expression "uVar13 < uVar14" identifier < identifier) ))))) ;) (expression_statement "uVar14 = (iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5;" (assignment_expression "uVar14 = (iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5" identifier = (binary_expression "(iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5" (parenthesized_expression "(iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2)" ( (binary_expression "iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2" (binary_expression "iVar22 + (uint)(uVar20 + uVar13 < uVar20)" identifier + (call_expression "(uint)(uVar20 + uVar13 < uVar20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar20 + uVar13 < uVar20)" ( (binary_expression "uVar20 + uVar13 < uVar20" (binary_expression "uVar20 + uVar13" identifier + identifier) < identifier) )))) >> number_literal) )) * number_literal)) ;) (expression_statement "uVar21 = uVar14 + uVar21;" (assignment_expression "uVar21 = uVar14 + uVar21" identifier = (binary_expression "uVar14 + uVar21" identifier + identifier)) ;) (expression_statement "uVar14 = (uint)(uVar21 < uVar14);" (assignment_expression "uVar14 = (uint)(uVar21 < uVar14)" identifier = (call_expression "(uint)(uVar21 < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar21 < uVar14)" ( (binary_expression "uVar21 < uVar14" identifier < identifier) )))) ;) (expression_statement "*(uint *)(puVar12 + 0x24) = uVar21;" (assignment_expression "*(uint *)(puVar12 + 0x24) = uVar21" (pointer_expression "*(uint *)(puVar12 + 0x24)" * (cast_expression "(uint *)(puVar12 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x24)" ( (binary_expression "puVar12 + 0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar16 = uVar14 + uVar16;" (assignment_expression "uVar16 = uVar14 + uVar16" identifier = (binary_expression "uVar14 + uVar16" identifier + identifier)) ;) (expression_statement "uVar14 = (uint)(uVar16 < uVar14);" (assignment_expression "uVar14 = (uint)(uVar16 < uVar14)" identifier = (call_expression "(uint)(uVar16 < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar16 < uVar14)" ( (binary_expression "uVar16 < uVar14" identifier < identifier) )))) ;) (expression_statement "*(uint *)(puVar12 + 0x28) = uVar16;" (assignment_expression "*(uint *)(puVar12 + 0x28) = uVar16" (pointer_expression "*(uint *)(puVar12 + 0x28)" * (cast_expression "(uint *)(puVar12 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x28)" ( (binary_expression "puVar12 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar27 = uVar14 + uVar27;" (assignment_expression "uVar27 = uVar14 + uVar27" identifier = (binary_expression "uVar14 + uVar27" identifier + identifier)) ;) (expression_statement "uVar14 = (uint)(uVar27 < uVar14);" (assignment_expression "uVar14 = (uint)(uVar27 < uVar14)" identifier = (call_expression "(uint)(uVar27 < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar27 < uVar14)" ( (binary_expression "uVar27 < uVar14" identifier < identifier) )))) ;) (expression_statement "*(uint *)(puVar12 + 0x2c) = uVar27;" (assignment_expression "*(uint *)(puVar12 + 0x2c) = uVar27" (pointer_expression "*(uint *)(puVar12 + 0x2c)" * (cast_expression "(uint *)(puVar12 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x2c)" ( (binary_expression "puVar12 + 0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar13 = uVar14 + uVar13;" (assignment_expression "uVar13 = uVar14 + uVar13" identifier = (binary_expression "uVar14 + uVar13" identifier + identifier)) ;) (expression_statement "*(uint *)(puVar12 + 0x30) = uVar13;" (assignment_expression "*(uint *)(puVar12 + 0x30) = uVar13" (pointer_expression "*(uint *)(puVar12 + 0x30)" * (cast_expression "(uint *)(puVar12 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x30)" ( (binary_expression "puVar12 + 0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar12 + 0x34) = iVar22 + (uint)(uVar13 < uVar14) & 3;" (assignment_expression "*(uint *)(puVar12 + 0x34) = iVar22 + (uint)(uVar13 < uVar14) & 3" (pointer_expression "*(uint *)(puVar12 + 0x34)" * (cast_expression "(uint *)(puVar12 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x34)" ( (binary_expression "puVar12 + 0x34" identifier + number_literal) )))) = (binary_expression "iVar22 + (uint)(uVar13 < uVar14) & 3" (binary_expression "iVar22 + (uint)(uVar13 < uVar14)" identifier + (call_expression "(uint)(uVar13 < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 < uVar14)" ( (binary_expression "uVar13 < uVar14" identifier < identifier) )))) & number_literal)) ;) (expression_statement "FUN_0005a298();" (call_expression "FUN_0005a298()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar22 = 0;" (assignment_expression "iVar22 = 0" identifier = number_literal) ;) (expression_statement "iVar25 = *(int *)(puVar26 + -0x30);" (assignment_expression "iVar25 = *(int *)(puVar26 + -0x30)" identifier = (pointer_expression "*(int *)(puVar26 + -0x30)" * (cast_expression "(int *)(puVar26 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x30)" ( (binary_expression "puVar26 + -0x30" identifier + number_literal) ))))) ;) (do_statement "do {\n      iVar10 = iVar22 >> 2;\n      uVar14 = iVar22 << 3;\n      puVar11 = (undefined1 *)(uVar9 + iVar22);\n      iVar22 = iVar22 + 1;\n      *puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));\n    } while (iVar22 != 0x10);" do (compound_statement "{\n      iVar10 = iVar22 >> 2;\n      uVar14 = iVar22 << 3;\n      puVar11 = (undefined1 *)(uVar9 + iVar22);\n      iVar22 = iVar22 + 1;\n      *puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));\n    }" { (expression_statement "iVar10 = iVar22 >> 2;" (assignment_expression "iVar10 = iVar22 >> 2" identifier = (binary_expression "iVar22 >> 2" identifier >> number_literal)) ;) (expression_statement "uVar14 = iVar22 << 3;" (assignment_expression "uVar14 = iVar22 << 3" identifier = (binary_expression "iVar22 << 3" identifier << number_literal)) ;) (expression_statement "puVar11 = (undefined1 *)(uVar9 + iVar22);" (assignment_expression "puVar11 = (undefined1 *)(uVar9 + iVar22)" identifier = (cast_expression "(undefined1 *)(uVar9 + iVar22)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar9 + iVar22)" ( (binary_expression "uVar9 + iVar22" identifier + identifier) )))) ;) (expression_statement "iVar22 = iVar22 + 1;" (assignment_expression "iVar22 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ;) (expression_statement "*puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));" (assignment_expression "*puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f))" (pointer_expression "*puVar11" * identifier) = (cast_expression "(char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f))" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f))" ( (binary_expression "*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f)" (pointer_expression "*(uint *)(puVar26 + iVar10 * 4 + -0x28)" * (cast_expression "(uint *)(puVar26 + iVar10 * 4 + -0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + iVar10 * 4 + -0x28)" ( (binary_expression "puVar26 + iVar10 * 4 + -0x28" (binary_expression "puVar26 + iVar10 * 4" identifier + (binary_expression "iVar10 * 4" identifier * number_literal)) + number_literal) )))) >> (parenthesized_expression "(uVar14 & 0x1f)" ( (binary_expression "uVar14 & 0x1f" identifier & number_literal) ))) )))) ;) }) while (parenthesized_expression "(iVar22 != 0x10)" ( (binary_expression "iVar22 != 0x10" identifier != number_literal) )) ;) (if_statement "if (*(int *)(puVar26 + -0x14) == *piVar19) break;" if (parenthesized_expression "(*(int *)(puVar26 + -0x14) == *piVar19)" ( (binary_expression "*(int *)(puVar26 + -0x14) == *piVar19" (pointer_expression "*(int *)(puVar26 + -0x14)" * (cast_expression "(int *)(puVar26 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x14)" ( (binary_expression "puVar26 + -0x14" identifier + number_literal) )))) == (pointer_expression "*piVar19" * identifier)) )) (break_statement "break;" break ;)) (expression_statement "pcVar23 = *(code **)(iVar25 + -0x74e0);" (assignment_expression "pcVar23 = *(code **)(iVar25 + -0x74e0)" identifier = (pointer_expression "*(code **)(iVar25 + -0x74e0)" * (cast_expression "(code **)(iVar25 + -0x74e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar25 + -0x74e0)" ( (binary_expression "iVar25 + -0x74e0" identifier + number_literal) ))))) ;) (expression_statement "pcVar28 = (code *)0x5ad34;" (assignment_expression "pcVar28 = (code *)0x5ad34" identifier = (cast_expression "(code *)0x5ad34" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar24 = (undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488);" (assignment_expression "puVar24 = (undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488)" identifier = (cast_expression "(undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar23 + 0x55b2c) + -0x5488)" ( (binary_expression "*(int *)(pcVar23 + 0x55b2c) + -0x5488" (pointer_expression "*(int *)(pcVar23 + 0x55b2c)" * (cast_expression "(int *)(pcVar23 + 0x55b2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar23 + 0x55b2c)" ( (binary_expression "pcVar23 + 0x55b2c" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "puVar11 = puVar11 + 0x114;" (assignment_expression "puVar11 = puVar11 + 0x114" identifier = (binary_expression "puVar11 + 0x114" identifier + number_literal)) ;) (expression_statement "uVar9 = uVar14;" (assignment_expression "uVar9 = uVar14" identifier = identifier) ;) (expression_statement "puVar30 = puVar12;" (assignment_expression "puVar30 = puVar12" identifier = identifier) ;) (expression_statement "puVar26 = puVar26 + -0x40;" (assignment_expression "puVar26 = puVar26 + -0x40" identifier = (binary_expression "puVar26 + -0x40" identifier + number_literal)) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void poly1305_feed_chunk(poly1305 *ctx,uchar *chunk,int len)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  longlong lVar3;\n  ulonglong uVar4;\n  longlong lVar5;\n  longlong lVar6;\n  longlong lVar7;\n  longlong lVar8;\n  int iVar9;\n  uint uVar10;\n  poly1305 *ctx_00;\n  bigval *r;\n  undefined1 *puVar11;\n  uchar *mac;\n  uint uVar12;\n  uint uVar13;\n  bigval *pbVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  int *piVar18;\n  uint uVar19;\n  uint uVar20;\n  int iVar21;\n  undefined *puVar22;\n  uint uVar23;\n  code *pcVar24;\n  uint uVar25;\n  bigval bStack_b8;\n  int iStack_a4;\n  longlong lStack_a0;\n  uint uStack_98;\n  code *pcStack_94;\n  uint uStack_78;\n  uint uStack_74;\n  undefined8 uStack_70;\n  uint uStack_64;\n  int iStack_5c;\n  int iStack_54;\n  uint uStack_4c;\n  bigval c;\n  \n  pbVar14 = &c;\n  c.w[0] = 0;\n  c.w[1] = 0;\n  c.w[2] = 0;\n  c.w[3] = 0;\n  c.w[4] = 0;\n  iVar9 = *(int *)PTR___stack_chk_guard_000b0c9c;\n  uVar10 = len;\n  piVar18 = (int *)PTR___stack_chk_guard_000b0c9c;\n  bigval_import_le(pbVar14,chunk,len);\n  if (len < 0) {\n    len = len + 3;\n  }\n  c.w[len >> 2] = 1 << ((uVar10 & 3) << 3) | c.w[len >> 2];\n  bigval_add(pbVar14,pbVar14,&ctx->h);\n  uVar13 = (ctx->r).w[0];\n  uVar19 = (ctx->r).w[1];\n  uVar20 = (ctx->r).w[2];\n  uVar23 = (ctx->r).w[3];\n  iVar21 = *piVar18;\n  uVar1 = ((ulonglong)c.w[0] * (ulonglong)uVar13 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)uVar19;\n  uVar2 = (uVar1 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)uVar20;\n  lVar3 = (uVar1 & 0xffffffff) + (ulonglong)uVar13 * (ulonglong)c.w[1];\n  uVar25 = (uint)((ulonglong)lVar3 >> 0x20);\n  uVar10 = (int)uVar2 + uVar25;\n  uVar1 = (uVar2 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)uVar23;\n  uVar2 = (ulonglong)CONCAT14(uVar10 < uVar25,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[1];\n  uVar4 = (uVar1 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)(ctx->r).w[4];\n  uVar1 = (uVar1 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[1] + (uVar2 >> 0x20);\n  lVar5 = (uVar2 & 0xffffffff) + (ulonglong)uVar13 * (ulonglong)c.w[2];\n  uVar25 = (uint)((ulonglong)lVar5 >> 0x20);\n  uVar10 = (int)uVar1 + uVar25;\n  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[1] + (uVar1 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar10 < uVar25,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[2];\n  uStack_70 = uVar1 & 0xffffffff;\n  uVar4 = (uVar4 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[1] + (uVar2 >> 0x20);\n  lVar6 = uStack_70 + (ulonglong)uVar13 * (ulonglong)c.w[3];\n  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[2] + (uVar1 >> 0x20);\n  uStack_78 = (uint)((ulonglong)lVar6 >> 0x20);\n  uVar10 = (int)uVar1 + uStack_78;\n  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[2] + (uVar1 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar10 < uStack_78,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[3];\n  uStack_70 = uVar1 & 0xffffffff;\n  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[3] + (uVar1 >> 0x20);\n  uVar2 = (uVar4 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[2] + (uVar2 >> 0x20);\n  lVar7 = uStack_70 + (ulonglong)uVar13 * (ulonglong)c.w[4];\n  uVar25 = (uint)((ulonglong)lVar7 >> 0x20);\n  uVar10 = (int)uVar1 + uVar25;\n  uVar4 = (uVar2 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[3] + (uVar1 >> 0x20);\n  uVar17 = (uint)(uVar4 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar10 < uVar25,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[4];\n  uStack_4c = (uint)uVar1;\n  lVar8 = (uVar2 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[3];\n  uStack_70._4_4_ = (uint)lVar7;\n  uVar12 = (uStack_70._4_4_ >> 2) * 4;\n  uVar19 = uVar12 + (uStack_70._4_4_ >> 2 | uStack_4c << 0x1e);\n  uVar10 = uVar17 + (int)lVar8;\n  lVar7 = (uVar4 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[4] + (uVar1 >> 0x20);\n  uVar15 = (uint)lVar7;\n  uVar25 = (uint)((ulonglong)lVar7 >> 0x20);\n  uStack_64 = (uint)((ulonglong)c.w[0] * (ulonglong)uVar13);\n  uVar20 = uVar19 + uStack_64;\n  lVar7 = (ulonglong)uVar10 + (ulonglong)uVar23 * (ulonglong)c.w[4];\n  uVar13 = (uint)(uVar20 < uStack_64);\n  iStack_5c = (int)lVar5;\n  iStack_54 = (int)lVar3;\n  uVar23 = uVar25 + (int)lVar7;\n  uVar16 = uVar13 + iStack_54;\n  uVar17 = c.w[4] * (ctx->r).w[4] + (uint)(uVar10 < uVar17) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar23 < uVar25) + (int)((ulonglong)lVar7 >> 0x20);\n  lVar3 = (ulonglong)((uint)(uVar19 < uVar12) + (uStack_4c & 3)) +\n          (ulonglong)(uStack_4c >> 2 | uVar15 * 0x40000000) * 5;\n  uStack_98 = (uint)((ulonglong)lVar3 >> 0x20);\n  uVar19 = uVar16 + (int)lVar3;\n  uVar25 = (uint)(uVar19 < uVar16) + (uint)(uVar16 < uVar13);\n  uStack_74 = (uint)lVar6;\n  uVar1 = (ulonglong)uStack_98 + (ulonglong)(uVar15 >> 2 | uVar23 * 0x40000000) * 5;\n  uVar10 = (uVar17 >> 4) * 0x19;\n  uVar20 = uVar10 + uVar20;\n  uVar13 = uVar25 + (int)uVar1;\n  (ctx->h).w[0] = uVar20;\n  uVar10 = (uint)(uVar20 < uVar10);\n  uVar19 = uVar10 + uVar19;\n  (ctx->h).w[1] = uVar19;\n  uVar20 = (uint)(uVar19 < uVar10);\n  lStack_a0 = (uVar1 >> 0x20) + (ulonglong)(uVar23 >> 2 | uVar17 * 0x40000000) * 5;\n  uVar19 = (uint)(uVar13 + iStack_5c < uVar13) + (uint)(uVar13 < uVar25);\n  uVar10 = uVar20 + uVar13 + iStack_5c;\n  (ctx->h).w[2] = uVar10;\n  uVar25 = (uint)(uVar10 < uVar20);\n  uVar13 = (int)lStack_a0 + uStack_74;\n  uVar10 = uVar19 + uVar13;\n  uVar20 = (uint)(uVar13 < uStack_74);\n  uVar13 = uVar25 + uVar10;\n  (ctx->h).w[3] = uVar13;\n  ctx_00 = (poly1305 *)\n           ((uVar17 * 0x10000000 >> 0x1e) * 5 + (uStack_70._4_4_ & 3) +\n            (int)((ulonglong)lStack_a0 >> 0x20) + (uVar10 < uVar19) + uVar20 +\n           (uint)(uVar13 < uVar25));\n  (ctx->h).w[4] = (BignumInt)ctx_00;\n  if (iVar9 == iVar21) {\n    return;\n  }\n  pcVar24 = poly1305_finalise;\n  puVar22 = PTR___stack_chk_fail_000b0c70;\n  (*(code *)PTR___stack_chk_fail_000b0c70)();\n  piVar18 = *(int **)(puVar22 + 0x56124);\n  iStack_a4 = *piVar18;\n  pcStack_94 = pcVar24;\n  if (ctx_00->bufferIndex != 0) {\n    poly1305_feed_chunk(ctx_00,ctx_00->buffer,ctx_00->bufferIndex);\n  }\n  r = &bStack_b8;\n  bStack_b8.w[0] = 0;\n  bStack_b8.w[1] = 0;\n  bStack_b8.w[2] = 0;\n  bStack_b8.w[3] = 0;\n  bStack_b8.w[4] = 0;\n  pbVar14 = r;\n  bigval_import_le(r,ctx_00,0x10);\n  uVar13 = (ctx_00->h).w[4];\n  uVar10 = (uVar13 >> 2) * 5;\n  uVar25 = (ctx_00->h).w[0] + uVar10;\n  uVar19 = (uint)(uVar25 < uVar10);\n  uVar16 = uVar19 + (ctx_00->h).w[1];\n  uVar10 = (uint)(uVar25 + 5 < uVar25);\n  uVar19 = (uint)(uVar16 < uVar19);\n  uVar15 = uVar19 + (ctx_00->h).w[2];\n  uVar12 = (uint)(uVar10 + uVar16 < uVar10);\n  uVar10 = (uint)(uVar15 < uVar19);\n  uVar23 = uVar10 + (ctx_00->h).w[3];\n  uVar19 = (uint)(uVar12 + uVar15 < uVar12);\n  iVar9 = (uVar13 & 3) + (uint)(uVar23 < uVar10);\n  uVar10 = (iVar9 + (uint)(uVar19 + uVar23 < uVar19) >> 2) * 5;\n  uVar25 = uVar10 + uVar25;\n  uVar10 = (uint)(uVar25 < uVar10);\n  (ctx_00->h).w[0] = uVar25;\n  uVar16 = uVar10 + uVar16;\n  uVar10 = (uint)(uVar16 < uVar10);\n  (ctx_00->h).w[1] = uVar16;\n  uVar15 = uVar10 + uVar15;\n  uVar10 = (uint)(uVar15 < uVar10);\n  (ctx_00->h).w[2] = uVar15;\n  uVar23 = uVar10 + uVar23;\n  (ctx_00->h).w[3] = uVar23;\n  (ctx_00->h).w[4] = iVar9 + (uint)(uVar23 < uVar10) & 3;\n  bigval_add(r,pbVar14,&ctx_00->h);\n  iVar9 = 0;\n  do {\n    iVar21 = iVar9 >> 2;\n    mac = (uchar *)(iVar9 << 3);\n    puVar11 = (undefined1 *)(uVar20 + iVar9);\n    iVar9 = iVar9 + 1;\n    *puVar11 = (char)(bStack_b8.w[iVar21] >> ((uint)mac & 0x1f));\n  } while (iVar9 != 0x10);\n  if (iStack_a4 == *piVar18) {\n    return;\n  }\n  (**(code **)(puVar22 + 0x560f8))();\n  poly1305_finalise((poly1305 *)(puVar11 + 0x114),mac);\n  return;\n}\n\n" (function_definition "void poly1305_feed_chunk(poly1305 *ctx,uchar *chunk,int len)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  longlong lVar3;\n  ulonglong uVar4;\n  longlong lVar5;\n  longlong lVar6;\n  longlong lVar7;\n  longlong lVar8;\n  int iVar9;\n  uint uVar10;\n  poly1305 *ctx_00;\n  bigval *r;\n  undefined1 *puVar11;\n  uchar *mac;\n  uint uVar12;\n  uint uVar13;\n  bigval *pbVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  int *piVar18;\n  uint uVar19;\n  uint uVar20;\n  int iVar21;\n  undefined *puVar22;\n  uint uVar23;\n  code *pcVar24;\n  uint uVar25;\n  bigval bStack_b8;\n  int iStack_a4;\n  longlong lStack_a0;\n  uint uStack_98;\n  code *pcStack_94;\n  uint uStack_78;\n  uint uStack_74;\n  undefined8 uStack_70;\n  uint uStack_64;\n  int iStack_5c;\n  int iStack_54;\n  uint uStack_4c;\n  bigval c;\n  \n  pbVar14 = &c;\n  c.w[0] = 0;\n  c.w[1] = 0;\n  c.w[2] = 0;\n  c.w[3] = 0;\n  c.w[4] = 0;\n  iVar9 = *(int *)PTR___stack_chk_guard_000b0c9c;\n  uVar10 = len;\n  piVar18 = (int *)PTR___stack_chk_guard_000b0c9c;\n  bigval_import_le(pbVar14,chunk,len);\n  if (len < 0) {\n    len = len + 3;\n  }\n  c.w[len >> 2] = 1 << ((uVar10 & 3) << 3) | c.w[len >> 2];\n  bigval_add(pbVar14,pbVar14,&ctx->h);\n  uVar13 = (ctx->r).w[0];\n  uVar19 = (ctx->r).w[1];\n  uVar20 = (ctx->r).w[2];\n  uVar23 = (ctx->r).w[3];\n  iVar21 = *piVar18;\n  uVar1 = ((ulonglong)c.w[0] * (ulonglong)uVar13 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)uVar19;\n  uVar2 = (uVar1 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)uVar20;\n  lVar3 = (uVar1 & 0xffffffff) + (ulonglong)uVar13 * (ulonglong)c.w[1];\n  uVar25 = (uint)((ulonglong)lVar3 >> 0x20);\n  uVar10 = (int)uVar2 + uVar25;\n  uVar1 = (uVar2 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)uVar23;\n  uVar2 = (ulonglong)CONCAT14(uVar10 < uVar25,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[1];\n  uVar4 = (uVar1 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)(ctx->r).w[4];\n  uVar1 = (uVar1 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[1] + (uVar2 >> 0x20);\n  lVar5 = (uVar2 & 0xffffffff) + (ulonglong)uVar13 * (ulonglong)c.w[2];\n  uVar25 = (uint)((ulonglong)lVar5 >> 0x20);\n  uVar10 = (int)uVar1 + uVar25;\n  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[1] + (uVar1 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar10 < uVar25,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[2];\n  uStack_70 = uVar1 & 0xffffffff;\n  uVar4 = (uVar4 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[1] + (uVar2 >> 0x20);\n  lVar6 = uStack_70 + (ulonglong)uVar13 * (ulonglong)c.w[3];\n  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[2] + (uVar1 >> 0x20);\n  uStack_78 = (uint)((ulonglong)lVar6 >> 0x20);\n  uVar10 = (int)uVar1 + uStack_78;\n  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[2] + (uVar1 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar10 < uStack_78,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[3];\n  uStack_70 = uVar1 & 0xffffffff;\n  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[3] + (uVar1 >> 0x20);\n  uVar2 = (uVar4 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[2] + (uVar2 >> 0x20);\n  lVar7 = uStack_70 + (ulonglong)uVar13 * (ulonglong)c.w[4];\n  uVar25 = (uint)((ulonglong)lVar7 >> 0x20);\n  uVar10 = (int)uVar1 + uVar25;\n  uVar4 = (uVar2 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[3] + (uVar1 >> 0x20);\n  uVar17 = (uint)(uVar4 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar10 < uVar25,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[4];\n  uStack_4c = (uint)uVar1;\n  lVar8 = (uVar2 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[3];\n  uStack_70._4_4_ = (uint)lVar7;\n  uVar12 = (uStack_70._4_4_ >> 2) * 4;\n  uVar19 = uVar12 + (uStack_70._4_4_ >> 2 | uStack_4c << 0x1e);\n  uVar10 = uVar17 + (int)lVar8;\n  lVar7 = (uVar4 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[4] + (uVar1 >> 0x20);\n  uVar15 = (uint)lVar7;\n  uVar25 = (uint)((ulonglong)lVar7 >> 0x20);\n  uStack_64 = (uint)((ulonglong)c.w[0] * (ulonglong)uVar13);\n  uVar20 = uVar19 + uStack_64;\n  lVar7 = (ulonglong)uVar10 + (ulonglong)uVar23 * (ulonglong)c.w[4];\n  uVar13 = (uint)(uVar20 < uStack_64);\n  iStack_5c = (int)lVar5;\n  iStack_54 = (int)lVar3;\n  uVar23 = uVar25 + (int)lVar7;\n  uVar16 = uVar13 + iStack_54;\n  uVar17 = c.w[4] * (ctx->r).w[4] + (uint)(uVar10 < uVar17) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar23 < uVar25) + (int)((ulonglong)lVar7 >> 0x20);\n  lVar3 = (ulonglong)((uint)(uVar19 < uVar12) + (uStack_4c & 3)) +\n          (ulonglong)(uStack_4c >> 2 | uVar15 * 0x40000000) * 5;\n  uStack_98 = (uint)((ulonglong)lVar3 >> 0x20);\n  uVar19 = uVar16 + (int)lVar3;\n  uVar25 = (uint)(uVar19 < uVar16) + (uint)(uVar16 < uVar13);\n  uStack_74 = (uint)lVar6;\n  uVar1 = (ulonglong)uStack_98 + (ulonglong)(uVar15 >> 2 | uVar23 * 0x40000000) * 5;\n  uVar10 = (uVar17 >> 4) * 0x19;\n  uVar20 = uVar10 + uVar20;\n  uVar13 = uVar25 + (int)uVar1;\n  (ctx->h).w[0] = uVar20;\n  uVar10 = (uint)(uVar20 < uVar10);\n  uVar19 = uVar10 + uVar19;\n  (ctx->h).w[1] = uVar19;\n  uVar20 = (uint)(uVar19 < uVar10);\n  lStack_a0 = (uVar1 >> 0x20) + (ulonglong)(uVar23 >> 2 | uVar17 * 0x40000000) * 5;\n  uVar19 = (uint)(uVar13 + iStack_5c < uVar13) + (uint)(uVar13 < uVar25);\n  uVar10 = uVar20 + uVar13 + iStack_5c;\n  (ctx->h).w[2] = uVar10;\n  uVar25 = (uint)(uVar10 < uVar20);\n  uVar13 = (int)lStack_a0 + uStack_74;\n  uVar10 = uVar19 + uVar13;\n  uVar20 = (uint)(uVar13 < uStack_74);\n  uVar13 = uVar25 + uVar10;\n  (ctx->h).w[3] = uVar13;\n  ctx_00 = (poly1305 *)\n           ((uVar17 * 0x10000000 >> 0x1e) * 5 + (uStack_70._4_4_ & 3) +\n            (int)((ulonglong)lStack_a0 >> 0x20) + (uVar10 < uVar19) + uVar20 +\n           (uint)(uVar13 < uVar25));\n  (ctx->h).w[4] = (BignumInt)ctx_00;\n  if (iVar9 == iVar21) {\n    return;\n  }\n  pcVar24 = poly1305_finalise;\n  puVar22 = PTR___stack_chk_fail_000b0c70;\n  (*(code *)PTR___stack_chk_fail_000b0c70)();\n  piVar18 = *(int **)(puVar22 + 0x56124);\n  iStack_a4 = *piVar18;\n  pcStack_94 = pcVar24;\n  if (ctx_00->bufferIndex != 0) {\n    poly1305_feed_chunk(ctx_00,ctx_00->buffer,ctx_00->bufferIndex);\n  }\n  r = &bStack_b8;\n  bStack_b8.w[0] = 0;\n  bStack_b8.w[1] = 0;\n  bStack_b8.w[2] = 0;\n  bStack_b8.w[3] = 0;\n  bStack_b8.w[4] = 0;\n  pbVar14 = r;\n  bigval_import_le(r,ctx_00,0x10);\n  uVar13 = (ctx_00->h).w[4];\n  uVar10 = (uVar13 >> 2) * 5;\n  uVar25 = (ctx_00->h).w[0] + uVar10;\n  uVar19 = (uint)(uVar25 < uVar10);\n  uVar16 = uVar19 + (ctx_00->h).w[1];\n  uVar10 = (uint)(uVar25 + 5 < uVar25);\n  uVar19 = (uint)(uVar16 < uVar19);\n  uVar15 = uVar19 + (ctx_00->h).w[2];\n  uVar12 = (uint)(uVar10 + uVar16 < uVar10);\n  uVar10 = (uint)(uVar15 < uVar19);\n  uVar23 = uVar10 + (ctx_00->h).w[3];\n  uVar19 = (uint)(uVar12 + uVar15 < uVar12);\n  iVar9 = (uVar13 & 3) + (uint)(uVar23 < uVar10);\n  uVar10 = (iVar9 + (uint)(uVar19 + uVar23 < uVar19) >> 2) * 5;\n  uVar25 = uVar10 + uVar25;\n  uVar10 = (uint)(uVar25 < uVar10);\n  (ctx_00->h).w[0] = uVar25;\n  uVar16 = uVar10 + uVar16;\n  uVar10 = (uint)(uVar16 < uVar10);\n  (ctx_00->h).w[1] = uVar16;\n  uVar15 = uVar10 + uVar15;\n  uVar10 = (uint)(uVar15 < uVar10);\n  (ctx_00->h).w[2] = uVar15;\n  uVar23 = uVar10 + uVar23;\n  (ctx_00->h).w[3] = uVar23;\n  (ctx_00->h).w[4] = iVar9 + (uint)(uVar23 < uVar10) & 3;\n  bigval_add(r,pbVar14,&ctx_00->h);\n  iVar9 = 0;\n  do {\n    iVar21 = iVar9 >> 2;\n    mac = (uchar *)(iVar9 << 3);\n    puVar11 = (undefined1 *)(uVar20 + iVar9);\n    iVar9 = iVar9 + 1;\n    *puVar11 = (char)(bStack_b8.w[iVar21] >> ((uint)mac & 0x1f));\n  } while (iVar9 != 0x10);\n  if (iStack_a4 == *piVar18) {\n    return;\n  }\n  (**(code **)(puVar22 + 0x560f8))();\n  poly1305_finalise((poly1305 *)(puVar11 + 0x114),mac);\n  return;\n}" primitive_type (function_declarator "poly1305_feed_chunk(poly1305 *ctx,uchar *chunk,int len)" identifier (parameter_list "(poly1305 *ctx,uchar *chunk,int len)" ( (parameter_declaration "poly1305 *ctx" type_identifier (pointer_declarator "*ctx" * identifier)) , (parameter_declaration "uchar *chunk" type_identifier (pointer_declarator "*chunk" * identifier)) , (parameter_declaration "int len" primitive_type identifier) ))) (compound_statement "{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  longlong lVar3;\n  ulonglong uVar4;\n  longlong lVar5;\n  longlong lVar6;\n  longlong lVar7;\n  longlong lVar8;\n  int iVar9;\n  uint uVar10;\n  poly1305 *ctx_00;\n  bigval *r;\n  undefined1 *puVar11;\n  uchar *mac;\n  uint uVar12;\n  uint uVar13;\n  bigval *pbVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  int *piVar18;\n  uint uVar19;\n  uint uVar20;\n  int iVar21;\n  undefined *puVar22;\n  uint uVar23;\n  code *pcVar24;\n  uint uVar25;\n  bigval bStack_b8;\n  int iStack_a4;\n  longlong lStack_a0;\n  uint uStack_98;\n  code *pcStack_94;\n  uint uStack_78;\n  uint uStack_74;\n  undefined8 uStack_70;\n  uint uStack_64;\n  int iStack_5c;\n  int iStack_54;\n  uint uStack_4c;\n  bigval c;\n  \n  pbVar14 = &c;\n  c.w[0] = 0;\n  c.w[1] = 0;\n  c.w[2] = 0;\n  c.w[3] = 0;\n  c.w[4] = 0;\n  iVar9 = *(int *)PTR___stack_chk_guard_000b0c9c;\n  uVar10 = len;\n  piVar18 = (int *)PTR___stack_chk_guard_000b0c9c;\n  bigval_import_le(pbVar14,chunk,len);\n  if (len < 0) {\n    len = len + 3;\n  }\n  c.w[len >> 2] = 1 << ((uVar10 & 3) << 3) | c.w[len >> 2];\n  bigval_add(pbVar14,pbVar14,&ctx->h);\n  uVar13 = (ctx->r).w[0];\n  uVar19 = (ctx->r).w[1];\n  uVar20 = (ctx->r).w[2];\n  uVar23 = (ctx->r).w[3];\n  iVar21 = *piVar18;\n  uVar1 = ((ulonglong)c.w[0] * (ulonglong)uVar13 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)uVar19;\n  uVar2 = (uVar1 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)uVar20;\n  lVar3 = (uVar1 & 0xffffffff) + (ulonglong)uVar13 * (ulonglong)c.w[1];\n  uVar25 = (uint)((ulonglong)lVar3 >> 0x20);\n  uVar10 = (int)uVar2 + uVar25;\n  uVar1 = (uVar2 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)uVar23;\n  uVar2 = (ulonglong)CONCAT14(uVar10 < uVar25,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[1];\n  uVar4 = (uVar1 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)(ctx->r).w[4];\n  uVar1 = (uVar1 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[1] + (uVar2 >> 0x20);\n  lVar5 = (uVar2 & 0xffffffff) + (ulonglong)uVar13 * (ulonglong)c.w[2];\n  uVar25 = (uint)((ulonglong)lVar5 >> 0x20);\n  uVar10 = (int)uVar1 + uVar25;\n  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[1] + (uVar1 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar10 < uVar25,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[2];\n  uStack_70 = uVar1 & 0xffffffff;\n  uVar4 = (uVar4 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[1] + (uVar2 >> 0x20);\n  lVar6 = uStack_70 + (ulonglong)uVar13 * (ulonglong)c.w[3];\n  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[2] + (uVar1 >> 0x20);\n  uStack_78 = (uint)((ulonglong)lVar6 >> 0x20);\n  uVar10 = (int)uVar1 + uStack_78;\n  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[2] + (uVar1 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar10 < uStack_78,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[3];\n  uStack_70 = uVar1 & 0xffffffff;\n  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[3] + (uVar1 >> 0x20);\n  uVar2 = (uVar4 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[2] + (uVar2 >> 0x20);\n  lVar7 = uStack_70 + (ulonglong)uVar13 * (ulonglong)c.w[4];\n  uVar25 = (uint)((ulonglong)lVar7 >> 0x20);\n  uVar10 = (int)uVar1 + uVar25;\n  uVar4 = (uVar2 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[3] + (uVar1 >> 0x20);\n  uVar17 = (uint)(uVar4 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar10 < uVar25,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[4];\n  uStack_4c = (uint)uVar1;\n  lVar8 = (uVar2 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[3];\n  uStack_70._4_4_ = (uint)lVar7;\n  uVar12 = (uStack_70._4_4_ >> 2) * 4;\n  uVar19 = uVar12 + (uStack_70._4_4_ >> 2 | uStack_4c << 0x1e);\n  uVar10 = uVar17 + (int)lVar8;\n  lVar7 = (uVar4 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[4] + (uVar1 >> 0x20);\n  uVar15 = (uint)lVar7;\n  uVar25 = (uint)((ulonglong)lVar7 >> 0x20);\n  uStack_64 = (uint)((ulonglong)c.w[0] * (ulonglong)uVar13);\n  uVar20 = uVar19 + uStack_64;\n  lVar7 = (ulonglong)uVar10 + (ulonglong)uVar23 * (ulonglong)c.w[4];\n  uVar13 = (uint)(uVar20 < uStack_64);\n  iStack_5c = (int)lVar5;\n  iStack_54 = (int)lVar3;\n  uVar23 = uVar25 + (int)lVar7;\n  uVar16 = uVar13 + iStack_54;\n  uVar17 = c.w[4] * (ctx->r).w[4] + (uint)(uVar10 < uVar17) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar23 < uVar25) + (int)((ulonglong)lVar7 >> 0x20);\n  lVar3 = (ulonglong)((uint)(uVar19 < uVar12) + (uStack_4c & 3)) +\n          (ulonglong)(uStack_4c >> 2 | uVar15 * 0x40000000) * 5;\n  uStack_98 = (uint)((ulonglong)lVar3 >> 0x20);\n  uVar19 = uVar16 + (int)lVar3;\n  uVar25 = (uint)(uVar19 < uVar16) + (uint)(uVar16 < uVar13);\n  uStack_74 = (uint)lVar6;\n  uVar1 = (ulonglong)uStack_98 + (ulonglong)(uVar15 >> 2 | uVar23 * 0x40000000) * 5;\n  uVar10 = (uVar17 >> 4) * 0x19;\n  uVar20 = uVar10 + uVar20;\n  uVar13 = uVar25 + (int)uVar1;\n  (ctx->h).w[0] = uVar20;\n  uVar10 = (uint)(uVar20 < uVar10);\n  uVar19 = uVar10 + uVar19;\n  (ctx->h).w[1] = uVar19;\n  uVar20 = (uint)(uVar19 < uVar10);\n  lStack_a0 = (uVar1 >> 0x20) + (ulonglong)(uVar23 >> 2 | uVar17 * 0x40000000) * 5;\n  uVar19 = (uint)(uVar13 + iStack_5c < uVar13) + (uint)(uVar13 < uVar25);\n  uVar10 = uVar20 + uVar13 + iStack_5c;\n  (ctx->h).w[2] = uVar10;\n  uVar25 = (uint)(uVar10 < uVar20);\n  uVar13 = (int)lStack_a0 + uStack_74;\n  uVar10 = uVar19 + uVar13;\n  uVar20 = (uint)(uVar13 < uStack_74);\n  uVar13 = uVar25 + uVar10;\n  (ctx->h).w[3] = uVar13;\n  ctx_00 = (poly1305 *)\n           ((uVar17 * 0x10000000 >> 0x1e) * 5 + (uStack_70._4_4_ & 3) +\n            (int)((ulonglong)lStack_a0 >> 0x20) + (uVar10 < uVar19) + uVar20 +\n           (uint)(uVar13 < uVar25));\n  (ctx->h).w[4] = (BignumInt)ctx_00;\n  if (iVar9 == iVar21) {\n    return;\n  }\n  pcVar24 = poly1305_finalise;\n  puVar22 = PTR___stack_chk_fail_000b0c70;\n  (*(code *)PTR___stack_chk_fail_000b0c70)();\n  piVar18 = *(int **)(puVar22 + 0x56124);\n  iStack_a4 = *piVar18;\n  pcStack_94 = pcVar24;\n  if (ctx_00->bufferIndex != 0) {\n    poly1305_feed_chunk(ctx_00,ctx_00->buffer,ctx_00->bufferIndex);\n  }\n  r = &bStack_b8;\n  bStack_b8.w[0] = 0;\n  bStack_b8.w[1] = 0;\n  bStack_b8.w[2] = 0;\n  bStack_b8.w[3] = 0;\n  bStack_b8.w[4] = 0;\n  pbVar14 = r;\n  bigval_import_le(r,ctx_00,0x10);\n  uVar13 = (ctx_00->h).w[4];\n  uVar10 = (uVar13 >> 2) * 5;\n  uVar25 = (ctx_00->h).w[0] + uVar10;\n  uVar19 = (uint)(uVar25 < uVar10);\n  uVar16 = uVar19 + (ctx_00->h).w[1];\n  uVar10 = (uint)(uVar25 + 5 < uVar25);\n  uVar19 = (uint)(uVar16 < uVar19);\n  uVar15 = uVar19 + (ctx_00->h).w[2];\n  uVar12 = (uint)(uVar10 + uVar16 < uVar10);\n  uVar10 = (uint)(uVar15 < uVar19);\n  uVar23 = uVar10 + (ctx_00->h).w[3];\n  uVar19 = (uint)(uVar12 + uVar15 < uVar12);\n  iVar9 = (uVar13 & 3) + (uint)(uVar23 < uVar10);\n  uVar10 = (iVar9 + (uint)(uVar19 + uVar23 < uVar19) >> 2) * 5;\n  uVar25 = uVar10 + uVar25;\n  uVar10 = (uint)(uVar25 < uVar10);\n  (ctx_00->h).w[0] = uVar25;\n  uVar16 = uVar10 + uVar16;\n  uVar10 = (uint)(uVar16 < uVar10);\n  (ctx_00->h).w[1] = uVar16;\n  uVar15 = uVar10 + uVar15;\n  uVar10 = (uint)(uVar15 < uVar10);\n  (ctx_00->h).w[2] = uVar15;\n  uVar23 = uVar10 + uVar23;\n  (ctx_00->h).w[3] = uVar23;\n  (ctx_00->h).w[4] = iVar9 + (uint)(uVar23 < uVar10) & 3;\n  bigval_add(r,pbVar14,&ctx_00->h);\n  iVar9 = 0;\n  do {\n    iVar21 = iVar9 >> 2;\n    mac = (uchar *)(iVar9 << 3);\n    puVar11 = (undefined1 *)(uVar20 + iVar9);\n    iVar9 = iVar9 + 1;\n    *puVar11 = (char)(bStack_b8.w[iVar21] >> ((uint)mac & 0x1f));\n  } while (iVar9 != 0x10);\n  if (iStack_a4 == *piVar18) {\n    return;\n  }\n  (**(code **)(puVar22 + 0x560f8))();\n  poly1305_finalise((poly1305 *)(puVar11 + 0x114),mac);\n  return;\n}" { (declaration "ulonglong uVar1;" type_identifier identifier ;) (declaration "ulonglong uVar2;" type_identifier identifier ;) (declaration "longlong lVar3;" type_identifier identifier ;) (declaration "ulonglong uVar4;" type_identifier identifier ;) (declaration "longlong lVar5;" type_identifier identifier ;) (declaration "longlong lVar6;" type_identifier identifier ;) (declaration "longlong lVar7;" type_identifier identifier ;) (declaration "longlong lVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "poly1305 *ctx_00;" type_identifier (pointer_declarator "*ctx_00" * identifier) ;) (declaration "bigval *r;" type_identifier (pointer_declarator "*r" * identifier) ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uchar *mac;" type_identifier (pointer_declarator "*mac" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "bigval *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "int *piVar18;" primitive_type (pointer_declarator "*piVar18" * identifier) ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "undefined *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "code *pcVar24;" type_identifier (pointer_declarator "*pcVar24" * identifier) ;) (declaration "uint uVar25;" type_identifier identifier ;) (declaration "bigval bStack_b8;" type_identifier identifier ;) (declaration "int iStack_a4;" primitive_type identifier ;) (declaration "longlong lStack_a0;" type_identifier identifier ;) (declaration "uint uStack_98;" type_identifier identifier ;) (declaration "code *pcStack_94;" type_identifier (pointer_declarator "*pcStack_94" * identifier) ;) (declaration "uint uStack_78;" type_identifier identifier ;) (declaration "uint uStack_74;" type_identifier identifier ;) (declaration "undefined8 uStack_70;" type_identifier identifier ;) (declaration "uint uStack_64;" type_identifier identifier ;) (declaration "int iStack_5c;" primitive_type identifier ;) (declaration "int iStack_54;" primitive_type identifier ;) (declaration "uint uStack_4c;" type_identifier identifier ;) (declaration "bigval c;" type_identifier identifier ;) (expression_statement "pbVar14 = &c;" (assignment_expression "pbVar14 = &c" identifier = (pointer_expression "&c" & identifier)) ;) (expression_statement "c.w[0] = 0;" (assignment_expression "c.w[0] = 0" (subscript_expression "c.w[0]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "c.w[1] = 0;" (assignment_expression "c.w[1] = 0" (subscript_expression "c.w[1]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "c.w[2] = 0;" (assignment_expression "c.w[2] = 0" (subscript_expression "c.w[2]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "c.w[3] = 0;" (assignment_expression "c.w[3] = 0" (subscript_expression "c.w[3]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "c.w[4] = 0;" (assignment_expression "c.w[4] = 0" (subscript_expression "c.w[4]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = *(int *)PTR___stack_chk_guard_000b0c9c;" (assignment_expression "iVar9 = *(int *)PTR___stack_chk_guard_000b0c9c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000b0c9c" * (cast_expression "(int *)PTR___stack_chk_guard_000b0c9c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar10 = len;" (assignment_expression "uVar10 = len" identifier = identifier) ;) (expression_statement "piVar18 = (int *)PTR___stack_chk_guard_000b0c9c;" (assignment_expression "piVar18 = (int *)PTR___stack_chk_guard_000b0c9c" identifier = (cast_expression "(int *)PTR___stack_chk_guard_000b0c9c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "bigval_import_le(pbVar14,chunk,len);" (call_expression "bigval_import_le(pbVar14,chunk,len)" identifier (argument_list "(pbVar14,chunk,len)" ( identifier , identifier , identifier ))) ;) (if_statement "if (len < 0) {\n    len = len + 3;\n  }" if (parenthesized_expression "(len < 0)" ( (binary_expression "len < 0" identifier < number_literal) )) (compound_statement "{\n    len = len + 3;\n  }" { (expression_statement "len = len + 3;" (assignment_expression "len = len + 3" identifier = (binary_expression "len + 3" identifier + number_literal)) ;) })) (expression_statement "c.w[len >> 2] = 1 << ((uVar10 & 3) << 3) | c.w[len >> 2];" (assignment_expression "c.w[len >> 2] = 1 << ((uVar10 & 3) << 3) | c.w[len >> 2]" (subscript_expression "c.w[len >> 2]" (field_expression "c.w" identifier . field_identifier) [ (binary_expression "len >> 2" identifier >> number_literal) ]) = (binary_expression "1 << ((uVar10 & 3) << 3) | c.w[len >> 2]" (binary_expression "1 << ((uVar10 & 3) << 3)" number_literal << (parenthesized_expression "((uVar10 & 3) << 3)" ( (binary_expression "(uVar10 & 3) << 3" (parenthesized_expression "(uVar10 & 3)" ( (binary_expression "uVar10 & 3" identifier & number_literal) )) << number_literal) ))) | (subscript_expression "c.w[len >> 2]" (field_expression "c.w" identifier . field_identifier) [ (binary_expression "len >> 2" identifier >> number_literal) ]))) ;) (expression_statement "bigval_add(pbVar14,pbVar14,&ctx->h);" (call_expression "bigval_add(pbVar14,pbVar14,&ctx->h)" identifier (argument_list "(pbVar14,pbVar14,&ctx->h)" ( identifier , identifier , (pointer_expression "&ctx->h" & (field_expression "ctx->h" identifier -> field_identifier)) ))) ;) (expression_statement "uVar13 = (ctx->r).w[0];" (assignment_expression "uVar13 = (ctx->r).w[0]" identifier = (subscript_expression "(ctx->r).w[0]" (field_expression "(ctx->r).w" (parenthesized_expression "(ctx->r)" ( (field_expression "ctx->r" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (expression_statement "uVar19 = (ctx->r).w[1];" (assignment_expression "uVar19 = (ctx->r).w[1]" identifier = (subscript_expression "(ctx->r).w[1]" (field_expression "(ctx->r).w" (parenthesized_expression "(ctx->r)" ( (field_expression "ctx->r" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (expression_statement "uVar20 = (ctx->r).w[2];" (assignment_expression "uVar20 = (ctx->r).w[2]" identifier = (subscript_expression "(ctx->r).w[2]" (field_expression "(ctx->r).w" (parenthesized_expression "(ctx->r)" ( (field_expression "ctx->r" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (expression_statement "uVar23 = (ctx->r).w[3];" (assignment_expression "uVar23 = (ctx->r).w[3]" identifier = (subscript_expression "(ctx->r).w[3]" (field_expression "(ctx->r).w" (parenthesized_expression "(ctx->r)" ( (field_expression "ctx->r" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (expression_statement "iVar21 = *piVar18;" (assignment_expression "iVar21 = *piVar18" identifier = (pointer_expression "*piVar18" * identifier)) ;) (expression_statement "uVar1 = ((ulonglong)c.w[0] * (ulonglong)uVar13 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)uVar19;" (assignment_expression "uVar1 = ((ulonglong)c.w[0] * (ulonglong)uVar13 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)uVar19" identifier = (binary_expression "((ulonglong)c.w[0] * (ulonglong)uVar13 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)uVar19" (parenthesized_expression "((ulonglong)c.w[0] * (ulonglong)uVar13 >> 0x20)" ( (binary_expression "(ulonglong)c.w[0] * (ulonglong)uVar13 >> 0x20" (binary_expression "(ulonglong)c.w[0] * (ulonglong)uVar13" (cast_expression "(ulonglong)c.w[0]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[0]" (field_expression "c.w" identifier . field_identifier) [ number_literal ])) * (cast_expression "(ulonglong)uVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) )) + (binary_expression "(ulonglong)c.w[0] * (ulonglong)uVar19" (cast_expression "(ulonglong)c.w[0]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[0]" (field_expression "c.w" identifier . field_identifier) [ number_literal ])) * (cast_expression "(ulonglong)uVar19" ( (type_descriptor "ulonglong" type_identifier) ) identifier)))) ;) (expression_statement "uVar2 = (uVar1 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)uVar20;" (assignment_expression "uVar2 = (uVar1 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)uVar20" identifier = (binary_expression "(uVar1 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)uVar20" (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )) + (binary_expression "(ulonglong)c.w[0] * (ulonglong)uVar20" (cast_expression "(ulonglong)c.w[0]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[0]" (field_expression "c.w" identifier . field_identifier) [ number_literal ])) * (cast_expression "(ulonglong)uVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier)))) ;) (expression_statement "lVar3 = (uVar1 & 0xffffffff) + (ulonglong)uVar13 * (ulonglong)c.w[1];" (assignment_expression "lVar3 = (uVar1 & 0xffffffff) + (ulonglong)uVar13 * (ulonglong)c.w[1]" identifier = (binary_expression "(uVar1 & 0xffffffff) + (ulonglong)uVar13 * (ulonglong)c.w[1]" (parenthesized_expression "(uVar1 & 0xffffffff)" ( (binary_expression "uVar1 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar13 * (ulonglong)c.w[1]" (cast_expression "(ulonglong)uVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)c.w[1]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[1]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]))))) ;) (expression_statement "uVar25 = (uint)((ulonglong)lVar3 >> 0x20);" (assignment_expression "uVar25 = (uint)((ulonglong)lVar3 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar3 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar3 >> 0x20)" ( (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar10 = (int)uVar2 + uVar25;" (assignment_expression "uVar10 = (int)uVar2 + uVar25" identifier = (binary_expression "(int)uVar2 + uVar25" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "uVar1 = (uVar2 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)uVar23;" (assignment_expression "uVar1 = (uVar2 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)uVar23" identifier = (binary_expression "(uVar2 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)uVar23" (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )) + (binary_expression "(ulonglong)c.w[0] * (ulonglong)uVar23" (cast_expression "(ulonglong)c.w[0]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[0]" (field_expression "c.w" identifier . field_identifier) [ number_literal ])) * (cast_expression "(ulonglong)uVar23" ( (type_descriptor "ulonglong" type_identifier) ) identifier)))) ;) (expression_statement "uVar2 = (ulonglong)CONCAT14(uVar10 < uVar25,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[1];" (assignment_expression "uVar2 = (ulonglong)CONCAT14(uVar10 < uVar25,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[1]" identifier = (binary_expression "(ulonglong)CONCAT14(uVar10 < uVar25,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[1]" (cast_expression "(ulonglong)CONCAT14(uVar10 < uVar25,uVar10)" ( (type_descriptor "ulonglong" type_identifier) ) (call_expression "CONCAT14(uVar10 < uVar25,uVar10)" identifier (argument_list "(uVar10 < uVar25,uVar10)" ( (binary_expression "uVar10 < uVar25" identifier < identifier) , identifier )))) + (binary_expression "(ulonglong)uVar19 * (ulonglong)c.w[1]" (cast_expression "(ulonglong)uVar19" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)c.w[1]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[1]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]))))) ;) (expression_statement "uVar4 = (uVar1 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)(ctx->r).w[4];" (assignment_expression "uVar4 = (uVar1 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)(ctx->r).w[4]" identifier = (binary_expression "(uVar1 >> 0x20) + (ulonglong)c.w[0] * (ulonglong)(ctx->r).w[4]" (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )) + (binary_expression "(ulonglong)c.w[0] * (ulonglong)(ctx->r).w[4]" (cast_expression "(ulonglong)c.w[0]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[0]" (field_expression "c.w" identifier . field_identifier) [ number_literal ])) * (subscript_expression "(ulonglong)(ctx->r).w[4]" (field_expression "(ulonglong)(ctx->r).w" (call_expression "(ulonglong)(ctx->r)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(ctx->r)" ( (field_expression "ctx->r" identifier -> field_identifier) ))) . field_identifier) [ number_literal ])))) ;) (expression_statement "uVar1 = (uVar1 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[1] + (uVar2 >> 0x20);" (assignment_expression "uVar1 = (uVar1 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[1] + (uVar2 >> 0x20)" identifier = (binary_expression "(uVar1 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[1] + (uVar2 >> 0x20)" (binary_expression "(uVar1 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[1]" (parenthesized_expression "(uVar1 & 0xffffffff)" ( (binary_expression "uVar1 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar20 * (ulonglong)c.w[1]" (cast_expression "(ulonglong)uVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)c.w[1]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[1]" (field_expression "c.w" identifier . field_identifier) [ number_literal ])))) + (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "lVar5 = (uVar2 & 0xffffffff) + (ulonglong)uVar13 * (ulonglong)c.w[2];" (assignment_expression "lVar5 = (uVar2 & 0xffffffff) + (ulonglong)uVar13 * (ulonglong)c.w[2]" identifier = (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar13 * (ulonglong)c.w[2]" (parenthesized_expression "(uVar2 & 0xffffffff)" ( (binary_expression "uVar2 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar13 * (ulonglong)c.w[2]" (cast_expression "(ulonglong)uVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)c.w[2]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[2]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]))))) ;) (expression_statement "uVar25 = (uint)((ulonglong)lVar5 >> 0x20);" (assignment_expression "uVar25 = (uint)((ulonglong)lVar5 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar5 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar5 >> 0x20)" ( (binary_expression "(ulonglong)lVar5 >> 0x20" (cast_expression "(ulonglong)lVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar10 = (int)uVar1 + uVar25;" (assignment_expression "uVar10 = (int)uVar1 + uVar25" identifier = (binary_expression "(int)uVar1 + uVar25" (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[1] + (uVar1 >> 0x20);" (assignment_expression "uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[1] + (uVar1 >> 0x20)" identifier = (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[1] + (uVar1 >> 0x20)" (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[1]" (parenthesized_expression "(uVar4 & 0xffffffff)" ( (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar23 * (ulonglong)c.w[1]" (cast_expression "(ulonglong)uVar23" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)c.w[1]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[1]" (field_expression "c.w" identifier . field_identifier) [ number_literal ])))) + (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar1 = (ulonglong)CONCAT14(uVar10 < uVar25,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[2];" (assignment_expression "uVar1 = (ulonglong)CONCAT14(uVar10 < uVar25,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[2]" identifier = (binary_expression "(ulonglong)CONCAT14(uVar10 < uVar25,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[2]" (cast_expression "(ulonglong)CONCAT14(uVar10 < uVar25,uVar10)" ( (type_descriptor "ulonglong" type_identifier) ) (call_expression "CONCAT14(uVar10 < uVar25,uVar10)" identifier (argument_list "(uVar10 < uVar25,uVar10)" ( (binary_expression "uVar10 < uVar25" identifier < identifier) , identifier )))) + (binary_expression "(ulonglong)uVar19 * (ulonglong)c.w[2]" (cast_expression "(ulonglong)uVar19" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)c.w[2]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[2]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]))))) ;) (expression_statement "uStack_70 = uVar1 & 0xffffffff;" (assignment_expression "uStack_70 = uVar1 & 0xffffffff" identifier = (binary_expression "uVar1 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "uVar4 = (uVar4 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[1] + (uVar2 >> 0x20);" (assignment_expression "uVar4 = (uVar4 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[1] + (uVar2 >> 0x20)" identifier = (binary_expression "(uVar4 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[1] + (uVar2 >> 0x20)" (binary_expression "(uVar4 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[1]" (parenthesized_expression "(uVar4 >> 0x20)" ( (binary_expression "uVar4 >> 0x20" identifier >> number_literal) )) + (binary_expression "(ulonglong)(ctx->r).w[4] * (ulonglong)c.w[1]" (subscript_expression "(ulonglong)(ctx->r).w[4]" (field_expression "(ulonglong)(ctx->r).w" (call_expression "(ulonglong)(ctx->r)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(ctx->r)" ( (field_expression "ctx->r" identifier -> field_identifier) ))) . field_identifier) [ number_literal ]) * (cast_expression "(ulonglong)c.w[1]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[1]" (field_expression "c.w" identifier . field_identifier) [ number_literal ])))) + (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "lVar6 = uStack_70 + (ulonglong)uVar13 * (ulonglong)c.w[3];" (assignment_expression "lVar6 = uStack_70 + (ulonglong)uVar13 * (ulonglong)c.w[3]" identifier = (binary_expression "uStack_70 + (ulonglong)uVar13 * (ulonglong)c.w[3]" identifier + (binary_expression "(ulonglong)uVar13 * (ulonglong)c.w[3]" (cast_expression "(ulonglong)uVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)c.w[3]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[3]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]))))) ;) (expression_statement "uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[2] + (uVar1 >> 0x20);" (assignment_expression "uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[2] + (uVar1 >> 0x20)" identifier = (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[2] + (uVar1 >> 0x20)" (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[2]" (parenthesized_expression "(uVar2 & 0xffffffff)" ( (binary_expression "uVar2 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar20 * (ulonglong)c.w[2]" (cast_expression "(ulonglong)uVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)c.w[2]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[2]" (field_expression "c.w" identifier . field_identifier) [ number_literal ])))) + (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uStack_78 = (uint)((ulonglong)lVar6 >> 0x20);" (assignment_expression "uStack_78 = (uint)((ulonglong)lVar6 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar6 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar6 >> 0x20)" ( (binary_expression "(ulonglong)lVar6 >> 0x20" (cast_expression "(ulonglong)lVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar10 = (int)uVar1 + uStack_78;" (assignment_expression "uVar10 = (int)uVar1 + uStack_78" identifier = (binary_expression "(int)uVar1 + uStack_78" (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[2] + (uVar1 >> 0x20);" (assignment_expression "uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[2] + (uVar1 >> 0x20)" identifier = (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[2] + (uVar1 >> 0x20)" (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[2]" (parenthesized_expression "(uVar4 & 0xffffffff)" ( (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar23 * (ulonglong)c.w[2]" (cast_expression "(ulonglong)uVar23" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)c.w[2]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[2]" (field_expression "c.w" identifier . field_identifier) [ number_literal ])))) + (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar1 = (ulonglong)CONCAT14(uVar10 < uStack_78,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[3];" (assignment_expression "uVar1 = (ulonglong)CONCAT14(uVar10 < uStack_78,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[3]" identifier = (binary_expression "(ulonglong)CONCAT14(uVar10 < uStack_78,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[3]" (cast_expression "(ulonglong)CONCAT14(uVar10 < uStack_78,uVar10)" ( (type_descriptor "ulonglong" type_identifier) ) (call_expression "CONCAT14(uVar10 < uStack_78,uVar10)" identifier (argument_list "(uVar10 < uStack_78,uVar10)" ( (binary_expression "uVar10 < uStack_78" identifier < identifier) , identifier )))) + (binary_expression "(ulonglong)uVar19 * (ulonglong)c.w[3]" (cast_expression "(ulonglong)uVar19" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)c.w[3]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[3]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]))))) ;) (expression_statement "uStack_70 = uVar1 & 0xffffffff;" (assignment_expression "uStack_70 = uVar1 & 0xffffffff" identifier = (binary_expression "uVar1 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[3] + (uVar1 >> 0x20);" (assignment_expression "uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[3] + (uVar1 >> 0x20)" identifier = (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[3] + (uVar1 >> 0x20)" (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[3]" (parenthesized_expression "(uVar2 & 0xffffffff)" ( (binary_expression "uVar2 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar20 * (ulonglong)c.w[3]" (cast_expression "(ulonglong)uVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)c.w[3]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[3]" (field_expression "c.w" identifier . field_identifier) [ number_literal ])))) + (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar2 = (uVar4 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[2] + (uVar2 >> 0x20);" (assignment_expression "uVar2 = (uVar4 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[2] + (uVar2 >> 0x20)" identifier = (binary_expression "(uVar4 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[2] + (uVar2 >> 0x20)" (binary_expression "(uVar4 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[2]" (parenthesized_expression "(uVar4 >> 0x20)" ( (binary_expression "uVar4 >> 0x20" identifier >> number_literal) )) + (binary_expression "(ulonglong)(ctx->r).w[4] * (ulonglong)c.w[2]" (subscript_expression "(ulonglong)(ctx->r).w[4]" (field_expression "(ulonglong)(ctx->r).w" (call_expression "(ulonglong)(ctx->r)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(ctx->r)" ( (field_expression "ctx->r" identifier -> field_identifier) ))) . field_identifier) [ number_literal ]) * (cast_expression "(ulonglong)c.w[2]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[2]" (field_expression "c.w" identifier . field_identifier) [ number_literal ])))) + (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "lVar7 = uStack_70 + (ulonglong)uVar13 * (ulonglong)c.w[4];" (assignment_expression "lVar7 = uStack_70 + (ulonglong)uVar13 * (ulonglong)c.w[4]" identifier = (binary_expression "uStack_70 + (ulonglong)uVar13 * (ulonglong)c.w[4]" identifier + (binary_expression "(ulonglong)uVar13 * (ulonglong)c.w[4]" (cast_expression "(ulonglong)uVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)c.w[4]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[4]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]))))) ;) (expression_statement "uVar25 = (uint)((ulonglong)lVar7 >> 0x20);" (assignment_expression "uVar25 = (uint)((ulonglong)lVar7 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar7 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar7 >> 0x20)" ( (binary_expression "(ulonglong)lVar7 >> 0x20" (cast_expression "(ulonglong)lVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar10 = (int)uVar1 + uVar25;" (assignment_expression "uVar10 = (int)uVar1 + uVar25" identifier = (binary_expression "(int)uVar1 + uVar25" (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "uVar4 = (uVar2 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[3] + (uVar1 >> 0x20);" (assignment_expression "uVar4 = (uVar2 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[3] + (uVar1 >> 0x20)" identifier = (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[3] + (uVar1 >> 0x20)" (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar23 * (ulonglong)c.w[3]" (parenthesized_expression "(uVar2 & 0xffffffff)" ( (binary_expression "uVar2 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar23 * (ulonglong)c.w[3]" (cast_expression "(ulonglong)uVar23" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)c.w[3]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[3]" (field_expression "c.w" identifier . field_identifier) [ number_literal ])))) + (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar17 = (uint)(uVar4 >> 0x20);" (assignment_expression "uVar17 = (uint)(uVar4 >> 0x20)" identifier = (call_expression "(uint)(uVar4 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 >> 0x20)" ( (binary_expression "uVar4 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar1 = (ulonglong)CONCAT14(uVar10 < uVar25,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[4];" (assignment_expression "uVar1 = (ulonglong)CONCAT14(uVar10 < uVar25,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[4]" identifier = (binary_expression "(ulonglong)CONCAT14(uVar10 < uVar25,uVar10) + (ulonglong)uVar19 * (ulonglong)c.w[4]" (cast_expression "(ulonglong)CONCAT14(uVar10 < uVar25,uVar10)" ( (type_descriptor "ulonglong" type_identifier) ) (call_expression "CONCAT14(uVar10 < uVar25,uVar10)" identifier (argument_list "(uVar10 < uVar25,uVar10)" ( (binary_expression "uVar10 < uVar25" identifier < identifier) , identifier )))) + (binary_expression "(ulonglong)uVar19 * (ulonglong)c.w[4]" (cast_expression "(ulonglong)uVar19" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)c.w[4]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[4]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]))))) ;) (expression_statement "uStack_4c = (uint)uVar1;" (assignment_expression "uStack_4c = (uint)uVar1" identifier = (cast_expression "(uint)uVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "lVar8 = (uVar2 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[3];" (assignment_expression "lVar8 = (uVar2 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[3]" identifier = (binary_expression "(uVar2 >> 0x20) + (ulonglong)(ctx->r).w[4] * (ulonglong)c.w[3]" (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )) + (binary_expression "(ulonglong)(ctx->r).w[4] * (ulonglong)c.w[3]" (subscript_expression "(ulonglong)(ctx->r).w[4]" (field_expression "(ulonglong)(ctx->r).w" (call_expression "(ulonglong)(ctx->r)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(ctx->r)" ( (field_expression "ctx->r" identifier -> field_identifier) ))) . field_identifier) [ number_literal ]) * (cast_expression "(ulonglong)c.w[3]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[3]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]))))) ;) (expression_statement "uStack_70._4_4_ = (uint)lVar7;" (assignment_expression "uStack_70._4_4_ = (uint)lVar7" (field_expression "uStack_70._4_4_" identifier . field_identifier) = (cast_expression "(uint)lVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar12 = (uStack_70._4_4_ >> 2) * 4;" (assignment_expression "uVar12 = (uStack_70._4_4_ >> 2) * 4" identifier = (binary_expression "(uStack_70._4_4_ >> 2) * 4" (parenthesized_expression "(uStack_70._4_4_ >> 2)" ( (binary_expression "uStack_70._4_4_ >> 2" (field_expression "uStack_70._4_4_" identifier . field_identifier) >> number_literal) )) * number_literal)) ;) (expression_statement "uVar19 = uVar12 + (uStack_70._4_4_ >> 2 | uStack_4c << 0x1e);" (assignment_expression "uVar19 = uVar12 + (uStack_70._4_4_ >> 2 | uStack_4c << 0x1e)" identifier = (binary_expression "uVar12 + (uStack_70._4_4_ >> 2 | uStack_4c << 0x1e)" identifier + (parenthesized_expression "(uStack_70._4_4_ >> 2 | uStack_4c << 0x1e)" ( (binary_expression "uStack_70._4_4_ >> 2 | uStack_4c << 0x1e" (binary_expression "uStack_70._4_4_ >> 2" (field_expression "uStack_70._4_4_" identifier . field_identifier) >> number_literal) | (binary_expression "uStack_4c << 0x1e" identifier << number_literal)) )))) ;) (expression_statement "uVar10 = uVar17 + (int)lVar8;" (assignment_expression "uVar10 = uVar17 + (int)lVar8" identifier = (binary_expression "uVar17 + (int)lVar8" identifier + (cast_expression "(int)lVar8" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "lVar7 = (uVar4 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[4] + (uVar1 >> 0x20);" (assignment_expression "lVar7 = (uVar4 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[4] + (uVar1 >> 0x20)" identifier = (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[4] + (uVar1 >> 0x20)" (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar20 * (ulonglong)c.w[4]" (parenthesized_expression "(uVar4 & 0xffffffff)" ( (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar20 * (ulonglong)c.w[4]" (cast_expression "(ulonglong)uVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)c.w[4]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[4]" (field_expression "c.w" identifier . field_identifier) [ number_literal ])))) + (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar15 = (uint)lVar7;" (assignment_expression "uVar15 = (uint)lVar7" identifier = (cast_expression "(uint)lVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar25 = (uint)((ulonglong)lVar7 >> 0x20);" (assignment_expression "uVar25 = (uint)((ulonglong)lVar7 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar7 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar7 >> 0x20)" ( (binary_expression "(ulonglong)lVar7 >> 0x20" (cast_expression "(ulonglong)lVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_64 = (uint)((ulonglong)c.w[0] * (ulonglong)uVar13);" (assignment_expression "uStack_64 = (uint)((ulonglong)c.w[0] * (ulonglong)uVar13)" identifier = (call_expression "(uint)((ulonglong)c.w[0] * (ulonglong)uVar13)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)c.w[0] * (ulonglong)uVar13)" ( (binary_expression "(ulonglong)c.w[0] * (ulonglong)uVar13" (cast_expression "(ulonglong)c.w[0]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[0]" (field_expression "c.w" identifier . field_identifier) [ number_literal ])) * (cast_expression "(ulonglong)uVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )))) ;) (expression_statement "uVar20 = uVar19 + uStack_64;" (assignment_expression "uVar20 = uVar19 + uStack_64" identifier = (binary_expression "uVar19 + uStack_64" identifier + identifier)) ;) (expression_statement "lVar7 = (ulonglong)uVar10 + (ulonglong)uVar23 * (ulonglong)c.w[4];" (assignment_expression "lVar7 = (ulonglong)uVar10 + (ulonglong)uVar23 * (ulonglong)c.w[4]" identifier = (binary_expression "(ulonglong)uVar10 + (ulonglong)uVar23 * (ulonglong)c.w[4]" (cast_expression "(ulonglong)uVar10" ( (type_descriptor "ulonglong" type_identifier) ) identifier) + (binary_expression "(ulonglong)uVar23 * (ulonglong)c.w[4]" (cast_expression "(ulonglong)uVar23" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)c.w[4]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "c.w[4]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]))))) ;) (expression_statement "uVar13 = (uint)(uVar20 < uStack_64);" (assignment_expression "uVar13 = (uint)(uVar20 < uStack_64)" identifier = (call_expression "(uint)(uVar20 < uStack_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar20 < uStack_64)" ( (binary_expression "uVar20 < uStack_64" identifier < identifier) )))) ;) (expression_statement "iStack_5c = (int)lVar5;" (assignment_expression "iStack_5c = (int)lVar5" identifier = (cast_expression "(int)lVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iStack_54 = (int)lVar3;" (assignment_expression "iStack_54 = (int)lVar3" identifier = (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar23 = uVar25 + (int)lVar7;" (assignment_expression "uVar23 = uVar25 + (int)lVar7" identifier = (binary_expression "uVar25 + (int)lVar7" identifier + (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar16 = uVar13 + iStack_54;" (assignment_expression "uVar16 = uVar13 + iStack_54" identifier = (binary_expression "uVar13 + iStack_54" identifier + identifier)) ;) (expression_statement "uVar17 = c.w[4] * (ctx->r).w[4] + (uint)(uVar10 < uVar17) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar23 < uVar25) + (int)((ulonglong)lVar7 >> 0x20);" (assignment_expression "uVar17 = c.w[4] * (ctx->r).w[4] + (uint)(uVar10 < uVar17) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar23 < uVar25) + (int)((ulonglong)lVar7 >> 0x20)" identifier = (binary_expression "c.w[4] * (ctx->r).w[4] + (uint)(uVar10 < uVar17) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar23 < uVar25) + (int)((ulonglong)lVar7 >> 0x20)" (binary_expression "c.w[4] * (ctx->r).w[4] + (uint)(uVar10 < uVar17) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar23 < uVar25)" (binary_expression "c.w[4] * (ctx->r).w[4] + (uint)(uVar10 < uVar17) + (int)((ulonglong)lVar8 >> 0x20)" (binary_expression "c.w[4] * (ctx->r).w[4] + (uint)(uVar10 < uVar17)" (binary_expression "c.w[4] * (ctx->r).w[4]" (subscript_expression "c.w[4]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]) * (subscript_expression "(ctx->r).w[4]" (field_expression "(ctx->r).w" (parenthesized_expression "(ctx->r)" ( (field_expression "ctx->r" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) + (call_expression "(uint)(uVar10 < uVar17)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar10 < uVar17)" ( (binary_expression "uVar10 < uVar17" identifier < identifier) )))) + (cast_expression "(int)((ulonglong)lVar8 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar8 >> 0x20)" ( (binary_expression "(ulonglong)lVar8 >> 0x20" (cast_expression "(ulonglong)lVar8" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) + (call_expression "(uint)(uVar23 < uVar25)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar23 < uVar25)" ( (binary_expression "uVar23 < uVar25" identifier < identifier) )))) + (cast_expression "(int)((ulonglong)lVar7 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar7 >> 0x20)" ( (binary_expression "(ulonglong)lVar7 >> 0x20" (cast_expression "(ulonglong)lVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))))) ;) (expression_statement "lVar3 = (ulonglong)((uint)(uVar19 < uVar12) + (uStack_4c & 3)) +\n          (ulonglong)(uStack_4c >> 2 | uVar15 * 0x40000000) * 5;" (assignment_expression "lVar3 = (ulonglong)((uint)(uVar19 < uVar12) + (uStack_4c & 3)) +\n          (ulonglong)(uStack_4c >> 2 | uVar15 * 0x40000000) * 5" identifier = (binary_expression "(ulonglong)((uint)(uVar19 < uVar12) + (uStack_4c & 3)) +\n          (ulonglong)(uStack_4c >> 2 | uVar15 * 0x40000000) * 5" (call_expression "(ulonglong)((uint)(uVar19 < uVar12) + (uStack_4c & 3))" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "((uint)(uVar19 < uVar12) + (uStack_4c & 3))" ( (binary_expression "(uint)(uVar19 < uVar12) + (uStack_4c & 3)" (call_expression "(uint)(uVar19 < uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar19 < uVar12)" ( (binary_expression "uVar19 < uVar12" identifier < identifier) ))) + (parenthesized_expression "(uStack_4c & 3)" ( (binary_expression "uStack_4c & 3" identifier & number_literal) ))) ))) + (binary_expression "(ulonglong)(uStack_4c >> 2 | uVar15 * 0x40000000) * 5" (call_expression "(ulonglong)(uStack_4c >> 2 | uVar15 * 0x40000000)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uStack_4c >> 2 | uVar15 * 0x40000000)" ( (binary_expression "uStack_4c >> 2 | uVar15 * 0x40000000" (binary_expression "uStack_4c >> 2" identifier >> number_literal) | (binary_expression "uVar15 * 0x40000000" identifier * number_literal)) ))) * number_literal))) ;) (expression_statement "uStack_98 = (uint)((ulonglong)lVar3 >> 0x20);" (assignment_expression "uStack_98 = (uint)((ulonglong)lVar3 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar3 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar3 >> 0x20)" ( (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar19 = uVar16 + (int)lVar3;" (assignment_expression "uVar19 = uVar16 + (int)lVar3" identifier = (binary_expression "uVar16 + (int)lVar3" identifier + (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar25 = (uint)(uVar19 < uVar16) + (uint)(uVar16 < uVar13);" (assignment_expression "uVar25 = (uint)(uVar19 < uVar16) + (uint)(uVar16 < uVar13)" identifier = (binary_expression "(uint)(uVar19 < uVar16) + (uint)(uVar16 < uVar13)" (call_expression "(uint)(uVar19 < uVar16)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar19 < uVar16)" ( (binary_expression "uVar19 < uVar16" identifier < identifier) ))) + (call_expression "(uint)(uVar16 < uVar13)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar16 < uVar13)" ( (binary_expression "uVar16 < uVar13" identifier < identifier) ))))) ;) (expression_statement "uStack_74 = (uint)lVar6;" (assignment_expression "uStack_74 = (uint)lVar6" identifier = (cast_expression "(uint)lVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar1 = (ulonglong)uStack_98 + (ulonglong)(uVar15 >> 2 | uVar23 * 0x40000000) * 5;" (assignment_expression "uVar1 = (ulonglong)uStack_98 + (ulonglong)(uVar15 >> 2 | uVar23 * 0x40000000) * 5" identifier = (binary_expression "(ulonglong)uStack_98 + (ulonglong)(uVar15 >> 2 | uVar23 * 0x40000000) * 5" (cast_expression "(ulonglong)uStack_98" ( (type_descriptor "ulonglong" type_identifier) ) identifier) + (binary_expression "(ulonglong)(uVar15 >> 2 | uVar23 * 0x40000000) * 5" (call_expression "(ulonglong)(uVar15 >> 2 | uVar23 * 0x40000000)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar15 >> 2 | uVar23 * 0x40000000)" ( (binary_expression "uVar15 >> 2 | uVar23 * 0x40000000" (binary_expression "uVar15 >> 2" identifier >> number_literal) | (binary_expression "uVar23 * 0x40000000" identifier * number_literal)) ))) * number_literal))) ;) (expression_statement "uVar10 = (uVar17 >> 4) * 0x19;" (assignment_expression "uVar10 = (uVar17 >> 4) * 0x19" identifier = (binary_expression "(uVar17 >> 4) * 0x19" (parenthesized_expression "(uVar17 >> 4)" ( (binary_expression "uVar17 >> 4" identifier >> number_literal) )) * number_literal)) ;) (expression_statement "uVar20 = uVar10 + uVar20;" (assignment_expression "uVar20 = uVar10 + uVar20" identifier = (binary_expression "uVar10 + uVar20" identifier + identifier)) ;) (expression_statement "uVar13 = uVar25 + (int)uVar1;" (assignment_expression "uVar13 = uVar25 + (int)uVar1" identifier = (binary_expression "uVar25 + (int)uVar1" identifier + (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "(ctx->h).w[0] = uVar20;" (assignment_expression "(ctx->h).w[0] = uVar20" (subscript_expression "(ctx->h).w[0]" (field_expression "(ctx->h).w" (parenthesized_expression "(ctx->h)" ( (field_expression "ctx->h" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "uVar10 = (uint)(uVar20 < uVar10);" (assignment_expression "uVar10 = (uint)(uVar20 < uVar10)" identifier = (call_expression "(uint)(uVar20 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar20 < uVar10)" ( (binary_expression "uVar20 < uVar10" identifier < identifier) )))) ;) (expression_statement "uVar19 = uVar10 + uVar19;" (assignment_expression "uVar19 = uVar10 + uVar19" identifier = (binary_expression "uVar10 + uVar19" identifier + identifier)) ;) (expression_statement "(ctx->h).w[1] = uVar19;" (assignment_expression "(ctx->h).w[1] = uVar19" (subscript_expression "(ctx->h).w[1]" (field_expression "(ctx->h).w" (parenthesized_expression "(ctx->h)" ( (field_expression "ctx->h" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "uVar20 = (uint)(uVar19 < uVar10);" (assignment_expression "uVar20 = (uint)(uVar19 < uVar10)" identifier = (call_expression "(uint)(uVar19 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar19 < uVar10)" ( (binary_expression "uVar19 < uVar10" identifier < identifier) )))) ;) (expression_statement "lStack_a0 = (uVar1 >> 0x20) + (ulonglong)(uVar23 >> 2 | uVar17 * 0x40000000) * 5;" (assignment_expression "lStack_a0 = (uVar1 >> 0x20) + (ulonglong)(uVar23 >> 2 | uVar17 * 0x40000000) * 5" identifier = (binary_expression "(uVar1 >> 0x20) + (ulonglong)(uVar23 >> 2 | uVar17 * 0x40000000) * 5" (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )) + (binary_expression "(ulonglong)(uVar23 >> 2 | uVar17 * 0x40000000) * 5" (call_expression "(ulonglong)(uVar23 >> 2 | uVar17 * 0x40000000)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar23 >> 2 | uVar17 * 0x40000000)" ( (binary_expression "uVar23 >> 2 | uVar17 * 0x40000000" (binary_expression "uVar23 >> 2" identifier >> number_literal) | (binary_expression "uVar17 * 0x40000000" identifier * number_literal)) ))) * number_literal))) ;) (expression_statement "uVar19 = (uint)(uVar13 + iStack_5c < uVar13) + (uint)(uVar13 < uVar25);" (assignment_expression "uVar19 = (uint)(uVar13 + iStack_5c < uVar13) + (uint)(uVar13 < uVar25)" identifier = (binary_expression "(uint)(uVar13 + iStack_5c < uVar13) + (uint)(uVar13 < uVar25)" (call_expression "(uint)(uVar13 + iStack_5c < uVar13)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 + iStack_5c < uVar13)" ( (binary_expression "uVar13 + iStack_5c < uVar13" (binary_expression "uVar13 + iStack_5c" identifier + identifier) < identifier) ))) + (call_expression "(uint)(uVar13 < uVar25)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 < uVar25)" ( (binary_expression "uVar13 < uVar25" identifier < identifier) ))))) ;) (expression_statement "uVar10 = uVar20 + uVar13 + iStack_5c;" (assignment_expression "uVar10 = uVar20 + uVar13 + iStack_5c" identifier = (binary_expression "uVar20 + uVar13 + iStack_5c" (binary_expression "uVar20 + uVar13" identifier + identifier) + identifier)) ;) (expression_statement "(ctx->h).w[2] = uVar10;" (assignment_expression "(ctx->h).w[2] = uVar10" (subscript_expression "(ctx->h).w[2]" (field_expression "(ctx->h).w" (parenthesized_expression "(ctx->h)" ( (field_expression "ctx->h" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "uVar25 = (uint)(uVar10 < uVar20);" (assignment_expression "uVar25 = (uint)(uVar10 < uVar20)" identifier = (call_expression "(uint)(uVar10 < uVar20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar10 < uVar20)" ( (binary_expression "uVar10 < uVar20" identifier < identifier) )))) ;) (expression_statement "uVar13 = (int)lStack_a0 + uStack_74;" (assignment_expression "uVar13 = (int)lStack_a0 + uStack_74" identifier = (binary_expression "(int)lStack_a0 + uStack_74" (cast_expression "(int)lStack_a0" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "uVar10 = uVar19 + uVar13;" (assignment_expression "uVar10 = uVar19 + uVar13" identifier = (binary_expression "uVar19 + uVar13" identifier + identifier)) ;) (expression_statement "uVar20 = (uint)(uVar13 < uStack_74);" (assignment_expression "uVar20 = (uint)(uVar13 < uStack_74)" identifier = (call_expression "(uint)(uVar13 < uStack_74)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 < uStack_74)" ( (binary_expression "uVar13 < uStack_74" identifier < identifier) )))) ;) (expression_statement "uVar13 = uVar25 + uVar10;" (assignment_expression "uVar13 = uVar25 + uVar10" identifier = (binary_expression "uVar25 + uVar10" identifier + identifier)) ;) (expression_statement "(ctx->h).w[3] = uVar13;" (assignment_expression "(ctx->h).w[3] = uVar13" (subscript_expression "(ctx->h).w[3]" (field_expression "(ctx->h).w" (parenthesized_expression "(ctx->h)" ( (field_expression "ctx->h" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "ctx_00 = (poly1305 *)\n           ((uVar17 * 0x10000000 >> 0x1e) * 5 + (uStack_70._4_4_ & 3) +\n            (int)((ulonglong)lStack_a0 >> 0x20) + (uVar10 < uVar19) + uVar20 +\n           (uint)(uVar13 < uVar25));" (assignment_expression "ctx_00 = (poly1305 *)\n           ((uVar17 * 0x10000000 >> 0x1e) * 5 + (uStack_70._4_4_ & 3) +\n            (int)((ulonglong)lStack_a0 >> 0x20) + (uVar10 < uVar19) + uVar20 +\n           (uint)(uVar13 < uVar25))" identifier = (cast_expression "(poly1305 *)\n           ((uVar17 * 0x10000000 >> 0x1e) * 5 + (uStack_70._4_4_ & 3) +\n            (int)((ulonglong)lStack_a0 >> 0x20) + (uVar10 < uVar19) + uVar20 +\n           (uint)(uVar13 < uVar25))" ( (type_descriptor "poly1305 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar17 * 0x10000000 >> 0x1e) * 5 + (uStack_70._4_4_ & 3) +\n            (int)((ulonglong)lStack_a0 >> 0x20) + (uVar10 < uVar19) + uVar20 +\n           (uint)(uVar13 < uVar25))" ( (binary_expression "(uVar17 * 0x10000000 >> 0x1e) * 5 + (uStack_70._4_4_ & 3) +\n            (int)((ulonglong)lStack_a0 >> 0x20) + (uVar10 < uVar19) + uVar20 +\n           (uint)(uVar13 < uVar25)" (binary_expression "(uVar17 * 0x10000000 >> 0x1e) * 5 + (uStack_70._4_4_ & 3) +\n            (int)((ulonglong)lStack_a0 >> 0x20) + (uVar10 < uVar19) + uVar20" (binary_expression "(uVar17 * 0x10000000 >> 0x1e) * 5 + (uStack_70._4_4_ & 3) +\n            (int)((ulonglong)lStack_a0 >> 0x20) + (uVar10 < uVar19)" (binary_expression "(uVar17 * 0x10000000 >> 0x1e) * 5 + (uStack_70._4_4_ & 3) +\n            (int)((ulonglong)lStack_a0 >> 0x20)" (binary_expression "(uVar17 * 0x10000000 >> 0x1e) * 5 + (uStack_70._4_4_ & 3)" (binary_expression "(uVar17 * 0x10000000 >> 0x1e) * 5" (parenthesized_expression "(uVar17 * 0x10000000 >> 0x1e)" ( (binary_expression "uVar17 * 0x10000000 >> 0x1e" (binary_expression "uVar17 * 0x10000000" identifier * number_literal) >> number_literal) )) * number_literal) + (parenthesized_expression "(uStack_70._4_4_ & 3)" ( (binary_expression "uStack_70._4_4_ & 3" (field_expression "uStack_70._4_4_" identifier . field_identifier) & number_literal) ))) + (cast_expression "(int)((ulonglong)lStack_a0 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lStack_a0 >> 0x20)" ( (binary_expression "(ulonglong)lStack_a0 >> 0x20" (cast_expression "(ulonglong)lStack_a0" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) + (parenthesized_expression "(uVar10 < uVar19)" ( (binary_expression "uVar10 < uVar19" identifier < identifier) ))) + identifier) + (call_expression "(uint)(uVar13 < uVar25)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 < uVar25)" ( (binary_expression "uVar13 < uVar25" identifier < identifier) )))) )))) ;) (expression_statement "(ctx->h).w[4] = (BignumInt)ctx_00;" (assignment_expression "(ctx->h).w[4] = (BignumInt)ctx_00" (subscript_expression "(ctx->h).w[4]" (field_expression "(ctx->h).w" (parenthesized_expression "(ctx->h)" ( (field_expression "ctx->h" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (cast_expression "(BignumInt)ctx_00" ( (type_descriptor "BignumInt" type_identifier) ) identifier)) ;) (if_statement "if (iVar9 == iVar21) {\n    return;\n  }" if (parenthesized_expression "(iVar9 == iVar21)" ( (binary_expression "iVar9 == iVar21" identifier == identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar24 = poly1305_finalise;" (assignment_expression "pcVar24 = poly1305_finalise" identifier = identifier) ;) (expression_statement "puVar22 = PTR___stack_chk_fail_000b0c70;" (assignment_expression "puVar22 = PTR___stack_chk_fail_000b0c70" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000b0c70)();" (call_expression "(*(code *)PTR___stack_chk_fail_000b0c70)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000b0c70)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000b0c70" * (cast_expression "(code *)PTR___stack_chk_fail_000b0c70" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar18 = *(int **)(puVar22 + 0x56124);" (assignment_expression "piVar18 = *(int **)(puVar22 + 0x56124)" identifier = (pointer_expression "*(int **)(puVar22 + 0x56124)" * (cast_expression "(int **)(puVar22 + 0x56124)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x56124)" ( (binary_expression "puVar22 + 0x56124" identifier + number_literal) ))))) ;) (expression_statement "iStack_a4 = *piVar18;" (assignment_expression "iStack_a4 = *piVar18" identifier = (pointer_expression "*piVar18" * identifier)) ;) (expression_statement "pcStack_94 = pcVar24;" (assignment_expression "pcStack_94 = pcVar24" identifier = identifier) ;) (if_statement "if (ctx_00->bufferIndex != 0) {\n    poly1305_feed_chunk(ctx_00,ctx_00->buffer,ctx_00->bufferIndex);\n  }" if (parenthesized_expression "(ctx_00->bufferIndex != 0)" ( (binary_expression "ctx_00->bufferIndex != 0" (field_expression "ctx_00->bufferIndex" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n    poly1305_feed_chunk(ctx_00,ctx_00->buffer,ctx_00->bufferIndex);\n  }" { (expression_statement "poly1305_feed_chunk(ctx_00,ctx_00->buffer,ctx_00->bufferIndex);" (call_expression "poly1305_feed_chunk(ctx_00,ctx_00->buffer,ctx_00->bufferIndex)" identifier (argument_list "(ctx_00,ctx_00->buffer,ctx_00->bufferIndex)" ( identifier , (field_expression "ctx_00->buffer" identifier -> field_identifier) , (field_expression "ctx_00->bufferIndex" identifier -> field_identifier) ))) ;) })) (expression_statement "r = &bStack_b8;" (assignment_expression "r = &bStack_b8" identifier = (pointer_expression "&bStack_b8" & identifier)) ;) (expression_statement "bStack_b8.w[0] = 0;" (assignment_expression "bStack_b8.w[0] = 0" (subscript_expression "bStack_b8.w[0]" (field_expression "bStack_b8.w" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "bStack_b8.w[1] = 0;" (assignment_expression "bStack_b8.w[1] = 0" (subscript_expression "bStack_b8.w[1]" (field_expression "bStack_b8.w" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "bStack_b8.w[2] = 0;" (assignment_expression "bStack_b8.w[2] = 0" (subscript_expression "bStack_b8.w[2]" (field_expression "bStack_b8.w" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "bStack_b8.w[3] = 0;" (assignment_expression "bStack_b8.w[3] = 0" (subscript_expression "bStack_b8.w[3]" (field_expression "bStack_b8.w" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "bStack_b8.w[4] = 0;" (assignment_expression "bStack_b8.w[4] = 0" (subscript_expression "bStack_b8.w[4]" (field_expression "bStack_b8.w" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "pbVar14 = r;" (assignment_expression "pbVar14 = r" identifier = identifier) ;) (expression_statement "bigval_import_le(r,ctx_00,0x10);" (call_expression "bigval_import_le(r,ctx_00,0x10)" identifier (argument_list "(r,ctx_00,0x10)" ( identifier , identifier , number_literal ))) ;) (expression_statement "uVar13 = (ctx_00->h).w[4];" (assignment_expression "uVar13 = (ctx_00->h).w[4]" identifier = (subscript_expression "(ctx_00->h).w[4]" (field_expression "(ctx_00->h).w" (parenthesized_expression "(ctx_00->h)" ( (field_expression "ctx_00->h" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (expression_statement "uVar10 = (uVar13 >> 2) * 5;" (assignment_expression "uVar10 = (uVar13 >> 2) * 5" identifier = (binary_expression "(uVar13 >> 2) * 5" (parenthesized_expression "(uVar13 >> 2)" ( (binary_expression "uVar13 >> 2" identifier >> number_literal) )) * number_literal)) ;) (expression_statement "uVar25 = (ctx_00->h).w[0] + uVar10;" (assignment_expression "uVar25 = (ctx_00->h).w[0] + uVar10" identifier = (binary_expression "(ctx_00->h).w[0] + uVar10" (subscript_expression "(ctx_00->h).w[0]" (field_expression "(ctx_00->h).w" (parenthesized_expression "(ctx_00->h)" ( (field_expression "ctx_00->h" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) + identifier)) ;) (expression_statement "uVar19 = (uint)(uVar25 < uVar10);" (assignment_expression "uVar19 = (uint)(uVar25 < uVar10)" identifier = (call_expression "(uint)(uVar25 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar25 < uVar10)" ( (binary_expression "uVar25 < uVar10" identifier < identifier) )))) ;) (expression_statement "uVar16 = uVar19 + (ctx_00->h).w[1];" (assignment_expression "uVar16 = uVar19 + (ctx_00->h).w[1]" identifier = (binary_expression "uVar19 + (ctx_00->h).w[1]" identifier + (subscript_expression "(ctx_00->h).w[1]" (field_expression "(ctx_00->h).w" (parenthesized_expression "(ctx_00->h)" ( (field_expression "ctx_00->h" identifier -> field_identifier) )) . field_identifier) [ number_literal ]))) ;) (expression_statement "uVar10 = (uint)(uVar25 + 5 < uVar25);" (assignment_expression "uVar10 = (uint)(uVar25 + 5 < uVar25)" identifier = (call_expression "(uint)(uVar25 + 5 < uVar25)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar25 + 5 < uVar25)" ( (binary_expression "uVar25 + 5 < uVar25" (binary_expression "uVar25 + 5" identifier + number_literal) < identifier) )))) ;) (expression_statement "uVar19 = (uint)(uVar16 < uVar19);" (assignment_expression "uVar19 = (uint)(uVar16 < uVar19)" identifier = (call_expression "(uint)(uVar16 < uVar19)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar16 < uVar19)" ( (binary_expression "uVar16 < uVar19" identifier < identifier) )))) ;) (expression_statement "uVar15 = uVar19 + (ctx_00->h).w[2];" (assignment_expression "uVar15 = uVar19 + (ctx_00->h).w[2]" identifier = (binary_expression "uVar19 + (ctx_00->h).w[2]" identifier + (subscript_expression "(ctx_00->h).w[2]" (field_expression "(ctx_00->h).w" (parenthesized_expression "(ctx_00->h)" ( (field_expression "ctx_00->h" identifier -> field_identifier) )) . field_identifier) [ number_literal ]))) ;) (expression_statement "uVar12 = (uint)(uVar10 + uVar16 < uVar10);" (assignment_expression "uVar12 = (uint)(uVar10 + uVar16 < uVar10)" identifier = (call_expression "(uint)(uVar10 + uVar16 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar10 + uVar16 < uVar10)" ( (binary_expression "uVar10 + uVar16 < uVar10" (binary_expression "uVar10 + uVar16" identifier + identifier) < identifier) )))) ;) (expression_statement "uVar10 = (uint)(uVar15 < uVar19);" (assignment_expression "uVar10 = (uint)(uVar15 < uVar19)" identifier = (call_expression "(uint)(uVar15 < uVar19)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar15 < uVar19)" ( (binary_expression "uVar15 < uVar19" identifier < identifier) )))) ;) (expression_statement "uVar23 = uVar10 + (ctx_00->h).w[3];" (assignment_expression "uVar23 = uVar10 + (ctx_00->h).w[3]" identifier = (binary_expression "uVar10 + (ctx_00->h).w[3]" identifier + (subscript_expression "(ctx_00->h).w[3]" (field_expression "(ctx_00->h).w" (parenthesized_expression "(ctx_00->h)" ( (field_expression "ctx_00->h" identifier -> field_identifier) )) . field_identifier) [ number_literal ]))) ;) (expression_statement "uVar19 = (uint)(uVar12 + uVar15 < uVar12);" (assignment_expression "uVar19 = (uint)(uVar12 + uVar15 < uVar12)" identifier = (call_expression "(uint)(uVar12 + uVar15 < uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar12 + uVar15 < uVar12)" ( (binary_expression "uVar12 + uVar15 < uVar12" (binary_expression "uVar12 + uVar15" identifier + identifier) < identifier) )))) ;) (expression_statement "iVar9 = (uVar13 & 3) + (uint)(uVar23 < uVar10);" (assignment_expression "iVar9 = (uVar13 & 3) + (uint)(uVar23 < uVar10)" identifier = (binary_expression "(uVar13 & 3) + (uint)(uVar23 < uVar10)" (parenthesized_expression "(uVar13 & 3)" ( (binary_expression "uVar13 & 3" identifier & number_literal) )) + (call_expression "(uint)(uVar23 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar23 < uVar10)" ( (binary_expression "uVar23 < uVar10" identifier < identifier) ))))) ;) (expression_statement "uVar10 = (iVar9 + (uint)(uVar19 + uVar23 < uVar19) >> 2) * 5;" (assignment_expression "uVar10 = (iVar9 + (uint)(uVar19 + uVar23 < uVar19) >> 2) * 5" identifier = (binary_expression "(iVar9 + (uint)(uVar19 + uVar23 < uVar19) >> 2) * 5" (parenthesized_expression "(iVar9 + (uint)(uVar19 + uVar23 < uVar19) >> 2)" ( (binary_expression "iVar9 + (uint)(uVar19 + uVar23 < uVar19) >> 2" (binary_expression "iVar9 + (uint)(uVar19 + uVar23 < uVar19)" identifier + (call_expression "(uint)(uVar19 + uVar23 < uVar19)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar19 + uVar23 < uVar19)" ( (binary_expression "uVar19 + uVar23 < uVar19" (binary_expression "uVar19 + uVar23" identifier + identifier) < identifier) )))) >> number_literal) )) * number_literal)) ;) (expression_statement "uVar25 = uVar10 + uVar25;" (assignment_expression "uVar25 = uVar10 + uVar25" identifier = (binary_expression "uVar10 + uVar25" identifier + identifier)) ;) (expression_statement "uVar10 = (uint)(uVar25 < uVar10);" (assignment_expression "uVar10 = (uint)(uVar25 < uVar10)" identifier = (call_expression "(uint)(uVar25 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar25 < uVar10)" ( (binary_expression "uVar25 < uVar10" identifier < identifier) )))) ;) (expression_statement "(ctx_00->h).w[0] = uVar25;" (assignment_expression "(ctx_00->h).w[0] = uVar25" (subscript_expression "(ctx_00->h).w[0]" (field_expression "(ctx_00->h).w" (parenthesized_expression "(ctx_00->h)" ( (field_expression "ctx_00->h" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "uVar16 = uVar10 + uVar16;" (assignment_expression "uVar16 = uVar10 + uVar16" identifier = (binary_expression "uVar10 + uVar16" identifier + identifier)) ;) (expression_statement "uVar10 = (uint)(uVar16 < uVar10);" (assignment_expression "uVar10 = (uint)(uVar16 < uVar10)" identifier = (call_expression "(uint)(uVar16 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar16 < uVar10)" ( (binary_expression "uVar16 < uVar10" identifier < identifier) )))) ;) (expression_statement "(ctx_00->h).w[1] = uVar16;" (assignment_expression "(ctx_00->h).w[1] = uVar16" (subscript_expression "(ctx_00->h).w[1]" (field_expression "(ctx_00->h).w" (parenthesized_expression "(ctx_00->h)" ( (field_expression "ctx_00->h" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "uVar15 = uVar10 + uVar15;" (assignment_expression "uVar15 = uVar10 + uVar15" identifier = (binary_expression "uVar10 + uVar15" identifier + identifier)) ;) (expression_statement "uVar10 = (uint)(uVar15 < uVar10);" (assignment_expression "uVar10 = (uint)(uVar15 < uVar10)" identifier = (call_expression "(uint)(uVar15 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar15 < uVar10)" ( (binary_expression "uVar15 < uVar10" identifier < identifier) )))) ;) (expression_statement "(ctx_00->h).w[2] = uVar15;" (assignment_expression "(ctx_00->h).w[2] = uVar15" (subscript_expression "(ctx_00->h).w[2]" (field_expression "(ctx_00->h).w" (parenthesized_expression "(ctx_00->h)" ( (field_expression "ctx_00->h" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "uVar23 = uVar10 + uVar23;" (assignment_expression "uVar23 = uVar10 + uVar23" identifier = (binary_expression "uVar10 + uVar23" identifier + identifier)) ;) (expression_statement "(ctx_00->h).w[3] = uVar23;" (assignment_expression "(ctx_00->h).w[3] = uVar23" (subscript_expression "(ctx_00->h).w[3]" (field_expression "(ctx_00->h).w" (parenthesized_expression "(ctx_00->h)" ( (field_expression "ctx_00->h" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "(ctx_00->h).w[4] = iVar9 + (uint)(uVar23 < uVar10) & 3;" (assignment_expression "(ctx_00->h).w[4] = iVar9 + (uint)(uVar23 < uVar10) & 3" (subscript_expression "(ctx_00->h).w[4]" (field_expression "(ctx_00->h).w" (parenthesized_expression "(ctx_00->h)" ( (field_expression "ctx_00->h" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (binary_expression "iVar9 + (uint)(uVar23 < uVar10) & 3" (binary_expression "iVar9 + (uint)(uVar23 < uVar10)" identifier + (call_expression "(uint)(uVar23 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar23 < uVar10)" ( (binary_expression "uVar23 < uVar10" identifier < identifier) )))) & number_literal)) ;) (expression_statement "bigval_add(r,pbVar14,&ctx_00->h);" (call_expression "bigval_add(r,pbVar14,&ctx_00->h)" identifier (argument_list "(r,pbVar14,&ctx_00->h)" ( identifier , identifier , (pointer_expression "&ctx_00->h" & (field_expression "ctx_00->h" identifier -> field_identifier)) ))) ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n    iVar21 = iVar9 >> 2;\n    mac = (uchar *)(iVar9 << 3);\n    puVar11 = (undefined1 *)(uVar20 + iVar9);\n    iVar9 = iVar9 + 1;\n    *puVar11 = (char)(bStack_b8.w[iVar21] >> ((uint)mac & 0x1f));\n  } while (iVar9 != 0x10);" do (compound_statement "{\n    iVar21 = iVar9 >> 2;\n    mac = (uchar *)(iVar9 << 3);\n    puVar11 = (undefined1 *)(uVar20 + iVar9);\n    iVar9 = iVar9 + 1;\n    *puVar11 = (char)(bStack_b8.w[iVar21] >> ((uint)mac & 0x1f));\n  }" { (expression_statement "iVar21 = iVar9 >> 2;" (assignment_expression "iVar21 = iVar9 >> 2" identifier = (binary_expression "iVar9 >> 2" identifier >> number_literal)) ;) (expression_statement "mac = (uchar *)(iVar9 << 3);" (assignment_expression "mac = (uchar *)(iVar9 << 3)" identifier = (cast_expression "(uchar *)(iVar9 << 3)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 << 3)" ( (binary_expression "iVar9 << 3" identifier << number_literal) )))) ;) (expression_statement "puVar11 = (undefined1 *)(uVar20 + iVar9);" (assignment_expression "puVar11 = (undefined1 *)(uVar20 + iVar9)" identifier = (cast_expression "(undefined1 *)(uVar20 + iVar9)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar20 + iVar9)" ( (binary_expression "uVar20 + iVar9" identifier + identifier) )))) ;) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "*puVar11 = (char)(bStack_b8.w[iVar21] >> ((uint)mac & 0x1f));" (assignment_expression "*puVar11 = (char)(bStack_b8.w[iVar21] >> ((uint)mac & 0x1f))" (pointer_expression "*puVar11" * identifier) = (cast_expression "(char)(bStack_b8.w[iVar21] >> ((uint)mac & 0x1f))" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(bStack_b8.w[iVar21] >> ((uint)mac & 0x1f))" ( (binary_expression "bStack_b8.w[iVar21] >> ((uint)mac & 0x1f)" (subscript_expression "bStack_b8.w[iVar21]" (field_expression "bStack_b8.w" identifier . field_identifier) [ identifier ]) >> (parenthesized_expression "((uint)mac & 0x1f)" ( (binary_expression "(uint)mac & 0x1f" (cast_expression "(uint)mac" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) )))) ;) }) while (parenthesized_expression "(iVar9 != 0x10)" ( (binary_expression "iVar9 != 0x10" identifier != number_literal) )) ;) (if_statement "if (iStack_a4 == *piVar18) {\n    return;\n  }" if (parenthesized_expression "(iStack_a4 == *piVar18)" ( (binary_expression "iStack_a4 == *piVar18" identifier == (pointer_expression "*piVar18" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "(**(code **)(puVar22 + 0x560f8))();" (call_expression "(**(code **)(puVar22 + 0x560f8))()" (parenthesized_expression "(**(code **)(puVar22 + 0x560f8))" ( (pointer_expression "**(code **)(puVar22 + 0x560f8)" * (pointer_expression "*(code **)(puVar22 + 0x560f8)" * (cast_expression "(code **)(puVar22 + 0x560f8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x560f8)" ( (binary_expression "puVar22 + 0x560f8" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "poly1305_finalise((poly1305 *)(puVar11 + 0x114),mac);" (call_expression "poly1305_finalise((poly1305 *)(puVar11 + 0x114),mac)" identifier (argument_list "((poly1305 *)(puVar11 + 0x114),mac)" ( (cast_expression "(poly1305 *)(puVar11 + 0x114)" ( (type_descriptor "poly1305 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0x114)" ( (binary_expression "puVar11 + 0x114" identifier + number_literal) ))) , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0005a528(int param_1,undefined4 param_2,uint param_3)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  longlong lVar3;\n  ulonglong uVar4;\n  longlong lVar5;\n  longlong lVar6;\n  longlong lVar7;\n  longlong lVar8;\n  uint uVar9;\n  int iVar10;\n  undefined1 *puVar11;\n  undefined1 *puVar12;\n  uint uVar13;\n  uint uVar14;\n  uint *puVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  int *piVar19;\n  uint uVar20;\n  uint uVar21;\n  int iVar22;\n  code *pcVar23;\n  undefined *puVar24;\n  int iVar25;\n  undefined1 *puVar26;\n  uint uVar27;\n  code *pcVar28;\n  uint uVar29;\n  undefined1 *puVar30;\n  undefined1 auStack_90 [16];\n  uint local_78;\n  uint local_74;\n  undefined8 local_70;\n  uint local_64;\n  int local_5c;\n  int local_54;\n  uint local_4c;\n  uint local_40 [6];\n  \n  puVar15 = local_40;\n  local_40[0] = 0;\n  local_40[1] = 0;\n  local_40[2] = 0;\n  local_40[3] = 0;\n  local_40[4] = 0;\n  local_40[5] = *(uint *)PTR___stack_chk_guard_000b0c9c;\n  uVar9 = param_3;\n  piVar19 = (int *)PTR___stack_chk_guard_000b0c9c;\n  FUN_0005a4e8(puVar15);\n  if ((int)param_3 < 0) {\n    param_3 = param_3 + 3;\n  }\n  local_40[(int)param_3 >> 2] = 1 << ((uVar9 & 3) << 3) | local_40[(int)param_3 >> 2];\n  FUN_0005a298(puVar15,puVar15,param_1 + 0x24);\n  uVar14 = *(uint *)(param_1 + 0x10);\n  uVar20 = *(uint *)(param_1 + 0x14);\n  uVar21 = *(uint *)(param_1 + 0x18);\n  uVar27 = *(uint *)(param_1 + 0x1c);\n  iVar22 = *piVar19;\n  uVar1 = ((ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20) +\n          (ulonglong)local_40[0] * (ulonglong)uVar20;\n  uVar2 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar21;\n  lVar3 = (uVar1 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[1];\n  uVar29 = (uint)((ulonglong)lVar3 >> 0x20);\n  uVar9 = (int)uVar2 + uVar29;\n  uVar1 = (uVar2 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar27;\n  uVar2 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[1];\n  uVar4 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)*(uint *)(param_1 + 0x20);\n  uVar1 = (uVar1 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[1] + (uVar2 >> 0x20);\n  lVar5 = (uVar2 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[2];\n  uVar29 = (uint)((ulonglong)lVar5 >> 0x20);\n  uVar9 = (int)uVar1 + uVar29;\n  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[1] + (uVar1 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[2];\n  local_70 = uVar1 & 0xffffffff;\n  uVar4 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1] +\n          (uVar2 >> 0x20);\n  lVar6 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[3];\n  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[2] + (uVar1 >> 0x20);\n  local_78 = (uint)((ulonglong)lVar6 >> 0x20);\n  uVar9 = (int)uVar1 + local_78;\n  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[2] + (uVar1 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < local_78,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[3];\n  local_70 = uVar1 & 0xffffffff;\n  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[3] + (uVar1 >> 0x20);\n  uVar2 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2] +\n          (uVar2 >> 0x20);\n  lVar7 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[4];\n  uVar29 = (uint)((ulonglong)lVar7 >> 0x20);\n  uVar9 = (int)uVar1 + uVar29;\n  uVar4 = (uVar2 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[3] + (uVar1 >> 0x20);\n  uVar18 = (uint)(uVar4 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[4];\n  local_4c = (uint)uVar1;\n  lVar8 = (uVar2 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[3];\n  local_70._4_4_ = (uint)lVar7;\n  uVar13 = (local_70._4_4_ >> 2) * 4;\n  uVar20 = uVar13 + (local_70._4_4_ >> 2 | local_4c << 0x1e);\n  uVar9 = uVar18 + (int)lVar8;\n  lVar7 = (uVar4 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[4] + (uVar1 >> 0x20);\n  uVar16 = (uint)lVar7;\n  uVar29 = (uint)((ulonglong)lVar7 >> 0x20);\n  local_64 = (uint)((ulonglong)local_40[0] * (ulonglong)uVar14);\n  uVar21 = uVar20 + local_64;\n  lVar7 = (ulonglong)uVar9 + (ulonglong)uVar27 * (ulonglong)local_40[4];\n  uVar14 = (uint)(uVar21 < local_64);\n  local_5c = (int)lVar5;\n  local_54 = (int)lVar3;\n  uVar27 = uVar29 + (int)lVar7;\n  uVar17 = uVar14 + local_54;\n  uVar18 = local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar27 < uVar29) + (int)((ulonglong)lVar7 >> 0x20);\n  lVar3 = (ulonglong)((uint)(uVar20 < uVar13) + (local_4c & 3)) +\n          (ulonglong)(local_4c >> 2 | uVar16 * 0x40000000) * 5;\n  puVar30 = (undefined1 *)((ulonglong)lVar3 >> 0x20);\n  uVar20 = uVar17 + (int)lVar3;\n  uVar29 = (uint)(uVar20 < uVar17) + (uint)(uVar17 < uVar14);\n  local_74 = (uint)lVar6;\n  uVar1 = ZEXT48(puVar30) + (ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000) * 5;\n  uVar9 = (uVar18 >> 4) * 0x19;\n  uVar21 = uVar9 + uVar21;\n  uVar14 = uVar29 + (int)uVar1;\n  *(uint *)(param_1 + 0x24) = uVar21;\n  uVar9 = (uint)(uVar21 < uVar9);\n  uVar20 = uVar9 + uVar20;\n  *(uint *)(param_1 + 0x28) = uVar20;\n  uVar20 = (uint)(uVar20 < uVar9);\n  lVar3 = (uVar1 >> 0x20) + (ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000) * 5;\n  uVar21 = (uint)(uVar14 + local_5c < uVar14) + (uint)(uVar14 < uVar29);\n  uVar9 = uVar20 + uVar14 + local_5c;\n  *(uint *)(param_1 + 0x2c) = uVar9;\n  uVar29 = (uint)(uVar9 < uVar20);\n  uVar9 = (int)lVar3 + local_74;\n  uVar14 = uVar21 + uVar9;\n  uVar9 = (uint)(uVar9 < local_74);\n  uVar20 = uVar29 + uVar14;\n  *(uint *)(param_1 + 0x30) = uVar20;\n  puVar11 = (undefined1 *)\n            ((uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29));\n  *(undefined1 **)(param_1 + 0x34) = puVar11;\n  if (local_40[5] == iVar22) {\n    return;\n  }\n  pcVar28 = FUN_0005ab78;\n  puVar24 = PTR___stack_chk_fail_000b0c70;\n  (*(code *)PTR___stack_chk_fail_000b0c70)();\n  puVar26 = auStack_90;\n  while( true ) {\n    puVar12 = puVar11;\n    iVar22 = *(int *)(puVar12 + 0x48);\n    *(int *)(puVar26 + -0xc) = (int)lVar3;\n    piVar19 = *(int **)(puVar24 + 0x56124);\n    *(undefined **)(puVar26 + -0x30) = puVar24 + 0x5d5d8;\n    *(undefined1 **)(puVar26 + -8) = puVar30;\n    *(int *)(puVar26 + -0x10) = (int)((ulonglong)lVar3 >> 0x20);\n    lVar3 = CONCAT44(uVar9,piVar19);\n    *(code **)(puVar26 + -4) = pcVar28;\n    *(int *)(puVar26 + -0x14) = *piVar19;\n    if (iVar22 != 0) {\n      FUN_0005a528();\n    }\n    *(undefined4 *)(puVar26 + -0x28) = 0;\n    *(undefined4 *)(puVar26 + -0x24) = 0;\n    *(undefined4 *)(puVar26 + -0x20) = 0;\n    *(undefined4 *)(puVar26 + -0x1c) = 0;\n    *(undefined4 *)(puVar26 + -0x18) = 0;\n    FUN_0005a4e8(puVar26 + -0x28,puVar12,0x10);\n    uVar14 = (*(uint *)(puVar12 + 0x34) >> 2) * 5;\n    uVar21 = *(int *)(puVar12 + 0x24) + uVar14;\n    uVar20 = (uint)(uVar21 < uVar14);\n    uVar16 = uVar20 + *(int *)(puVar12 + 0x28);\n    uVar14 = (uint)(uVar21 + 5 < uVar21);\n    uVar20 = (uint)(uVar16 < uVar20);\n    uVar27 = uVar20 + *(int *)(puVar12 + 0x2c);\n    uVar29 = (uint)(uVar14 + uVar16 < uVar14);\n    uVar14 = (uint)(uVar27 < uVar20);\n    uVar13 = uVar14 + *(int *)(puVar12 + 0x30);\n    uVar20 = (uint)(uVar29 + uVar27 < uVar29);\n    iVar22 = (*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14);\n    uVar14 = (iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5;\n    uVar21 = uVar14 + uVar21;\n    uVar14 = (uint)(uVar21 < uVar14);\n    *(uint *)(puVar12 + 0x24) = uVar21;\n    uVar16 = uVar14 + uVar16;\n    uVar14 = (uint)(uVar16 < uVar14);\n    *(uint *)(puVar12 + 0x28) = uVar16;\n    uVar27 = uVar14 + uVar27;\n    uVar14 = (uint)(uVar27 < uVar14);\n    *(uint *)(puVar12 + 0x2c) = uVar27;\n    uVar13 = uVar14 + uVar13;\n    *(uint *)(puVar12 + 0x30) = uVar13;\n    *(uint *)(puVar12 + 0x34) = iVar22 + (uint)(uVar13 < uVar14) & 3;\n    FUN_0005a298();\n    iVar22 = 0;\n    iVar25 = *(int *)(puVar26 + -0x30);\n    do {\n      iVar10 = iVar22 >> 2;\n      uVar14 = iVar22 << 3;\n      puVar11 = (undefined1 *)(uVar9 + iVar22);\n      iVar22 = iVar22 + 1;\n      *puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));\n    } while (iVar22 != 0x10);\n    if (*(int *)(puVar26 + -0x14) == *piVar19) break;\n    pcVar23 = *(code **)(iVar25 + -0x74e0);\n    pcVar28 = (code *)0x5ad34;\n    (*pcVar23)();\n    puVar24 = (undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488);\n    puVar11 = puVar11 + 0x114;\n    uVar9 = uVar14;\n    puVar30 = puVar12;\n    puVar26 = puVar26 + -0x40;\n  }\n  return;\n}\n\n" (function_definition "void FUN_0005a528(int param_1,undefined4 param_2,uint param_3)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  longlong lVar3;\n  ulonglong uVar4;\n  longlong lVar5;\n  longlong lVar6;\n  longlong lVar7;\n  longlong lVar8;\n  uint uVar9;\n  int iVar10;\n  undefined1 *puVar11;\n  undefined1 *puVar12;\n  uint uVar13;\n  uint uVar14;\n  uint *puVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  int *piVar19;\n  uint uVar20;\n  uint uVar21;\n  int iVar22;\n  code *pcVar23;\n  undefined *puVar24;\n  int iVar25;\n  undefined1 *puVar26;\n  uint uVar27;\n  code *pcVar28;\n  uint uVar29;\n  undefined1 *puVar30;\n  undefined1 auStack_90 [16];\n  uint local_78;\n  uint local_74;\n  undefined8 local_70;\n  uint local_64;\n  int local_5c;\n  int local_54;\n  uint local_4c;\n  uint local_40 [6];\n  \n  puVar15 = local_40;\n  local_40[0] = 0;\n  local_40[1] = 0;\n  local_40[2] = 0;\n  local_40[3] = 0;\n  local_40[4] = 0;\n  local_40[5] = *(uint *)PTR___stack_chk_guard_000b0c9c;\n  uVar9 = param_3;\n  piVar19 = (int *)PTR___stack_chk_guard_000b0c9c;\n  FUN_0005a4e8(puVar15);\n  if ((int)param_3 < 0) {\n    param_3 = param_3 + 3;\n  }\n  local_40[(int)param_3 >> 2] = 1 << ((uVar9 & 3) << 3) | local_40[(int)param_3 >> 2];\n  FUN_0005a298(puVar15,puVar15,param_1 + 0x24);\n  uVar14 = *(uint *)(param_1 + 0x10);\n  uVar20 = *(uint *)(param_1 + 0x14);\n  uVar21 = *(uint *)(param_1 + 0x18);\n  uVar27 = *(uint *)(param_1 + 0x1c);\n  iVar22 = *piVar19;\n  uVar1 = ((ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20) +\n          (ulonglong)local_40[0] * (ulonglong)uVar20;\n  uVar2 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar21;\n  lVar3 = (uVar1 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[1];\n  uVar29 = (uint)((ulonglong)lVar3 >> 0x20);\n  uVar9 = (int)uVar2 + uVar29;\n  uVar1 = (uVar2 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar27;\n  uVar2 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[1];\n  uVar4 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)*(uint *)(param_1 + 0x20);\n  uVar1 = (uVar1 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[1] + (uVar2 >> 0x20);\n  lVar5 = (uVar2 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[2];\n  uVar29 = (uint)((ulonglong)lVar5 >> 0x20);\n  uVar9 = (int)uVar1 + uVar29;\n  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[1] + (uVar1 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[2];\n  local_70 = uVar1 & 0xffffffff;\n  uVar4 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1] +\n          (uVar2 >> 0x20);\n  lVar6 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[3];\n  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[2] + (uVar1 >> 0x20);\n  local_78 = (uint)((ulonglong)lVar6 >> 0x20);\n  uVar9 = (int)uVar1 + local_78;\n  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[2] + (uVar1 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < local_78,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[3];\n  local_70 = uVar1 & 0xffffffff;\n  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[3] + (uVar1 >> 0x20);\n  uVar2 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2] +\n          (uVar2 >> 0x20);\n  lVar7 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[4];\n  uVar29 = (uint)((ulonglong)lVar7 >> 0x20);\n  uVar9 = (int)uVar1 + uVar29;\n  uVar4 = (uVar2 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[3] + (uVar1 >> 0x20);\n  uVar18 = (uint)(uVar4 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[4];\n  local_4c = (uint)uVar1;\n  lVar8 = (uVar2 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[3];\n  local_70._4_4_ = (uint)lVar7;\n  uVar13 = (local_70._4_4_ >> 2) * 4;\n  uVar20 = uVar13 + (local_70._4_4_ >> 2 | local_4c << 0x1e);\n  uVar9 = uVar18 + (int)lVar8;\n  lVar7 = (uVar4 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[4] + (uVar1 >> 0x20);\n  uVar16 = (uint)lVar7;\n  uVar29 = (uint)((ulonglong)lVar7 >> 0x20);\n  local_64 = (uint)((ulonglong)local_40[0] * (ulonglong)uVar14);\n  uVar21 = uVar20 + local_64;\n  lVar7 = (ulonglong)uVar9 + (ulonglong)uVar27 * (ulonglong)local_40[4];\n  uVar14 = (uint)(uVar21 < local_64);\n  local_5c = (int)lVar5;\n  local_54 = (int)lVar3;\n  uVar27 = uVar29 + (int)lVar7;\n  uVar17 = uVar14 + local_54;\n  uVar18 = local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar27 < uVar29) + (int)((ulonglong)lVar7 >> 0x20);\n  lVar3 = (ulonglong)((uint)(uVar20 < uVar13) + (local_4c & 3)) +\n          (ulonglong)(local_4c >> 2 | uVar16 * 0x40000000) * 5;\n  puVar30 = (undefined1 *)((ulonglong)lVar3 >> 0x20);\n  uVar20 = uVar17 + (int)lVar3;\n  uVar29 = (uint)(uVar20 < uVar17) + (uint)(uVar17 < uVar14);\n  local_74 = (uint)lVar6;\n  uVar1 = ZEXT48(puVar30) + (ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000) * 5;\n  uVar9 = (uVar18 >> 4) * 0x19;\n  uVar21 = uVar9 + uVar21;\n  uVar14 = uVar29 + (int)uVar1;\n  *(uint *)(param_1 + 0x24) = uVar21;\n  uVar9 = (uint)(uVar21 < uVar9);\n  uVar20 = uVar9 + uVar20;\n  *(uint *)(param_1 + 0x28) = uVar20;\n  uVar20 = (uint)(uVar20 < uVar9);\n  lVar3 = (uVar1 >> 0x20) + (ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000) * 5;\n  uVar21 = (uint)(uVar14 + local_5c < uVar14) + (uint)(uVar14 < uVar29);\n  uVar9 = uVar20 + uVar14 + local_5c;\n  *(uint *)(param_1 + 0x2c) = uVar9;\n  uVar29 = (uint)(uVar9 < uVar20);\n  uVar9 = (int)lVar3 + local_74;\n  uVar14 = uVar21 + uVar9;\n  uVar9 = (uint)(uVar9 < local_74);\n  uVar20 = uVar29 + uVar14;\n  *(uint *)(param_1 + 0x30) = uVar20;\n  puVar11 = (undefined1 *)\n            ((uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29));\n  *(undefined1 **)(param_1 + 0x34) = puVar11;\n  if (local_40[5] == iVar22) {\n    return;\n  }\n  pcVar28 = FUN_0005ab78;\n  puVar24 = PTR___stack_chk_fail_000b0c70;\n  (*(code *)PTR___stack_chk_fail_000b0c70)();\n  puVar26 = auStack_90;\n  while( true ) {\n    puVar12 = puVar11;\n    iVar22 = *(int *)(puVar12 + 0x48);\n    *(int *)(puVar26 + -0xc) = (int)lVar3;\n    piVar19 = *(int **)(puVar24 + 0x56124);\n    *(undefined **)(puVar26 + -0x30) = puVar24 + 0x5d5d8;\n    *(undefined1 **)(puVar26 + -8) = puVar30;\n    *(int *)(puVar26 + -0x10) = (int)((ulonglong)lVar3 >> 0x20);\n    lVar3 = CONCAT44(uVar9,piVar19);\n    *(code **)(puVar26 + -4) = pcVar28;\n    *(int *)(puVar26 + -0x14) = *piVar19;\n    if (iVar22 != 0) {\n      FUN_0005a528();\n    }\n    *(undefined4 *)(puVar26 + -0x28) = 0;\n    *(undefined4 *)(puVar26 + -0x24) = 0;\n    *(undefined4 *)(puVar26 + -0x20) = 0;\n    *(undefined4 *)(puVar26 + -0x1c) = 0;\n    *(undefined4 *)(puVar26 + -0x18) = 0;\n    FUN_0005a4e8(puVar26 + -0x28,puVar12,0x10);\n    uVar14 = (*(uint *)(puVar12 + 0x34) >> 2) * 5;\n    uVar21 = *(int *)(puVar12 + 0x24) + uVar14;\n    uVar20 = (uint)(uVar21 < uVar14);\n    uVar16 = uVar20 + *(int *)(puVar12 + 0x28);\n    uVar14 = (uint)(uVar21 + 5 < uVar21);\n    uVar20 = (uint)(uVar16 < uVar20);\n    uVar27 = uVar20 + *(int *)(puVar12 + 0x2c);\n    uVar29 = (uint)(uVar14 + uVar16 < uVar14);\n    uVar14 = (uint)(uVar27 < uVar20);\n    uVar13 = uVar14 + *(int *)(puVar12 + 0x30);\n    uVar20 = (uint)(uVar29 + uVar27 < uVar29);\n    iVar22 = (*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14);\n    uVar14 = (iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5;\n    uVar21 = uVar14 + uVar21;\n    uVar14 = (uint)(uVar21 < uVar14);\n    *(uint *)(puVar12 + 0x24) = uVar21;\n    uVar16 = uVar14 + uVar16;\n    uVar14 = (uint)(uVar16 < uVar14);\n    *(uint *)(puVar12 + 0x28) = uVar16;\n    uVar27 = uVar14 + uVar27;\n    uVar14 = (uint)(uVar27 < uVar14);\n    *(uint *)(puVar12 + 0x2c) = uVar27;\n    uVar13 = uVar14 + uVar13;\n    *(uint *)(puVar12 + 0x30) = uVar13;\n    *(uint *)(puVar12 + 0x34) = iVar22 + (uint)(uVar13 < uVar14) & 3;\n    FUN_0005a298();\n    iVar22 = 0;\n    iVar25 = *(int *)(puVar26 + -0x30);\n    do {\n      iVar10 = iVar22 >> 2;\n      uVar14 = iVar22 << 3;\n      puVar11 = (undefined1 *)(uVar9 + iVar22);\n      iVar22 = iVar22 + 1;\n      *puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));\n    } while (iVar22 != 0x10);\n    if (*(int *)(puVar26 + -0x14) == *piVar19) break;\n    pcVar23 = *(code **)(iVar25 + -0x74e0);\n    pcVar28 = (code *)0x5ad34;\n    (*pcVar23)();\n    puVar24 = (undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488);\n    puVar11 = puVar11 + 0x114;\n    uVar9 = uVar14;\n    puVar30 = puVar12;\n    puVar26 = puVar26 + -0x40;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0005a528(int param_1,undefined4 param_2,uint param_3)" identifier (parameter_list "(int param_1,undefined4 param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  longlong lVar3;\n  ulonglong uVar4;\n  longlong lVar5;\n  longlong lVar6;\n  longlong lVar7;\n  longlong lVar8;\n  uint uVar9;\n  int iVar10;\n  undefined1 *puVar11;\n  undefined1 *puVar12;\n  uint uVar13;\n  uint uVar14;\n  uint *puVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  int *piVar19;\n  uint uVar20;\n  uint uVar21;\n  int iVar22;\n  code *pcVar23;\n  undefined *puVar24;\n  int iVar25;\n  undefined1 *puVar26;\n  uint uVar27;\n  code *pcVar28;\n  uint uVar29;\n  undefined1 *puVar30;\n  undefined1 auStack_90 [16];\n  uint local_78;\n  uint local_74;\n  undefined8 local_70;\n  uint local_64;\n  int local_5c;\n  int local_54;\n  uint local_4c;\n  uint local_40 [6];\n  \n  puVar15 = local_40;\n  local_40[0] = 0;\n  local_40[1] = 0;\n  local_40[2] = 0;\n  local_40[3] = 0;\n  local_40[4] = 0;\n  local_40[5] = *(uint *)PTR___stack_chk_guard_000b0c9c;\n  uVar9 = param_3;\n  piVar19 = (int *)PTR___stack_chk_guard_000b0c9c;\n  FUN_0005a4e8(puVar15);\n  if ((int)param_3 < 0) {\n    param_3 = param_3 + 3;\n  }\n  local_40[(int)param_3 >> 2] = 1 << ((uVar9 & 3) << 3) | local_40[(int)param_3 >> 2];\n  FUN_0005a298(puVar15,puVar15,param_1 + 0x24);\n  uVar14 = *(uint *)(param_1 + 0x10);\n  uVar20 = *(uint *)(param_1 + 0x14);\n  uVar21 = *(uint *)(param_1 + 0x18);\n  uVar27 = *(uint *)(param_1 + 0x1c);\n  iVar22 = *piVar19;\n  uVar1 = ((ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20) +\n          (ulonglong)local_40[0] * (ulonglong)uVar20;\n  uVar2 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar21;\n  lVar3 = (uVar1 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[1];\n  uVar29 = (uint)((ulonglong)lVar3 >> 0x20);\n  uVar9 = (int)uVar2 + uVar29;\n  uVar1 = (uVar2 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar27;\n  uVar2 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[1];\n  uVar4 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)*(uint *)(param_1 + 0x20);\n  uVar1 = (uVar1 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[1] + (uVar2 >> 0x20);\n  lVar5 = (uVar2 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[2];\n  uVar29 = (uint)((ulonglong)lVar5 >> 0x20);\n  uVar9 = (int)uVar1 + uVar29;\n  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[1] + (uVar1 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[2];\n  local_70 = uVar1 & 0xffffffff;\n  uVar4 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1] +\n          (uVar2 >> 0x20);\n  lVar6 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[3];\n  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[2] + (uVar1 >> 0x20);\n  local_78 = (uint)((ulonglong)lVar6 >> 0x20);\n  uVar9 = (int)uVar1 + local_78;\n  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[2] + (uVar1 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < local_78,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[3];\n  local_70 = uVar1 & 0xffffffff;\n  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[3] + (uVar1 >> 0x20);\n  uVar2 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2] +\n          (uVar2 >> 0x20);\n  lVar7 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[4];\n  uVar29 = (uint)((ulonglong)lVar7 >> 0x20);\n  uVar9 = (int)uVar1 + uVar29;\n  uVar4 = (uVar2 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[3] + (uVar1 >> 0x20);\n  uVar18 = (uint)(uVar4 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[4];\n  local_4c = (uint)uVar1;\n  lVar8 = (uVar2 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[3];\n  local_70._4_4_ = (uint)lVar7;\n  uVar13 = (local_70._4_4_ >> 2) * 4;\n  uVar20 = uVar13 + (local_70._4_4_ >> 2 | local_4c << 0x1e);\n  uVar9 = uVar18 + (int)lVar8;\n  lVar7 = (uVar4 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[4] + (uVar1 >> 0x20);\n  uVar16 = (uint)lVar7;\n  uVar29 = (uint)((ulonglong)lVar7 >> 0x20);\n  local_64 = (uint)((ulonglong)local_40[0] * (ulonglong)uVar14);\n  uVar21 = uVar20 + local_64;\n  lVar7 = (ulonglong)uVar9 + (ulonglong)uVar27 * (ulonglong)local_40[4];\n  uVar14 = (uint)(uVar21 < local_64);\n  local_5c = (int)lVar5;\n  local_54 = (int)lVar3;\n  uVar27 = uVar29 + (int)lVar7;\n  uVar17 = uVar14 + local_54;\n  uVar18 = local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar27 < uVar29) + (int)((ulonglong)lVar7 >> 0x20);\n  lVar3 = (ulonglong)((uint)(uVar20 < uVar13) + (local_4c & 3)) +\n          (ulonglong)(local_4c >> 2 | uVar16 * 0x40000000) * 5;\n  puVar30 = (undefined1 *)((ulonglong)lVar3 >> 0x20);\n  uVar20 = uVar17 + (int)lVar3;\n  uVar29 = (uint)(uVar20 < uVar17) + (uint)(uVar17 < uVar14);\n  local_74 = (uint)lVar6;\n  uVar1 = ZEXT48(puVar30) + (ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000) * 5;\n  uVar9 = (uVar18 >> 4) * 0x19;\n  uVar21 = uVar9 + uVar21;\n  uVar14 = uVar29 + (int)uVar1;\n  *(uint *)(param_1 + 0x24) = uVar21;\n  uVar9 = (uint)(uVar21 < uVar9);\n  uVar20 = uVar9 + uVar20;\n  *(uint *)(param_1 + 0x28) = uVar20;\n  uVar20 = (uint)(uVar20 < uVar9);\n  lVar3 = (uVar1 >> 0x20) + (ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000) * 5;\n  uVar21 = (uint)(uVar14 + local_5c < uVar14) + (uint)(uVar14 < uVar29);\n  uVar9 = uVar20 + uVar14 + local_5c;\n  *(uint *)(param_1 + 0x2c) = uVar9;\n  uVar29 = (uint)(uVar9 < uVar20);\n  uVar9 = (int)lVar3 + local_74;\n  uVar14 = uVar21 + uVar9;\n  uVar9 = (uint)(uVar9 < local_74);\n  uVar20 = uVar29 + uVar14;\n  *(uint *)(param_1 + 0x30) = uVar20;\n  puVar11 = (undefined1 *)\n            ((uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29));\n  *(undefined1 **)(param_1 + 0x34) = puVar11;\n  if (local_40[5] == iVar22) {\n    return;\n  }\n  pcVar28 = FUN_0005ab78;\n  puVar24 = PTR___stack_chk_fail_000b0c70;\n  (*(code *)PTR___stack_chk_fail_000b0c70)();\n  puVar26 = auStack_90;\n  while( true ) {\n    puVar12 = puVar11;\n    iVar22 = *(int *)(puVar12 + 0x48);\n    *(int *)(puVar26 + -0xc) = (int)lVar3;\n    piVar19 = *(int **)(puVar24 + 0x56124);\n    *(undefined **)(puVar26 + -0x30) = puVar24 + 0x5d5d8;\n    *(undefined1 **)(puVar26 + -8) = puVar30;\n    *(int *)(puVar26 + -0x10) = (int)((ulonglong)lVar3 >> 0x20);\n    lVar3 = CONCAT44(uVar9,piVar19);\n    *(code **)(puVar26 + -4) = pcVar28;\n    *(int *)(puVar26 + -0x14) = *piVar19;\n    if (iVar22 != 0) {\n      FUN_0005a528();\n    }\n    *(undefined4 *)(puVar26 + -0x28) = 0;\n    *(undefined4 *)(puVar26 + -0x24) = 0;\n    *(undefined4 *)(puVar26 + -0x20) = 0;\n    *(undefined4 *)(puVar26 + -0x1c) = 0;\n    *(undefined4 *)(puVar26 + -0x18) = 0;\n    FUN_0005a4e8(puVar26 + -0x28,puVar12,0x10);\n    uVar14 = (*(uint *)(puVar12 + 0x34) >> 2) * 5;\n    uVar21 = *(int *)(puVar12 + 0x24) + uVar14;\n    uVar20 = (uint)(uVar21 < uVar14);\n    uVar16 = uVar20 + *(int *)(puVar12 + 0x28);\n    uVar14 = (uint)(uVar21 + 5 < uVar21);\n    uVar20 = (uint)(uVar16 < uVar20);\n    uVar27 = uVar20 + *(int *)(puVar12 + 0x2c);\n    uVar29 = (uint)(uVar14 + uVar16 < uVar14);\n    uVar14 = (uint)(uVar27 < uVar20);\n    uVar13 = uVar14 + *(int *)(puVar12 + 0x30);\n    uVar20 = (uint)(uVar29 + uVar27 < uVar29);\n    iVar22 = (*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14);\n    uVar14 = (iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5;\n    uVar21 = uVar14 + uVar21;\n    uVar14 = (uint)(uVar21 < uVar14);\n    *(uint *)(puVar12 + 0x24) = uVar21;\n    uVar16 = uVar14 + uVar16;\n    uVar14 = (uint)(uVar16 < uVar14);\n    *(uint *)(puVar12 + 0x28) = uVar16;\n    uVar27 = uVar14 + uVar27;\n    uVar14 = (uint)(uVar27 < uVar14);\n    *(uint *)(puVar12 + 0x2c) = uVar27;\n    uVar13 = uVar14 + uVar13;\n    *(uint *)(puVar12 + 0x30) = uVar13;\n    *(uint *)(puVar12 + 0x34) = iVar22 + (uint)(uVar13 < uVar14) & 3;\n    FUN_0005a298();\n    iVar22 = 0;\n    iVar25 = *(int *)(puVar26 + -0x30);\n    do {\n      iVar10 = iVar22 >> 2;\n      uVar14 = iVar22 << 3;\n      puVar11 = (undefined1 *)(uVar9 + iVar22);\n      iVar22 = iVar22 + 1;\n      *puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));\n    } while (iVar22 != 0x10);\n    if (*(int *)(puVar26 + -0x14) == *piVar19) break;\n    pcVar23 = *(code **)(iVar25 + -0x74e0);\n    pcVar28 = (code *)0x5ad34;\n    (*pcVar23)();\n    puVar24 = (undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488);\n    puVar11 = puVar11 + 0x114;\n    uVar9 = uVar14;\n    puVar30 = puVar12;\n    puVar26 = puVar26 + -0x40;\n  }\n  return;\n}" { (declaration "ulonglong uVar1;" type_identifier identifier ;) (declaration "ulonglong uVar2;" type_identifier identifier ;) (declaration "longlong lVar3;" type_identifier identifier ;) (declaration "ulonglong uVar4;" type_identifier identifier ;) (declaration "longlong lVar5;" type_identifier identifier ;) (declaration "longlong lVar6;" type_identifier identifier ;) (declaration "longlong lVar7;" type_identifier identifier ;) (declaration "longlong lVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined1 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "uint *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int *piVar19;" primitive_type (pointer_declarator "*piVar19" * identifier) ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "code *pcVar23;" type_identifier (pointer_declarator "*pcVar23" * identifier) ;) (declaration "undefined *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "int iVar25;" primitive_type identifier ;) (declaration "undefined1 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "uint uVar27;" type_identifier identifier ;) (declaration "code *pcVar28;" type_identifier (pointer_declarator "*pcVar28" * identifier) ;) (declaration "uint uVar29;" type_identifier identifier ;) (declaration "undefined1 *puVar30;" type_identifier (pointer_declarator "*puVar30" * identifier) ;) (declaration "undefined1 auStack_90 [16];" type_identifier (array_declarator "auStack_90 [16]" identifier [ number_literal ]) ;) (declaration "uint local_78;" type_identifier identifier ;) (declaration "uint local_74;" type_identifier identifier ;) (declaration "undefined8 local_70;" type_identifier identifier ;) (declaration "uint local_64;" type_identifier identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "uint local_40 [6];" type_identifier (array_declarator "local_40 [6]" identifier [ number_literal ]) ;) (expression_statement "puVar15 = local_40;" (assignment_expression "puVar15 = local_40" identifier = identifier) ;) (expression_statement "local_40[0] = 0;" (assignment_expression "local_40[0] = 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_40[1] = 0;" (assignment_expression "local_40[1] = 0" (subscript_expression "local_40[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_40[2] = 0;" (assignment_expression "local_40[2] = 0" (subscript_expression "local_40[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_40[3] = 0;" (assignment_expression "local_40[3] = 0" (subscript_expression "local_40[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_40[4] = 0;" (assignment_expression "local_40[4] = 0" (subscript_expression "local_40[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_40[5] = *(uint *)PTR___stack_chk_guard_000b0c9c;" (assignment_expression "local_40[5] = *(uint *)PTR___stack_chk_guard_000b0c9c" (subscript_expression "local_40[5]" identifier [ number_literal ]) = (pointer_expression "*(uint *)PTR___stack_chk_guard_000b0c9c" * (cast_expression "(uint *)PTR___stack_chk_guard_000b0c9c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar9 = param_3;" (assignment_expression "uVar9 = param_3" identifier = identifier) ;) (expression_statement "piVar19 = (int *)PTR___stack_chk_guard_000b0c9c;" (assignment_expression "piVar19 = (int *)PTR___stack_chk_guard_000b0c9c" identifier = (cast_expression "(int *)PTR___stack_chk_guard_000b0c9c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "FUN_0005a4e8(puVar15);" (call_expression "FUN_0005a4e8(puVar15)" identifier (argument_list "(puVar15)" ( identifier ))) ;) (if_statement "if ((int)param_3 < 0) {\n    param_3 = param_3 + 3;\n  }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    param_3 = param_3 + 3;\n  }" { (expression_statement "param_3 = param_3 + 3;" (assignment_expression "param_3 = param_3 + 3" identifier = (binary_expression "param_3 + 3" identifier + number_literal)) ;) })) (expression_statement "local_40[(int)param_3 >> 2] = 1 << ((uVar9 & 3) << 3) | local_40[(int)param_3 >> 2];" (assignment_expression "local_40[(int)param_3 >> 2] = 1 << ((uVar9 & 3) << 3) | local_40[(int)param_3 >> 2]" (subscript_expression "local_40[(int)param_3 >> 2]" identifier [ (binary_expression "(int)param_3 >> 2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ]) = (binary_expression "1 << ((uVar9 & 3) << 3) | local_40[(int)param_3 >> 2]" (binary_expression "1 << ((uVar9 & 3) << 3)" number_literal << (parenthesized_expression "((uVar9 & 3) << 3)" ( (binary_expression "(uVar9 & 3) << 3" (parenthesized_expression "(uVar9 & 3)" ( (binary_expression "uVar9 & 3" identifier & number_literal) )) << number_literal) ))) | (subscript_expression "local_40[(int)param_3 >> 2]" identifier [ (binary_expression "(int)param_3 >> 2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ]))) ;) (expression_statement "FUN_0005a298(puVar15,puVar15,param_1 + 0x24);" (call_expression "FUN_0005a298(puVar15,puVar15,param_1 + 0x24)" identifier (argument_list "(puVar15,puVar15,param_1 + 0x24)" ( identifier , identifier , (binary_expression "param_1 + 0x24" identifier + number_literal) ))) ;) (expression_statement "uVar14 = *(uint *)(param_1 + 0x10);" (assignment_expression "uVar14 = *(uint *)(param_1 + 0x10)" identifier = (pointer_expression "*(uint *)(param_1 + 0x10)" * (cast_expression "(uint *)(param_1 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar20 = *(uint *)(param_1 + 0x14);" (assignment_expression "uVar20 = *(uint *)(param_1 + 0x14)" identifier = (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar21 = *(uint *)(param_1 + 0x18)" identifier = (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar27 = *(uint *)(param_1 + 0x1c);" (assignment_expression "uVar27 = *(uint *)(param_1 + 0x1c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x1c)" * (cast_expression "(uint *)(param_1 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "iVar22 = *piVar19;" (assignment_expression "iVar22 = *piVar19" identifier = (pointer_expression "*piVar19" * identifier)) ;) (expression_statement "uVar1 = ((ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20) +\n          (ulonglong)local_40[0] * (ulonglong)uVar20;" (assignment_expression "uVar1 = ((ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20) +\n          (ulonglong)local_40[0] * (ulonglong)uVar20" identifier = (binary_expression "((ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20) +\n          (ulonglong)local_40[0] * (ulonglong)uVar20" (parenthesized_expression "((ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20)" ( (binary_expression "(ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20" (binary_expression "(ulonglong)local_40[0] * (ulonglong)uVar14" (cast_expression "(ulonglong)local_40[0]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) * (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) )) + (binary_expression "(ulonglong)local_40[0] * (ulonglong)uVar20" (cast_expression "(ulonglong)local_40[0]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) * (cast_expression "(ulonglong)uVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier)))) ;) (expression_statement "uVar2 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar21;" (assignment_expression "uVar2 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar21" identifier = (binary_expression "(uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar21" (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )) + (binary_expression "(ulonglong)local_40[0] * (ulonglong)uVar21" (cast_expression "(ulonglong)local_40[0]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) * (cast_expression "(ulonglong)uVar21" ( (type_descriptor "ulonglong" type_identifier) ) identifier)))) ;) (expression_statement "lVar3 = (uVar1 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[1];" (assignment_expression "lVar3 = (uVar1 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[1]" identifier = (binary_expression "(uVar1 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[1]" (parenthesized_expression "(uVar1 & 0xffffffff)" ( (binary_expression "uVar1 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar14 * (ulonglong)local_40[1]" (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[1]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[1]" identifier [ number_literal ]))))) ;) (expression_statement "uVar29 = (uint)((ulonglong)lVar3 >> 0x20);" (assignment_expression "uVar29 = (uint)((ulonglong)lVar3 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar3 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar3 >> 0x20)" ( (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar9 = (int)uVar2 + uVar29;" (assignment_expression "uVar9 = (int)uVar2 + uVar29" identifier = (binary_expression "(int)uVar2 + uVar29" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "uVar1 = (uVar2 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar27;" (assignment_expression "uVar1 = (uVar2 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar27" identifier = (binary_expression "(uVar2 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar27" (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )) + (binary_expression "(ulonglong)local_40[0] * (ulonglong)uVar27" (cast_expression "(ulonglong)local_40[0]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) * (cast_expression "(ulonglong)uVar27" ( (type_descriptor "ulonglong" type_identifier) ) identifier)))) ;) (expression_statement "uVar2 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[1];" (assignment_expression "uVar2 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[1]" identifier = (binary_expression "(ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[1]" (cast_expression "(ulonglong)CONCAT14(uVar9 < uVar29,uVar9)" ( (type_descriptor "ulonglong" type_identifier) ) (call_expression "CONCAT14(uVar9 < uVar29,uVar9)" identifier (argument_list "(uVar9 < uVar29,uVar9)" ( (binary_expression "uVar9 < uVar29" identifier < identifier) , identifier )))) + (binary_expression "(ulonglong)uVar20 * (ulonglong)local_40[1]" (cast_expression "(ulonglong)uVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[1]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[1]" identifier [ number_literal ]))))) ;) (expression_statement "uVar4 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)*(uint *)(param_1 + 0x20);" (assignment_expression "uVar4 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)*(uint *)(param_1 + 0x20)" identifier = (binary_expression "(uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)*(uint *)(param_1 + 0x20)" (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )) + (binary_expression "(ulonglong)local_40[0] * (ulonglong)*(uint *)(param_1 + 0x20)" (binary_expression "(ulonglong)local_40[0] * (ulonglong)" (cast_expression "(ulonglong)local_40[0]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) * (parenthesized_expression "(ulonglong)" ( identifier ))) * (cast_expression "(uint *)(param_1 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))))) ;) (expression_statement "uVar1 = (uVar1 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[1] + (uVar2 >> 0x20);" (assignment_expression "uVar1 = (uVar1 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[1] + (uVar2 >> 0x20)" identifier = (binary_expression "(uVar1 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[1] + (uVar2 >> 0x20)" (binary_expression "(uVar1 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[1]" (parenthesized_expression "(uVar1 & 0xffffffff)" ( (binary_expression "uVar1 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar21 * (ulonglong)local_40[1]" (cast_expression "(ulonglong)uVar21" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[1]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[1]" identifier [ number_literal ])))) + (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "lVar5 = (uVar2 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[2];" (assignment_expression "lVar5 = (uVar2 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[2]" identifier = (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[2]" (parenthesized_expression "(uVar2 & 0xffffffff)" ( (binary_expression "uVar2 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar14 * (ulonglong)local_40[2]" (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[2]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[2]" identifier [ number_literal ]))))) ;) (expression_statement "uVar29 = (uint)((ulonglong)lVar5 >> 0x20);" (assignment_expression "uVar29 = (uint)((ulonglong)lVar5 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar5 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar5 >> 0x20)" ( (binary_expression "(ulonglong)lVar5 >> 0x20" (cast_expression "(ulonglong)lVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar9 = (int)uVar1 + uVar29;" (assignment_expression "uVar9 = (int)uVar1 + uVar29" identifier = (binary_expression "(int)uVar1 + uVar29" (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[1] + (uVar1 >> 0x20);" (assignment_expression "uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[1] + (uVar1 >> 0x20)" identifier = (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[1] + (uVar1 >> 0x20)" (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[1]" (parenthesized_expression "(uVar4 & 0xffffffff)" ( (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar27 * (ulonglong)local_40[1]" (cast_expression "(ulonglong)uVar27" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[1]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[1]" identifier [ number_literal ])))) + (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[2];" (assignment_expression "uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[2]" identifier = (binary_expression "(ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[2]" (cast_expression "(ulonglong)CONCAT14(uVar9 < uVar29,uVar9)" ( (type_descriptor "ulonglong" type_identifier) ) (call_expression "CONCAT14(uVar9 < uVar29,uVar9)" identifier (argument_list "(uVar9 < uVar29,uVar9)" ( (binary_expression "uVar9 < uVar29" identifier < identifier) , identifier )))) + (binary_expression "(ulonglong)uVar20 * (ulonglong)local_40[2]" (cast_expression "(ulonglong)uVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[2]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[2]" identifier [ number_literal ]))))) ;) (expression_statement "local_70 = uVar1 & 0xffffffff;" (assignment_expression "local_70 = uVar1 & 0xffffffff" identifier = (binary_expression "uVar1 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "uVar4 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1] +\n          (uVar2 >> 0x20);" (assignment_expression "uVar4 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1] +\n          (uVar2 >> 0x20)" identifier = (binary_expression "(uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1] +\n          (uVar2 >> 0x20)" (binary_expression "(uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1]" (parenthesized_expression "(uVar4 >> 0x20)" ( (binary_expression "uVar4 >> 0x20" identifier >> number_literal) )) + (binary_expression "(ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1]" (binary_expression "(ulonglong)*(uint *)(param_1 + 0x20)" (parenthesized_expression "(ulonglong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) * (cast_expression "(ulonglong)local_40[1]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[1]" identifier [ number_literal ])))) + (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "lVar6 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[3];" (assignment_expression "lVar6 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[3]" identifier = (binary_expression "local_70 + (ulonglong)uVar14 * (ulonglong)local_40[3]" identifier + (binary_expression "(ulonglong)uVar14 * (ulonglong)local_40[3]" (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[3]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[3]" identifier [ number_literal ]))))) ;) (expression_statement "uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[2] + (uVar1 >> 0x20);" (assignment_expression "uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[2] + (uVar1 >> 0x20)" identifier = (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[2] + (uVar1 >> 0x20)" (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[2]" (parenthesized_expression "(uVar2 & 0xffffffff)" ( (binary_expression "uVar2 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar21 * (ulonglong)local_40[2]" (cast_expression "(ulonglong)uVar21" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[2]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[2]" identifier [ number_literal ])))) + (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "local_78 = (uint)((ulonglong)lVar6 >> 0x20);" (assignment_expression "local_78 = (uint)((ulonglong)lVar6 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar6 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar6 >> 0x20)" ( (binary_expression "(ulonglong)lVar6 >> 0x20" (cast_expression "(ulonglong)lVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar9 = (int)uVar1 + local_78;" (assignment_expression "uVar9 = (int)uVar1 + local_78" identifier = (binary_expression "(int)uVar1 + local_78" (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[2] + (uVar1 >> 0x20);" (assignment_expression "uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[2] + (uVar1 >> 0x20)" identifier = (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[2] + (uVar1 >> 0x20)" (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[2]" (parenthesized_expression "(uVar4 & 0xffffffff)" ( (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar27 * (ulonglong)local_40[2]" (cast_expression "(ulonglong)uVar27" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[2]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[2]" identifier [ number_literal ])))) + (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar1 = (ulonglong)CONCAT14(uVar9 < local_78,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[3];" (assignment_expression "uVar1 = (ulonglong)CONCAT14(uVar9 < local_78,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[3]" identifier = (binary_expression "(ulonglong)CONCAT14(uVar9 < local_78,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[3]" (cast_expression "(ulonglong)CONCAT14(uVar9 < local_78,uVar9)" ( (type_descriptor "ulonglong" type_identifier) ) (call_expression "CONCAT14(uVar9 < local_78,uVar9)" identifier (argument_list "(uVar9 < local_78,uVar9)" ( (binary_expression "uVar9 < local_78" identifier < identifier) , identifier )))) + (binary_expression "(ulonglong)uVar20 * (ulonglong)local_40[3]" (cast_expression "(ulonglong)uVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[3]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[3]" identifier [ number_literal ]))))) ;) (expression_statement "local_70 = uVar1 & 0xffffffff;" (assignment_expression "local_70 = uVar1 & 0xffffffff" identifier = (binary_expression "uVar1 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[3] + (uVar1 >> 0x20);" (assignment_expression "uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[3] + (uVar1 >> 0x20)" identifier = (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[3] + (uVar1 >> 0x20)" (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[3]" (parenthesized_expression "(uVar2 & 0xffffffff)" ( (binary_expression "uVar2 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar21 * (ulonglong)local_40[3]" (cast_expression "(ulonglong)uVar21" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[3]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[3]" identifier [ number_literal ])))) + (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar2 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2] +\n          (uVar2 >> 0x20);" (assignment_expression "uVar2 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2] +\n          (uVar2 >> 0x20)" identifier = (binary_expression "(uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2] +\n          (uVar2 >> 0x20)" (binary_expression "(uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2]" (parenthesized_expression "(uVar4 >> 0x20)" ( (binary_expression "uVar4 >> 0x20" identifier >> number_literal) )) + (binary_expression "(ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2]" (binary_expression "(ulonglong)*(uint *)(param_1 + 0x20)" (parenthesized_expression "(ulonglong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) * (cast_expression "(ulonglong)local_40[2]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[2]" identifier [ number_literal ])))) + (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "lVar7 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[4];" (assignment_expression "lVar7 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[4]" identifier = (binary_expression "local_70 + (ulonglong)uVar14 * (ulonglong)local_40[4]" identifier + (binary_expression "(ulonglong)uVar14 * (ulonglong)local_40[4]" (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[4]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[4]" identifier [ number_literal ]))))) ;) (expression_statement "uVar29 = (uint)((ulonglong)lVar7 >> 0x20);" (assignment_expression "uVar29 = (uint)((ulonglong)lVar7 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar7 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar7 >> 0x20)" ( (binary_expression "(ulonglong)lVar7 >> 0x20" (cast_expression "(ulonglong)lVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar9 = (int)uVar1 + uVar29;" (assignment_expression "uVar9 = (int)uVar1 + uVar29" identifier = (binary_expression "(int)uVar1 + uVar29" (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "uVar4 = (uVar2 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[3] + (uVar1 >> 0x20);" (assignment_expression "uVar4 = (uVar2 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[3] + (uVar1 >> 0x20)" identifier = (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[3] + (uVar1 >> 0x20)" (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[3]" (parenthesized_expression "(uVar2 & 0xffffffff)" ( (binary_expression "uVar2 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar27 * (ulonglong)local_40[3]" (cast_expression "(ulonglong)uVar27" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[3]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[3]" identifier [ number_literal ])))) + (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar18 = (uint)(uVar4 >> 0x20);" (assignment_expression "uVar18 = (uint)(uVar4 >> 0x20)" identifier = (call_expression "(uint)(uVar4 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 >> 0x20)" ( (binary_expression "uVar4 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[4];" (assignment_expression "uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[4]" identifier = (binary_expression "(ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[4]" (cast_expression "(ulonglong)CONCAT14(uVar9 < uVar29,uVar9)" ( (type_descriptor "ulonglong" type_identifier) ) (call_expression "CONCAT14(uVar9 < uVar29,uVar9)" identifier (argument_list "(uVar9 < uVar29,uVar9)" ( (binary_expression "uVar9 < uVar29" identifier < identifier) , identifier )))) + (binary_expression "(ulonglong)uVar20 * (ulonglong)local_40[4]" (cast_expression "(ulonglong)uVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[4]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[4]" identifier [ number_literal ]))))) ;) (expression_statement "local_4c = (uint)uVar1;" (assignment_expression "local_4c = (uint)uVar1" identifier = (cast_expression "(uint)uVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "lVar8 = (uVar2 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[3];" (assignment_expression "lVar8 = (uVar2 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[3]" identifier = (binary_expression "(uVar2 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[3]" (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )) + (binary_expression "(ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[3]" (binary_expression "(ulonglong)*(uint *)(param_1 + 0x20)" (parenthesized_expression "(ulonglong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) * (cast_expression "(ulonglong)local_40[3]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[3]" identifier [ number_literal ]))))) ;) (expression_statement "local_70._4_4_ = (uint)lVar7;" (assignment_expression "local_70._4_4_ = (uint)lVar7" (field_expression "local_70._4_4_" identifier . field_identifier) = (cast_expression "(uint)lVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar13 = (local_70._4_4_ >> 2) * 4;" (assignment_expression "uVar13 = (local_70._4_4_ >> 2) * 4" identifier = (binary_expression "(local_70._4_4_ >> 2) * 4" (parenthesized_expression "(local_70._4_4_ >> 2)" ( (binary_expression "local_70._4_4_ >> 2" (field_expression "local_70._4_4_" identifier . field_identifier) >> number_literal) )) * number_literal)) ;) (expression_statement "uVar20 = uVar13 + (local_70._4_4_ >> 2 | local_4c << 0x1e);" (assignment_expression "uVar20 = uVar13 + (local_70._4_4_ >> 2 | local_4c << 0x1e)" identifier = (binary_expression "uVar13 + (local_70._4_4_ >> 2 | local_4c << 0x1e)" identifier + (parenthesized_expression "(local_70._4_4_ >> 2 | local_4c << 0x1e)" ( (binary_expression "local_70._4_4_ >> 2 | local_4c << 0x1e" (binary_expression "local_70._4_4_ >> 2" (field_expression "local_70._4_4_" identifier . field_identifier) >> number_literal) | (binary_expression "local_4c << 0x1e" identifier << number_literal)) )))) ;) (expression_statement "uVar9 = uVar18 + (int)lVar8;" (assignment_expression "uVar9 = uVar18 + (int)lVar8" identifier = (binary_expression "uVar18 + (int)lVar8" identifier + (cast_expression "(int)lVar8" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "lVar7 = (uVar4 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[4] + (uVar1 >> 0x20);" (assignment_expression "lVar7 = (uVar4 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[4] + (uVar1 >> 0x20)" identifier = (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[4] + (uVar1 >> 0x20)" (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[4]" (parenthesized_expression "(uVar4 & 0xffffffff)" ( (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) )) + (binary_expression "(ulonglong)uVar21 * (ulonglong)local_40[4]" (cast_expression "(ulonglong)uVar21" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[4]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[4]" identifier [ number_literal ])))) + (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar16 = (uint)lVar7;" (assignment_expression "uVar16 = (uint)lVar7" identifier = (cast_expression "(uint)lVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar29 = (uint)((ulonglong)lVar7 >> 0x20);" (assignment_expression "uVar29 = (uint)((ulonglong)lVar7 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar7 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar7 >> 0x20)" ( (binary_expression "(ulonglong)lVar7 >> 0x20" (cast_expression "(ulonglong)lVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_64 = (uint)((ulonglong)local_40[0] * (ulonglong)uVar14);" (assignment_expression "local_64 = (uint)((ulonglong)local_40[0] * (ulonglong)uVar14)" identifier = (call_expression "(uint)((ulonglong)local_40[0] * (ulonglong)uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)local_40[0] * (ulonglong)uVar14)" ( (binary_expression "(ulonglong)local_40[0] * (ulonglong)uVar14" (cast_expression "(ulonglong)local_40[0]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) * (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )))) ;) (expression_statement "uVar21 = uVar20 + local_64;" (assignment_expression "uVar21 = uVar20 + local_64" identifier = (binary_expression "uVar20 + local_64" identifier + identifier)) ;) (expression_statement "lVar7 = (ulonglong)uVar9 + (ulonglong)uVar27 * (ulonglong)local_40[4];" (assignment_expression "lVar7 = (ulonglong)uVar9 + (ulonglong)uVar27 * (ulonglong)local_40[4]" identifier = (binary_expression "(ulonglong)uVar9 + (ulonglong)uVar27 * (ulonglong)local_40[4]" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) + (binary_expression "(ulonglong)uVar27 * (ulonglong)local_40[4]" (cast_expression "(ulonglong)uVar27" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)local_40[4]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "local_40[4]" identifier [ number_literal ]))))) ;) (expression_statement "uVar14 = (uint)(uVar21 < local_64);" (assignment_expression "uVar14 = (uint)(uVar21 < local_64)" identifier = (call_expression "(uint)(uVar21 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar21 < local_64)" ( (binary_expression "uVar21 < local_64" identifier < identifier) )))) ;) (expression_statement "local_5c = (int)lVar5;" (assignment_expression "local_5c = (int)lVar5" identifier = (cast_expression "(int)lVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_54 = (int)lVar3;" (assignment_expression "local_54 = (int)lVar3" identifier = (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar27 = uVar29 + (int)lVar7;" (assignment_expression "uVar27 = uVar29 + (int)lVar7" identifier = (binary_expression "uVar29 + (int)lVar7" identifier + (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar17 = uVar14 + local_54;" (assignment_expression "uVar17 = uVar14 + local_54" identifier = (binary_expression "uVar14 + local_54" identifier + identifier)) ;) (expression_statement "uVar18 = local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar27 < uVar29) + (int)((ulonglong)lVar7 >> 0x20);" (assignment_expression "uVar18 = local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar27 < uVar29) + (int)((ulonglong)lVar7 >> 0x20)" identifier = (binary_expression "local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar27 < uVar29) + (int)((ulonglong)lVar7 >> 0x20)" (binary_expression "local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar27 < uVar29)" (binary_expression "local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20)" (binary_expression "local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18)" (binary_expression "local_40[4] * *(int *)(param_1 + 0x20)" (subscript_expression "local_40[4]" identifier [ number_literal ]) * (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) + (call_expression "(uint)(uVar9 < uVar18)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < uVar18)" ( (binary_expression "uVar9 < uVar18" identifier < identifier) )))) + (cast_expression "(int)((ulonglong)lVar8 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar8 >> 0x20)" ( (binary_expression "(ulonglong)lVar8 >> 0x20" (cast_expression "(ulonglong)lVar8" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) + (call_expression "(uint)(uVar27 < uVar29)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar27 < uVar29)" ( (binary_expression "uVar27 < uVar29" identifier < identifier) )))) + (cast_expression "(int)((ulonglong)lVar7 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar7 >> 0x20)" ( (binary_expression "(ulonglong)lVar7 >> 0x20" (cast_expression "(ulonglong)lVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))))) ;) (expression_statement "lVar3 = (ulonglong)((uint)(uVar20 < uVar13) + (local_4c & 3)) +\n          (ulonglong)(local_4c >> 2 | uVar16 * 0x40000000) * 5;" (assignment_expression "lVar3 = (ulonglong)((uint)(uVar20 < uVar13) + (local_4c & 3)) +\n          (ulonglong)(local_4c >> 2 | uVar16 * 0x40000000) * 5" identifier = (binary_expression "(ulonglong)((uint)(uVar20 < uVar13) + (local_4c & 3)) +\n          (ulonglong)(local_4c >> 2 | uVar16 * 0x40000000) * 5" (call_expression "(ulonglong)((uint)(uVar20 < uVar13) + (local_4c & 3))" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "((uint)(uVar20 < uVar13) + (local_4c & 3))" ( (binary_expression "(uint)(uVar20 < uVar13) + (local_4c & 3)" (call_expression "(uint)(uVar20 < uVar13)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar20 < uVar13)" ( (binary_expression "uVar20 < uVar13" identifier < identifier) ))) + (parenthesized_expression "(local_4c & 3)" ( (binary_expression "local_4c & 3" identifier & number_literal) ))) ))) + (binary_expression "(ulonglong)(local_4c >> 2 | uVar16 * 0x40000000) * 5" (call_expression "(ulonglong)(local_4c >> 2 | uVar16 * 0x40000000)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(local_4c >> 2 | uVar16 * 0x40000000)" ( (binary_expression "local_4c >> 2 | uVar16 * 0x40000000" (binary_expression "local_4c >> 2" identifier >> number_literal) | (binary_expression "uVar16 * 0x40000000" identifier * number_literal)) ))) * number_literal))) ;) (expression_statement "puVar30 = (undefined1 *)((ulonglong)lVar3 >> 0x20);" (assignment_expression "puVar30 = (undefined1 *)((ulonglong)lVar3 >> 0x20)" identifier = (cast_expression "(undefined1 *)((ulonglong)lVar3 >> 0x20)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)lVar3 >> 0x20)" ( (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar20 = uVar17 + (int)lVar3;" (assignment_expression "uVar20 = uVar17 + (int)lVar3" identifier = (binary_expression "uVar17 + (int)lVar3" identifier + (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar29 = (uint)(uVar20 < uVar17) + (uint)(uVar17 < uVar14);" (assignment_expression "uVar29 = (uint)(uVar20 < uVar17) + (uint)(uVar17 < uVar14)" identifier = (binary_expression "(uint)(uVar20 < uVar17) + (uint)(uVar17 < uVar14)" (call_expression "(uint)(uVar20 < uVar17)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar20 < uVar17)" ( (binary_expression "uVar20 < uVar17" identifier < identifier) ))) + (call_expression "(uint)(uVar17 < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar17 < uVar14)" ( (binary_expression "uVar17 < uVar14" identifier < identifier) ))))) ;) (expression_statement "local_74 = (uint)lVar6;" (assignment_expression "local_74 = (uint)lVar6" identifier = (cast_expression "(uint)lVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar1 = ZEXT48(puVar30) + (ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000) * 5;" (assignment_expression "uVar1 = ZEXT48(puVar30) + (ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000) * 5" identifier = (binary_expression "ZEXT48(puVar30) + (ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000) * 5" (call_expression "ZEXT48(puVar30)" identifier (argument_list "(puVar30)" ( identifier ))) + (binary_expression "(ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000) * 5" (call_expression "(ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar16 >> 2 | uVar27 * 0x40000000)" ( (binary_expression "uVar16 >> 2 | uVar27 * 0x40000000" (binary_expression "uVar16 >> 2" identifier >> number_literal) | (binary_expression "uVar27 * 0x40000000" identifier * number_literal)) ))) * number_literal))) ;) (expression_statement "uVar9 = (uVar18 >> 4) * 0x19;" (assignment_expression "uVar9 = (uVar18 >> 4) * 0x19" identifier = (binary_expression "(uVar18 >> 4) * 0x19" (parenthesized_expression "(uVar18 >> 4)" ( (binary_expression "uVar18 >> 4" identifier >> number_literal) )) * number_literal)) ;) (expression_statement "uVar21 = uVar9 + uVar21;" (assignment_expression "uVar21 = uVar9 + uVar21" identifier = (binary_expression "uVar9 + uVar21" identifier + identifier)) ;) (expression_statement "uVar14 = uVar29 + (int)uVar1;" (assignment_expression "uVar14 = uVar29 + (int)uVar1" identifier = (binary_expression "uVar29 + (int)uVar1" identifier + (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*(uint *)(param_1 + 0x24) = uVar21;" (assignment_expression "*(uint *)(param_1 + 0x24) = uVar21" (pointer_expression "*(uint *)(param_1 + 0x24)" * (cast_expression "(uint *)(param_1 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar9 = (uint)(uVar21 < uVar9);" (assignment_expression "uVar9 = (uint)(uVar21 < uVar9)" identifier = (call_expression "(uint)(uVar21 < uVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar21 < uVar9)" ( (binary_expression "uVar21 < uVar9" identifier < identifier) )))) ;) (expression_statement "uVar20 = uVar9 + uVar20;" (assignment_expression "uVar20 = uVar9 + uVar20" identifier = (binary_expression "uVar9 + uVar20" identifier + identifier)) ;) (expression_statement "*(uint *)(param_1 + 0x28) = uVar20;" (assignment_expression "*(uint *)(param_1 + 0x28) = uVar20" (pointer_expression "*(uint *)(param_1 + 0x28)" * (cast_expression "(uint *)(param_1 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar20 = (uint)(uVar20 < uVar9);" (assignment_expression "uVar20 = (uint)(uVar20 < uVar9)" identifier = (call_expression "(uint)(uVar20 < uVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar20 < uVar9)" ( (binary_expression "uVar20 < uVar9" identifier < identifier) )))) ;) (expression_statement "lVar3 = (uVar1 >> 0x20) + (ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000) * 5;" (assignment_expression "lVar3 = (uVar1 >> 0x20) + (ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000) * 5" identifier = (binary_expression "(uVar1 >> 0x20) + (ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000) * 5" (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )) + (binary_expression "(ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000) * 5" (call_expression "(ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar27 >> 2 | uVar18 * 0x40000000)" ( (binary_expression "uVar27 >> 2 | uVar18 * 0x40000000" (binary_expression "uVar27 >> 2" identifier >> number_literal) | (binary_expression "uVar18 * 0x40000000" identifier * number_literal)) ))) * number_literal))) ;) (expression_statement "uVar21 = (uint)(uVar14 + local_5c < uVar14) + (uint)(uVar14 < uVar29);" (assignment_expression "uVar21 = (uint)(uVar14 + local_5c < uVar14) + (uint)(uVar14 < uVar29)" identifier = (binary_expression "(uint)(uVar14 + local_5c < uVar14) + (uint)(uVar14 < uVar29)" (call_expression "(uint)(uVar14 + local_5c < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar14 + local_5c < uVar14)" ( (binary_expression "uVar14 + local_5c < uVar14" (binary_expression "uVar14 + local_5c" identifier + identifier) < identifier) ))) + (call_expression "(uint)(uVar14 < uVar29)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar14 < uVar29)" ( (binary_expression "uVar14 < uVar29" identifier < identifier) ))))) ;) (expression_statement "uVar9 = uVar20 + uVar14 + local_5c;" (assignment_expression "uVar9 = uVar20 + uVar14 + local_5c" identifier = (binary_expression "uVar20 + uVar14 + local_5c" (binary_expression "uVar20 + uVar14" identifier + identifier) + identifier)) ;) (expression_statement "*(uint *)(param_1 + 0x2c) = uVar9;" (assignment_expression "*(uint *)(param_1 + 0x2c) = uVar9" (pointer_expression "*(uint *)(param_1 + 0x2c)" * (cast_expression "(uint *)(param_1 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar29 = (uint)(uVar9 < uVar20);" (assignment_expression "uVar29 = (uint)(uVar9 < uVar20)" identifier = (call_expression "(uint)(uVar9 < uVar20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < uVar20)" ( (binary_expression "uVar9 < uVar20" identifier < identifier) )))) ;) (expression_statement "uVar9 = (int)lVar3 + local_74;" (assignment_expression "uVar9 = (int)lVar3 + local_74" identifier = (binary_expression "(int)lVar3 + local_74" (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "uVar14 = uVar21 + uVar9;" (assignment_expression "uVar14 = uVar21 + uVar9" identifier = (binary_expression "uVar21 + uVar9" identifier + identifier)) ;) (expression_statement "uVar9 = (uint)(uVar9 < local_74);" (assignment_expression "uVar9 = (uint)(uVar9 < local_74)" identifier = (call_expression "(uint)(uVar9 < local_74)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < local_74)" ( (binary_expression "uVar9 < local_74" identifier < identifier) )))) ;) (expression_statement "uVar20 = uVar29 + uVar14;" (assignment_expression "uVar20 = uVar29 + uVar14" identifier = (binary_expression "uVar29 + uVar14" identifier + identifier)) ;) (expression_statement "*(uint *)(param_1 + 0x30) = uVar20;" (assignment_expression "*(uint *)(param_1 + 0x30) = uVar20" (pointer_expression "*(uint *)(param_1 + 0x30)" * (cast_expression "(uint *)(param_1 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar11 = (undefined1 *)\n            ((uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29));" (assignment_expression "puVar11 = (undefined1 *)\n            ((uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29))" identifier = (cast_expression "(undefined1 *)\n            ((uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29))" ( (binary_expression "(uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29)" (binary_expression "(uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9" (binary_expression "(uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21)" (binary_expression "(uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20)" (binary_expression "(uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3)" (binary_expression "(uVar18 * 0x10000000 >> 0x1e) * 5" (parenthesized_expression "(uVar18 * 0x10000000 >> 0x1e)" ( (binary_expression "uVar18 * 0x10000000 >> 0x1e" (binary_expression "uVar18 * 0x10000000" identifier * number_literal) >> number_literal) )) * number_literal) + (parenthesized_expression "(local_70._4_4_ & 3)" ( (binary_expression "local_70._4_4_ & 3" (field_expression "local_70._4_4_" identifier . field_identifier) & number_literal) ))) + (cast_expression "(int)((ulonglong)lVar3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar3 >> 0x20)" ( (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) + (parenthesized_expression "(uVar14 < uVar21)" ( (binary_expression "uVar14 < uVar21" identifier < identifier) ))) + identifier) + (call_expression "(uint)(uVar20 < uVar29)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar20 < uVar29)" ( (binary_expression "uVar20 < uVar29" identifier < identifier) )))) )))) ;) (expression_statement "*(undefined1 **)(param_1 + 0x34) = puVar11;" (assignment_expression "*(undefined1 **)(param_1 + 0x34) = puVar11" (pointer_expression "*(undefined1 **)(param_1 + 0x34)" * (cast_expression "(undefined1 **)(param_1 + 0x34)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_40[5] == iVar22) {\n    return;\n  }" if (parenthesized_expression "(local_40[5] == iVar22)" ( (binary_expression "local_40[5] == iVar22" (subscript_expression "local_40[5]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar28 = FUN_0005ab78;" (assignment_expression "pcVar28 = FUN_0005ab78" identifier = identifier) ;) (expression_statement "puVar24 = PTR___stack_chk_fail_000b0c70;" (assignment_expression "puVar24 = PTR___stack_chk_fail_000b0c70" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000b0c70)();" (call_expression "(*(code *)PTR___stack_chk_fail_000b0c70)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000b0c70)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000b0c70" * (cast_expression "(code *)PTR___stack_chk_fail_000b0c70" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar26 = auStack_90;" (assignment_expression "puVar26 = auStack_90" identifier = identifier) ;) (while_statement "while( true ) {\n    puVar12 = puVar11;\n    iVar22 = *(int *)(puVar12 + 0x48);\n    *(int *)(puVar26 + -0xc) = (int)lVar3;\n    piVar19 = *(int **)(puVar24 + 0x56124);\n    *(undefined **)(puVar26 + -0x30) = puVar24 + 0x5d5d8;\n    *(undefined1 **)(puVar26 + -8) = puVar30;\n    *(int *)(puVar26 + -0x10) = (int)((ulonglong)lVar3 >> 0x20);\n    lVar3 = CONCAT44(uVar9,piVar19);\n    *(code **)(puVar26 + -4) = pcVar28;\n    *(int *)(puVar26 + -0x14) = *piVar19;\n    if (iVar22 != 0) {\n      FUN_0005a528();\n    }\n    *(undefined4 *)(puVar26 + -0x28) = 0;\n    *(undefined4 *)(puVar26 + -0x24) = 0;\n    *(undefined4 *)(puVar26 + -0x20) = 0;\n    *(undefined4 *)(puVar26 + -0x1c) = 0;\n    *(undefined4 *)(puVar26 + -0x18) = 0;\n    FUN_0005a4e8(puVar26 + -0x28,puVar12,0x10);\n    uVar14 = (*(uint *)(puVar12 + 0x34) >> 2) * 5;\n    uVar21 = *(int *)(puVar12 + 0x24) + uVar14;\n    uVar20 = (uint)(uVar21 < uVar14);\n    uVar16 = uVar20 + *(int *)(puVar12 + 0x28);\n    uVar14 = (uint)(uVar21 + 5 < uVar21);\n    uVar20 = (uint)(uVar16 < uVar20);\n    uVar27 = uVar20 + *(int *)(puVar12 + 0x2c);\n    uVar29 = (uint)(uVar14 + uVar16 < uVar14);\n    uVar14 = (uint)(uVar27 < uVar20);\n    uVar13 = uVar14 + *(int *)(puVar12 + 0x30);\n    uVar20 = (uint)(uVar29 + uVar27 < uVar29);\n    iVar22 = (*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14);\n    uVar14 = (iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5;\n    uVar21 = uVar14 + uVar21;\n    uVar14 = (uint)(uVar21 < uVar14);\n    *(uint *)(puVar12 + 0x24) = uVar21;\n    uVar16 = uVar14 + uVar16;\n    uVar14 = (uint)(uVar16 < uVar14);\n    *(uint *)(puVar12 + 0x28) = uVar16;\n    uVar27 = uVar14 + uVar27;\n    uVar14 = (uint)(uVar27 < uVar14);\n    *(uint *)(puVar12 + 0x2c) = uVar27;\n    uVar13 = uVar14 + uVar13;\n    *(uint *)(puVar12 + 0x30) = uVar13;\n    *(uint *)(puVar12 + 0x34) = iVar22 + (uint)(uVar13 < uVar14) & 3;\n    FUN_0005a298();\n    iVar22 = 0;\n    iVar25 = *(int *)(puVar26 + -0x30);\n    do {\n      iVar10 = iVar22 >> 2;\n      uVar14 = iVar22 << 3;\n      puVar11 = (undefined1 *)(uVar9 + iVar22);\n      iVar22 = iVar22 + 1;\n      *puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));\n    } while (iVar22 != 0x10);\n    if (*(int *)(puVar26 + -0x14) == *piVar19) break;\n    pcVar23 = *(code **)(iVar25 + -0x74e0);\n    pcVar28 = (code *)0x5ad34;\n    (*pcVar23)();\n    puVar24 = (undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488);\n    puVar11 = puVar11 + 0x114;\n    uVar9 = uVar14;\n    puVar30 = puVar12;\n    puVar26 = puVar26 + -0x40;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    puVar12 = puVar11;\n    iVar22 = *(int *)(puVar12 + 0x48);\n    *(int *)(puVar26 + -0xc) = (int)lVar3;\n    piVar19 = *(int **)(puVar24 + 0x56124);\n    *(undefined **)(puVar26 + -0x30) = puVar24 + 0x5d5d8;\n    *(undefined1 **)(puVar26 + -8) = puVar30;\n    *(int *)(puVar26 + -0x10) = (int)((ulonglong)lVar3 >> 0x20);\n    lVar3 = CONCAT44(uVar9,piVar19);\n    *(code **)(puVar26 + -4) = pcVar28;\n    *(int *)(puVar26 + -0x14) = *piVar19;\n    if (iVar22 != 0) {\n      FUN_0005a528();\n    }\n    *(undefined4 *)(puVar26 + -0x28) = 0;\n    *(undefined4 *)(puVar26 + -0x24) = 0;\n    *(undefined4 *)(puVar26 + -0x20) = 0;\n    *(undefined4 *)(puVar26 + -0x1c) = 0;\n    *(undefined4 *)(puVar26 + -0x18) = 0;\n    FUN_0005a4e8(puVar26 + -0x28,puVar12,0x10);\n    uVar14 = (*(uint *)(puVar12 + 0x34) >> 2) * 5;\n    uVar21 = *(int *)(puVar12 + 0x24) + uVar14;\n    uVar20 = (uint)(uVar21 < uVar14);\n    uVar16 = uVar20 + *(int *)(puVar12 + 0x28);\n    uVar14 = (uint)(uVar21 + 5 < uVar21);\n    uVar20 = (uint)(uVar16 < uVar20);\n    uVar27 = uVar20 + *(int *)(puVar12 + 0x2c);\n    uVar29 = (uint)(uVar14 + uVar16 < uVar14);\n    uVar14 = (uint)(uVar27 < uVar20);\n    uVar13 = uVar14 + *(int *)(puVar12 + 0x30);\n    uVar20 = (uint)(uVar29 + uVar27 < uVar29);\n    iVar22 = (*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14);\n    uVar14 = (iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5;\n    uVar21 = uVar14 + uVar21;\n    uVar14 = (uint)(uVar21 < uVar14);\n    *(uint *)(puVar12 + 0x24) = uVar21;\n    uVar16 = uVar14 + uVar16;\n    uVar14 = (uint)(uVar16 < uVar14);\n    *(uint *)(puVar12 + 0x28) = uVar16;\n    uVar27 = uVar14 + uVar27;\n    uVar14 = (uint)(uVar27 < uVar14);\n    *(uint *)(puVar12 + 0x2c) = uVar27;\n    uVar13 = uVar14 + uVar13;\n    *(uint *)(puVar12 + 0x30) = uVar13;\n    *(uint *)(puVar12 + 0x34) = iVar22 + (uint)(uVar13 < uVar14) & 3;\n    FUN_0005a298();\n    iVar22 = 0;\n    iVar25 = *(int *)(puVar26 + -0x30);\n    do {\n      iVar10 = iVar22 >> 2;\n      uVar14 = iVar22 << 3;\n      puVar11 = (undefined1 *)(uVar9 + iVar22);\n      iVar22 = iVar22 + 1;\n      *puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));\n    } while (iVar22 != 0x10);\n    if (*(int *)(puVar26 + -0x14) == *piVar19) break;\n    pcVar23 = *(code **)(iVar25 + -0x74e0);\n    pcVar28 = (code *)0x5ad34;\n    (*pcVar23)();\n    puVar24 = (undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488);\n    puVar11 = puVar11 + 0x114;\n    uVar9 = uVar14;\n    puVar30 = puVar12;\n    puVar26 = puVar26 + -0x40;\n  }" { (expression_statement "puVar12 = puVar11;" (assignment_expression "puVar12 = puVar11" identifier = identifier) ;) (expression_statement "iVar22 = *(int *)(puVar12 + 0x48);" (assignment_expression "iVar22 = *(int *)(puVar12 + 0x48)" identifier = (pointer_expression "*(int *)(puVar12 + 0x48)" * (cast_expression "(int *)(puVar12 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x48)" ( (binary_expression "puVar12 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar26 + -0xc) = (int)lVar3;" (assignment_expression "*(int *)(puVar26 + -0xc) = (int)lVar3" (pointer_expression "*(int *)(puVar26 + -0xc)" * (cast_expression "(int *)(puVar26 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0xc)" ( (binary_expression "puVar26 + -0xc" identifier + number_literal) )))) = (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar19 = *(int **)(puVar24 + 0x56124);" (assignment_expression "piVar19 = *(int **)(puVar24 + 0x56124)" identifier = (pointer_expression "*(int **)(puVar24 + 0x56124)" * (cast_expression "(int **)(puVar24 + 0x56124)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x56124)" ( (binary_expression "puVar24 + 0x56124" identifier + number_literal) ))))) ;) (expression_statement "*(undefined **)(puVar26 + -0x30) = puVar24 + 0x5d5d8;" (assignment_expression "*(undefined **)(puVar26 + -0x30) = puVar24 + 0x5d5d8" (pointer_expression "*(undefined **)(puVar26 + -0x30)" * (cast_expression "(undefined **)(puVar26 + -0x30)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0x30)" ( (binary_expression "puVar26 + -0x30" identifier + number_literal) )))) = (binary_expression "puVar24 + 0x5d5d8" identifier + number_literal)) ;) (expression_statement "*(undefined1 **)(puVar26 + -8) = puVar30;" (assignment_expression "*(undefined1 **)(puVar26 + -8) = puVar30" (pointer_expression "*(undefined1 **)(puVar26 + -8)" * (cast_expression "(undefined1 **)(puVar26 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -8)" ( (binary_expression "puVar26 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar26 + -0x10) = (int)((ulonglong)lVar3 >> 0x20);" (assignment_expression "*(int *)(puVar26 + -0x10) = (int)((ulonglong)lVar3 >> 0x20)" (pointer_expression "*(int *)(puVar26 + -0x10)" * (cast_expression "(int *)(puVar26 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x10)" ( (binary_expression "puVar26 + -0x10" identifier + number_literal) )))) = (cast_expression "(int)((ulonglong)lVar3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar3 >> 0x20)" ( (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "lVar3 = CONCAT44(uVar9,piVar19);" (assignment_expression "lVar3 = CONCAT44(uVar9,piVar19)" identifier = (call_expression "CONCAT44(uVar9,piVar19)" identifier (argument_list "(uVar9,piVar19)" ( identifier , identifier )))) ;) (expression_statement "*(code **)(puVar26 + -4) = pcVar28;" (assignment_expression "*(code **)(puVar26 + -4) = pcVar28" (pointer_expression "*(code **)(puVar26 + -4)" * (cast_expression "(code **)(puVar26 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -4)" ( (binary_expression "puVar26 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar26 + -0x14) = *piVar19;" (assignment_expression "*(int *)(puVar26 + -0x14) = *piVar19" (pointer_expression "*(int *)(puVar26 + -0x14)" * (cast_expression "(int *)(puVar26 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x14)" ( (binary_expression "puVar26 + -0x14" identifier + number_literal) )))) = (pointer_expression "*piVar19" * identifier)) ;) (if_statement "if (iVar22 != 0) {\n      FUN_0005a528();\n    }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_0005a528();\n    }" { (expression_statement "FUN_0005a528();" (call_expression "FUN_0005a528()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined4 *)(puVar26 + -0x28) = 0;" (assignment_expression "*(undefined4 *)(puVar26 + -0x28) = 0" (pointer_expression "*(undefined4 *)(puVar26 + -0x28)" * (cast_expression "(undefined4 *)(puVar26 + -0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x28)" ( (binary_expression "puVar26 + -0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar26 + -0x24) = 0;" (assignment_expression "*(undefined4 *)(puVar26 + -0x24) = 0" (pointer_expression "*(undefined4 *)(puVar26 + -0x24)" * (cast_expression "(undefined4 *)(puVar26 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x24)" ( (binary_expression "puVar26 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar26 + -0x20) = 0;" (assignment_expression "*(undefined4 *)(puVar26 + -0x20) = 0" (pointer_expression "*(undefined4 *)(puVar26 + -0x20)" * (cast_expression "(undefined4 *)(puVar26 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x20)" ( (binary_expression "puVar26 + -0x20" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar26 + -0x1c) = 0;" (assignment_expression "*(undefined4 *)(puVar26 + -0x1c) = 0" (pointer_expression "*(undefined4 *)(puVar26 + -0x1c)" * (cast_expression "(undefined4 *)(puVar26 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x1c)" ( (binary_expression "puVar26 + -0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar26 + -0x18) = 0;" (assignment_expression "*(undefined4 *)(puVar26 + -0x18) = 0" (pointer_expression "*(undefined4 *)(puVar26 + -0x18)" * (cast_expression "(undefined4 *)(puVar26 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x18)" ( (binary_expression "puVar26 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0005a4e8(puVar26 + -0x28,puVar12,0x10);" (call_expression "FUN_0005a4e8(puVar26 + -0x28,puVar12,0x10)" identifier (argument_list "(puVar26 + -0x28,puVar12,0x10)" ( (binary_expression "puVar26 + -0x28" identifier + number_literal) , identifier , number_literal ))) ;) (expression_statement "uVar14 = (*(uint *)(puVar12 + 0x34) >> 2) * 5;" (assignment_expression "uVar14 = (*(uint *)(puVar12 + 0x34) >> 2) * 5" identifier = (binary_expression "(*(uint *)(puVar12 + 0x34) >> 2) * 5" (parenthesized_expression "(*(uint *)(puVar12 + 0x34) >> 2)" ( (binary_expression "*(uint *)(puVar12 + 0x34) >> 2" (pointer_expression "*(uint *)(puVar12 + 0x34)" * (cast_expression "(uint *)(puVar12 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x34)" ( (binary_expression "puVar12 + 0x34" identifier + number_literal) )))) >> number_literal) )) * number_literal)) ;) (expression_statement "uVar21 = *(int *)(puVar12 + 0x24) + uVar14;" (assignment_expression "uVar21 = *(int *)(puVar12 + 0x24) + uVar14" identifier = (binary_expression "*(int *)(puVar12 + 0x24) + uVar14" (pointer_expression "*(int *)(puVar12 + 0x24)" * (cast_expression "(int *)(puVar12 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x24)" ( (binary_expression "puVar12 + 0x24" identifier + number_literal) )))) + identifier)) ;) (expression_statement "uVar20 = (uint)(uVar21 < uVar14);" (assignment_expression "uVar20 = (uint)(uVar21 < uVar14)" identifier = (call_expression "(uint)(uVar21 < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar21 < uVar14)" ( (binary_expression "uVar21 < uVar14" identifier < identifier) )))) ;) (expression_statement "uVar16 = uVar20 + *(int *)(puVar12 + 0x28);" (assignment_expression "uVar16 = uVar20 + *(int *)(puVar12 + 0x28)" identifier = (binary_expression "uVar20 + *(int *)(puVar12 + 0x28)" identifier + (pointer_expression "*(int *)(puVar12 + 0x28)" * (cast_expression "(int *)(puVar12 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x28)" ( (binary_expression "puVar12 + 0x28" identifier + number_literal) )))))) ;) (expression_statement "uVar14 = (uint)(uVar21 + 5 < uVar21);" (assignment_expression "uVar14 = (uint)(uVar21 + 5 < uVar21)" identifier = (call_expression "(uint)(uVar21 + 5 < uVar21)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar21 + 5 < uVar21)" ( (binary_expression "uVar21 + 5 < uVar21" (binary_expression "uVar21 + 5" identifier + number_literal) < identifier) )))) ;) (expression_statement "uVar20 = (uint)(uVar16 < uVar20);" (assignment_expression "uVar20 = (uint)(uVar16 < uVar20)" identifier = (call_expression "(uint)(uVar16 < uVar20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar16 < uVar20)" ( (binary_expression "uVar16 < uVar20" identifier < identifier) )))) ;) (expression_statement "uVar27 = uVar20 + *(int *)(puVar12 + 0x2c);" (assignment_expression "uVar27 = uVar20 + *(int *)(puVar12 + 0x2c)" identifier = (binary_expression "uVar20 + *(int *)(puVar12 + 0x2c)" identifier + (pointer_expression "*(int *)(puVar12 + 0x2c)" * (cast_expression "(int *)(puVar12 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x2c)" ( (binary_expression "puVar12 + 0x2c" identifier + number_literal) )))))) ;) (expression_statement "uVar29 = (uint)(uVar14 + uVar16 < uVar14);" (assignment_expression "uVar29 = (uint)(uVar14 + uVar16 < uVar14)" identifier = (call_expression "(uint)(uVar14 + uVar16 < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar14 + uVar16 < uVar14)" ( (binary_expression "uVar14 + uVar16 < uVar14" (binary_expression "uVar14 + uVar16" identifier + identifier) < identifier) )))) ;) (expression_statement "uVar14 = (uint)(uVar27 < uVar20);" (assignment_expression "uVar14 = (uint)(uVar27 < uVar20)" identifier = (call_expression "(uint)(uVar27 < uVar20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar27 < uVar20)" ( (binary_expression "uVar27 < uVar20" identifier < identifier) )))) ;) (expression_statement "uVar13 = uVar14 + *(int *)(puVar12 + 0x30);" (assignment_expression "uVar13 = uVar14 + *(int *)(puVar12 + 0x30)" identifier = (binary_expression "uVar14 + *(int *)(puVar12 + 0x30)" identifier + (pointer_expression "*(int *)(puVar12 + 0x30)" * (cast_expression "(int *)(puVar12 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x30)" ( (binary_expression "puVar12 + 0x30" identifier + number_literal) )))))) ;) (expression_statement "uVar20 = (uint)(uVar29 + uVar27 < uVar29);" (assignment_expression "uVar20 = (uint)(uVar29 + uVar27 < uVar29)" identifier = (call_expression "(uint)(uVar29 + uVar27 < uVar29)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar29 + uVar27 < uVar29)" ( (binary_expression "uVar29 + uVar27 < uVar29" (binary_expression "uVar29 + uVar27" identifier + identifier) < identifier) )))) ;) (expression_statement "iVar22 = (*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14);" (assignment_expression "iVar22 = (*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14)" identifier = (binary_expression "(*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14)" (parenthesized_expression "(*(uint *)(puVar12 + 0x34) & 3)" ( (binary_expression "*(uint *)(puVar12 + 0x34) & 3" (pointer_expression "*(uint *)(puVar12 + 0x34)" * (cast_expression "(uint *)(puVar12 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x34)" ( (binary_expression "puVar12 + 0x34" identifier + number_literal) )))) & number_literal) )) + (call_expression "(uint)(uVar13 < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 < uVar14)" ( (binary_expression "uVar13 < uVar14" identifier < identifier) ))))) ;) (expression_statement "uVar14 = (iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5;" (assignment_expression "uVar14 = (iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5" identifier = (binary_expression "(iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5" (parenthesized_expression "(iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2)" ( (binary_expression "iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2" (binary_expression "iVar22 + (uint)(uVar20 + uVar13 < uVar20)" identifier + (call_expression "(uint)(uVar20 + uVar13 < uVar20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar20 + uVar13 < uVar20)" ( (binary_expression "uVar20 + uVar13 < uVar20" (binary_expression "uVar20 + uVar13" identifier + identifier) < identifier) )))) >> number_literal) )) * number_literal)) ;) (expression_statement "uVar21 = uVar14 + uVar21;" (assignment_expression "uVar21 = uVar14 + uVar21" identifier = (binary_expression "uVar14 + uVar21" identifier + identifier)) ;) (expression_statement "uVar14 = (uint)(uVar21 < uVar14);" (assignment_expression "uVar14 = (uint)(uVar21 < uVar14)" identifier = (call_expression "(uint)(uVar21 < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar21 < uVar14)" ( (binary_expression "uVar21 < uVar14" identifier < identifier) )))) ;) (expression_statement "*(uint *)(puVar12 + 0x24) = uVar21;" (assignment_expression "*(uint *)(puVar12 + 0x24) = uVar21" (pointer_expression "*(uint *)(puVar12 + 0x24)" * (cast_expression "(uint *)(puVar12 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x24)" ( (binary_expression "puVar12 + 0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar16 = uVar14 + uVar16;" (assignment_expression "uVar16 = uVar14 + uVar16" identifier = (binary_expression "uVar14 + uVar16" identifier + identifier)) ;) (expression_statement "uVar14 = (uint)(uVar16 < uVar14);" (assignment_expression "uVar14 = (uint)(uVar16 < uVar14)" identifier = (call_expression "(uint)(uVar16 < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar16 < uVar14)" ( (binary_expression "uVar16 < uVar14" identifier < identifier) )))) ;) (expression_statement "*(uint *)(puVar12 + 0x28) = uVar16;" (assignment_expression "*(uint *)(puVar12 + 0x28) = uVar16" (pointer_expression "*(uint *)(puVar12 + 0x28)" * (cast_expression "(uint *)(puVar12 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x28)" ( (binary_expression "puVar12 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar27 = uVar14 + uVar27;" (assignment_expression "uVar27 = uVar14 + uVar27" identifier = (binary_expression "uVar14 + uVar27" identifier + identifier)) ;) (expression_statement "uVar14 = (uint)(uVar27 < uVar14);" (assignment_expression "uVar14 = (uint)(uVar27 < uVar14)" identifier = (call_expression "(uint)(uVar27 < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar27 < uVar14)" ( (binary_expression "uVar27 < uVar14" identifier < identifier) )))) ;) (expression_statement "*(uint *)(puVar12 + 0x2c) = uVar27;" (assignment_expression "*(uint *)(puVar12 + 0x2c) = uVar27" (pointer_expression "*(uint *)(puVar12 + 0x2c)" * (cast_expression "(uint *)(puVar12 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x2c)" ( (binary_expression "puVar12 + 0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar13 = uVar14 + uVar13;" (assignment_expression "uVar13 = uVar14 + uVar13" identifier = (binary_expression "uVar14 + uVar13" identifier + identifier)) ;) (expression_statement "*(uint *)(puVar12 + 0x30) = uVar13;" (assignment_expression "*(uint *)(puVar12 + 0x30) = uVar13" (pointer_expression "*(uint *)(puVar12 + 0x30)" * (cast_expression "(uint *)(puVar12 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x30)" ( (binary_expression "puVar12 + 0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar12 + 0x34) = iVar22 + (uint)(uVar13 < uVar14) & 3;" (assignment_expression "*(uint *)(puVar12 + 0x34) = iVar22 + (uint)(uVar13 < uVar14) & 3" (pointer_expression "*(uint *)(puVar12 + 0x34)" * (cast_expression "(uint *)(puVar12 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x34)" ( (binary_expression "puVar12 + 0x34" identifier + number_literal) )))) = (binary_expression "iVar22 + (uint)(uVar13 < uVar14) & 3" (binary_expression "iVar22 + (uint)(uVar13 < uVar14)" identifier + (call_expression "(uint)(uVar13 < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 < uVar14)" ( (binary_expression "uVar13 < uVar14" identifier < identifier) )))) & number_literal)) ;) (expression_statement "FUN_0005a298();" (call_expression "FUN_0005a298()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar22 = 0;" (assignment_expression "iVar22 = 0" identifier = number_literal) ;) (expression_statement "iVar25 = *(int *)(puVar26 + -0x30);" (assignment_expression "iVar25 = *(int *)(puVar26 + -0x30)" identifier = (pointer_expression "*(int *)(puVar26 + -0x30)" * (cast_expression "(int *)(puVar26 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x30)" ( (binary_expression "puVar26 + -0x30" identifier + number_literal) ))))) ;) (do_statement "do {\n      iVar10 = iVar22 >> 2;\n      uVar14 = iVar22 << 3;\n      puVar11 = (undefined1 *)(uVar9 + iVar22);\n      iVar22 = iVar22 + 1;\n      *puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));\n    } while (iVar22 != 0x10);" do (compound_statement "{\n      iVar10 = iVar22 >> 2;\n      uVar14 = iVar22 << 3;\n      puVar11 = (undefined1 *)(uVar9 + iVar22);\n      iVar22 = iVar22 + 1;\n      *puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));\n    }" { (expression_statement "iVar10 = iVar22 >> 2;" (assignment_expression "iVar10 = iVar22 >> 2" identifier = (binary_expression "iVar22 >> 2" identifier >> number_literal)) ;) (expression_statement "uVar14 = iVar22 << 3;" (assignment_expression "uVar14 = iVar22 << 3" identifier = (binary_expression "iVar22 << 3" identifier << number_literal)) ;) (expression_statement "puVar11 = (undefined1 *)(uVar9 + iVar22);" (assignment_expression "puVar11 = (undefined1 *)(uVar9 + iVar22)" identifier = (cast_expression "(undefined1 *)(uVar9 + iVar22)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar9 + iVar22)" ( (binary_expression "uVar9 + iVar22" identifier + identifier) )))) ;) (expression_statement "iVar22 = iVar22 + 1;" (assignment_expression "iVar22 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ;) (expression_statement "*puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));" (assignment_expression "*puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f))" (pointer_expression "*puVar11" * identifier) = (cast_expression "(char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f))" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f))" ( (binary_expression "*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f)" (pointer_expression "*(uint *)(puVar26 + iVar10 * 4 + -0x28)" * (cast_expression "(uint *)(puVar26 + iVar10 * 4 + -0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + iVar10 * 4 + -0x28)" ( (binary_expression "puVar26 + iVar10 * 4 + -0x28" (binary_expression "puVar26 + iVar10 * 4" identifier + (binary_expression "iVar10 * 4" identifier * number_literal)) + number_literal) )))) >> (parenthesized_expression "(uVar14 & 0x1f)" ( (binary_expression "uVar14 & 0x1f" identifier & number_literal) ))) )))) ;) }) while (parenthesized_expression "(iVar22 != 0x10)" ( (binary_expression "iVar22 != 0x10" identifier != number_literal) )) ;) (if_statement "if (*(int *)(puVar26 + -0x14) == *piVar19) break;" if (parenthesized_expression "(*(int *)(puVar26 + -0x14) == *piVar19)" ( (binary_expression "*(int *)(puVar26 + -0x14) == *piVar19" (pointer_expression "*(int *)(puVar26 + -0x14)" * (cast_expression "(int *)(puVar26 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x14)" ( (binary_expression "puVar26 + -0x14" identifier + number_literal) )))) == (pointer_expression "*piVar19" * identifier)) )) (break_statement "break;" break ;)) (expression_statement "pcVar23 = *(code **)(iVar25 + -0x74e0);" (assignment_expression "pcVar23 = *(code **)(iVar25 + -0x74e0)" identifier = (pointer_expression "*(code **)(iVar25 + -0x74e0)" * (cast_expression "(code **)(iVar25 + -0x74e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar25 + -0x74e0)" ( (binary_expression "iVar25 + -0x74e0" identifier + number_literal) ))))) ;) (expression_statement "pcVar28 = (code *)0x5ad34;" (assignment_expression "pcVar28 = (code *)0x5ad34" identifier = (cast_expression "(code *)0x5ad34" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar24 = (undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488);" (assignment_expression "puVar24 = (undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488)" identifier = (cast_expression "(undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar23 + 0x55b2c) + -0x5488)" ( (binary_expression "*(int *)(pcVar23 + 0x55b2c) + -0x5488" (pointer_expression "*(int *)(pcVar23 + 0x55b2c)" * (cast_expression "(int *)(pcVar23 + 0x55b2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar23 + 0x55b2c)" ( (binary_expression "pcVar23 + 0x55b2c" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "puVar11 = puVar11 + 0x114;" (assignment_expression "puVar11 = puVar11 + 0x114" identifier = (binary_expression "puVar11 + 0x114" identifier + number_literal)) ;) (expression_statement "uVar9 = uVar14;" (assignment_expression "uVar9 = uVar14" identifier = identifier) ;) (expression_statement "puVar30 = puVar12;" (assignment_expression "puVar30 = puVar12" identifier = identifier) ;) (expression_statement "puVar26 = puVar26 + -0x40;" (assignment_expression "puVar26 = puVar26 + -0x40" identifier = (binary_expression "puVar26 + -0x40" identifier + number_literal)) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ]) = (binary_expression (binary_expression LIT << (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) ))) | (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ]))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) )) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) * (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) * (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) * (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT < IDENT) , IDENT )))) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) * (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) + (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) + (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT < IDENT) , IDENT )))) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) + (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) + (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) + (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT < IDENT) , IDENT )))) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) + (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) + (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) + (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT < IDENT) , IDENT )))) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) >> LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression (field_expression IDENT . field_identifier) >> LIT) | (binary_expression IDENT << LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) + (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT >> LIT) | (binary_expression IDENT * LIT)) ))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression IDENT (argument_list ( IDENT ))) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT >> LIT) | (binary_expression IDENT * LIT)) ))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT >> LIT) | (binary_expression IDENT * LIT)) ))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) ))) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) >> LIT) )) * LIT) + (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) & LIT) ))) + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) + (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) + IDENT) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT + LIT) < IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )))) >> LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression IDENT + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) & LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) )))) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * IDENT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (return_statement return ;) })))
(function_definition "void FUN_0005a528(int param_1,undefined4 param_2,uint param_3)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  longlong lVar3;\n  ulonglong uVar4;\n  longlong lVar5;\n  longlong lVar6;\n  longlong lVar7;\n  longlong lVar8;\n  uint uVar9;\n  int iVar10;\n  undefined1 *puVar11;\n  undefined1 *puVar12;\n  uint uVar13;\n  uint uVar14;\n  uint *puVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  int *piVar19;\n  uint uVar20;\n  uint uVar21;\n  int iVar22;\n  code *pcVar23;\n  undefined *puVar24;\n  int iVar25;\n  undefined1 *puVar26;\n  uint uVar27;\n  code *pcVar28;\n  uint uVar29;\n  undefined1 *puVar30;\n  undefined1 auStack_90 [16];\n  uint local_78;\n  uint local_74;\n  undefined8 local_70;\n  uint local_64;\n  int local_5c;\n  int local_54;\n  uint local_4c;\n  uint local_40 [6];\n  \n  puVar15 = local_40;\n  local_40[0] = 0;\n  local_40[1] = 0;\n  local_40[2] = 0;\n  local_40[3] = 0;\n  local_40[4] = 0;\n  local_40[5] = *(uint *)PTR___stack_chk_guard_000b0c9c;\n  uVar9 = param_3;\n  piVar19 = (int *)PTR___stack_chk_guard_000b0c9c;\n  FUN_0005a4e8(puVar15);\n  if ((int)param_3 < 0) {\n    param_3 = param_3 + 3;\n  }\n  local_40[(int)param_3 >> 2] = 1 << ((uVar9 & 3) << 3) | local_40[(int)param_3 >> 2];\n  FUN_0005a298(puVar15,puVar15,param_1 + 0x24);\n  uVar14 = *(uint *)(param_1 + 0x10);\n  uVar20 = *(uint *)(param_1 + 0x14);\n  uVar21 = *(uint *)(param_1 + 0x18);\n  uVar27 = *(uint *)(param_1 + 0x1c);\n  iVar22 = *piVar19;\n  uVar1 = ((ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20) +\n          (ulonglong)local_40[0] * (ulonglong)uVar20;\n  uVar2 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar21;\n  lVar3 = (uVar1 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[1];\n  uVar29 = (uint)((ulonglong)lVar3 >> 0x20);\n  uVar9 = (int)uVar2 + uVar29;\n  uVar1 = (uVar2 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar27;\n  uVar2 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[1];\n  uVar4 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)*(uint *)(param_1 + 0x20);\n  uVar1 = (uVar1 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[1] + (uVar2 >> 0x20);\n  lVar5 = (uVar2 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[2];\n  uVar29 = (uint)((ulonglong)lVar5 >> 0x20);\n  uVar9 = (int)uVar1 + uVar29;\n  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[1] + (uVar1 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[2];\n  local_70 = uVar1 & 0xffffffff;\n  uVar4 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1] +\n          (uVar2 >> 0x20);\n  lVar6 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[3];\n  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[2] + (uVar1 >> 0x20);\n  local_78 = (uint)((ulonglong)lVar6 >> 0x20);\n  uVar9 = (int)uVar1 + local_78;\n  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[2] + (uVar1 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < local_78,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[3];\n  local_70 = uVar1 & 0xffffffff;\n  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[3] + (uVar1 >> 0x20);\n  uVar2 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2] +\n          (uVar2 >> 0x20);\n  lVar7 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[4];\n  uVar29 = (uint)((ulonglong)lVar7 >> 0x20);\n  uVar9 = (int)uVar1 + uVar29;\n  uVar4 = (uVar2 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[3] + (uVar1 >> 0x20);\n  uVar18 = (uint)(uVar4 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[4];\n  local_4c = (uint)uVar1;\n  lVar8 = (uVar2 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[3];\n  local_70._4_4_ = (uint)lVar7;\n  uVar13 = (local_70._4_4_ >> 2) * 4;\n  uVar20 = uVar13 + (local_70._4_4_ >> 2 | local_4c << 0x1e);\n  uVar9 = uVar18 + (int)lVar8;\n  lVar7 = (uVar4 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[4] + (uVar1 >> 0x20);\n  uVar16 = (uint)lVar7;\n  uVar29 = (uint)((ulonglong)lVar7 >> 0x20);\n  local_64 = (uint)((ulonglong)local_40[0] * (ulonglong)uVar14);\n  uVar21 = uVar20 + local_64;\n  lVar7 = (ulonglong)uVar9 + (ulonglong)uVar27 * (ulonglong)local_40[4];\n  uVar14 = (uint)(uVar21 < local_64);\n  local_5c = (int)lVar5;\n  local_54 = (int)lVar3;\n  uVar27 = uVar29 + (int)lVar7;\n  uVar17 = uVar14 + local_54;\n  uVar18 = local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar27 < uVar29) + (int)((ulonglong)lVar7 >> 0x20);\n  lVar3 = (ulonglong)((uint)(uVar20 < uVar13) + (local_4c & 3)) +\n          (ulonglong)(local_4c >> 2 | uVar16 * 0x40000000) * 5;\n  puVar30 = (undefined1 *)((ulonglong)lVar3 >> 0x20);\n  uVar20 = uVar17 + (int)lVar3;\n  uVar29 = (uint)(uVar20 < uVar17) + (uint)(uVar17 < uVar14);\n  local_74 = (uint)lVar6;\n  uVar1 = ZEXT48(puVar30) + (ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000) * 5;\n  uVar9 = (uVar18 >> 4) * 0x19;\n  uVar21 = uVar9 + uVar21;\n  uVar14 = uVar29 + (int)uVar1;\n  *(uint *)(param_1 + 0x24) = uVar21;\n  uVar9 = (uint)(uVar21 < uVar9);\n  uVar20 = uVar9 + uVar20;\n  *(uint *)(param_1 + 0x28) = uVar20;\n  uVar20 = (uint)(uVar20 < uVar9);\n  lVar3 = (uVar1 >> 0x20) + (ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000) * 5;\n  uVar21 = (uint)(uVar14 + local_5c < uVar14) + (uint)(uVar14 < uVar29);\n  uVar9 = uVar20 + uVar14 + local_5c;\n  *(uint *)(param_1 + 0x2c) = uVar9;\n  uVar29 = (uint)(uVar9 < uVar20);\n  uVar9 = (int)lVar3 + local_74;\n  uVar14 = uVar21 + uVar9;\n  uVar9 = (uint)(uVar9 < local_74);\n  uVar20 = uVar29 + uVar14;\n  *(uint *)(param_1 + 0x30) = uVar20;\n  puVar11 = (undefined1 *)\n            ((uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29));\n  *(undefined1 **)(param_1 + 0x34) = puVar11;\n  if (local_40[5] == iVar22) {\n    return;\n  }\n  pcVar28 = FUN_0005ab78;\n  puVar24 = PTR___stack_chk_fail_000b0c70;\n  (*(code *)PTR___stack_chk_fail_000b0c70)();\n  puVar26 = auStack_90;\n  while( true ) {\n    puVar12 = puVar11;\n    iVar22 = *(int *)(puVar12 + 0x48);\n    *(int *)(puVar26 + -0xc) = (int)lVar3;\n    piVar19 = *(int **)(puVar24 + 0x56124);\n    *(undefined **)(puVar26 + -0x30) = puVar24 + 0x5d5d8;\n    *(undefined1 **)(puVar26 + -8) = puVar30;\n    *(int *)(puVar26 + -0x10) = (int)((ulonglong)lVar3 >> 0x20);\n    lVar3 = CONCAT44(uVar9,piVar19);\n    *(code **)(puVar26 + -4) = pcVar28;\n    *(int *)(puVar26 + -0x14) = *piVar19;\n    if (iVar22 != 0) {\n      FUN_0005a528();\n    }\n    *(undefined4 *)(puVar26 + -0x28) = 0;\n    *(undefined4 *)(puVar26 + -0x24) = 0;\n    *(undefined4 *)(puVar26 + -0x20) = 0;\n    *(undefined4 *)(puVar26 + -0x1c) = 0;\n    *(undefined4 *)(puVar26 + -0x18) = 0;\n    FUN_0005a4e8(puVar26 + -0x28,puVar12,0x10);\n    uVar14 = (*(uint *)(puVar12 + 0x34) >> 2) * 5;\n    uVar21 = *(int *)(puVar12 + 0x24) + uVar14;\n    uVar20 = (uint)(uVar21 < uVar14);\n    uVar16 = uVar20 + *(int *)(puVar12 + 0x28);\n    uVar14 = (uint)(uVar21 + 5 < uVar21);\n    uVar20 = (uint)(uVar16 < uVar20);\n    uVar27 = uVar20 + *(int *)(puVar12 + 0x2c);\n    uVar29 = (uint)(uVar14 + uVar16 < uVar14);\n    uVar14 = (uint)(uVar27 < uVar20);\n    uVar13 = uVar14 + *(int *)(puVar12 + 0x30);\n    uVar20 = (uint)(uVar29 + uVar27 < uVar29);\n    iVar22 = (*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14);\n    uVar14 = (iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5;\n    uVar21 = uVar14 + uVar21;\n    uVar14 = (uint)(uVar21 < uVar14);\n    *(uint *)(puVar12 + 0x24) = uVar21;\n    uVar16 = uVar14 + uVar16;\n    uVar14 = (uint)(uVar16 < uVar14);\n    *(uint *)(puVar12 + 0x28) = uVar16;\n    uVar27 = uVar14 + uVar27;\n    uVar14 = (uint)(uVar27 < uVar14);\n    *(uint *)(puVar12 + 0x2c) = uVar27;\n    uVar13 = uVar14 + uVar13;\n    *(uint *)(puVar12 + 0x30) = uVar13;\n    *(uint *)(puVar12 + 0x34) = iVar22 + (uint)(uVar13 < uVar14) & 3;\n    FUN_0005a298();\n    iVar22 = 0;\n    iVar25 = *(int *)(puVar26 + -0x30);\n    do {\n      iVar10 = iVar22 >> 2;\n      uVar14 = iVar22 << 3;\n      puVar11 = (undefined1 *)(uVar9 + iVar22);\n      iVar22 = iVar22 + 1;\n      *puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));\n    } while (iVar22 != 0x10);\n    if (*(int *)(puVar26 + -0x14) == *piVar19) break;\n    pcVar23 = *(code **)(iVar25 + -0x74e0);\n    pcVar28 = (code *)0x5ad34;\n    (*pcVar23)();\n    puVar24 = (undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488);\n    puVar11 = puVar11 + 0x114;\n    uVar9 = uVar14;\n    puVar30 = puVar12;\n    puVar26 = puVar26 + -0x40;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0005a528(int param_1,undefined4 param_2,uint param_3)" (identifier "FUN_0005a528") (parameter_list "(int param_1,undefined4 param_2,uint param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")"))) (compound_statement "{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  longlong lVar3;\n  ulonglong uVar4;\n  longlong lVar5;\n  longlong lVar6;\n  longlong lVar7;\n  longlong lVar8;\n  uint uVar9;\n  int iVar10;\n  undefined1 *puVar11;\n  undefined1 *puVar12;\n  uint uVar13;\n  uint uVar14;\n  uint *puVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  int *piVar19;\n  uint uVar20;\n  uint uVar21;\n  int iVar22;\n  code *pcVar23;\n  undefined *puVar24;\n  int iVar25;\n  undefined1 *puVar26;\n  uint uVar27;\n  code *pcVar28;\n  uint uVar29;\n  undefined1 *puVar30;\n  undefined1 auStack_90 [16];\n  uint local_78;\n  uint local_74;\n  undefined8 local_70;\n  uint local_64;\n  int local_5c;\n  int local_54;\n  uint local_4c;\n  uint local_40 [6];\n  \n  puVar15 = local_40;\n  local_40[0] = 0;\n  local_40[1] = 0;\n  local_40[2] = 0;\n  local_40[3] = 0;\n  local_40[4] = 0;\n  local_40[5] = *(uint *)PTR___stack_chk_guard_000b0c9c;\n  uVar9 = param_3;\n  piVar19 = (int *)PTR___stack_chk_guard_000b0c9c;\n  FUN_0005a4e8(puVar15);\n  if ((int)param_3 < 0) {\n    param_3 = param_3 + 3;\n  }\n  local_40[(int)param_3 >> 2] = 1 << ((uVar9 & 3) << 3) | local_40[(int)param_3 >> 2];\n  FUN_0005a298(puVar15,puVar15,param_1 + 0x24);\n  uVar14 = *(uint *)(param_1 + 0x10);\n  uVar20 = *(uint *)(param_1 + 0x14);\n  uVar21 = *(uint *)(param_1 + 0x18);\n  uVar27 = *(uint *)(param_1 + 0x1c);\n  iVar22 = *piVar19;\n  uVar1 = ((ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20) +\n          (ulonglong)local_40[0] * (ulonglong)uVar20;\n  uVar2 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar21;\n  lVar3 = (uVar1 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[1];\n  uVar29 = (uint)((ulonglong)lVar3 >> 0x20);\n  uVar9 = (int)uVar2 + uVar29;\n  uVar1 = (uVar2 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar27;\n  uVar2 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[1];\n  uVar4 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)*(uint *)(param_1 + 0x20);\n  uVar1 = (uVar1 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[1] + (uVar2 >> 0x20);\n  lVar5 = (uVar2 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[2];\n  uVar29 = (uint)((ulonglong)lVar5 >> 0x20);\n  uVar9 = (int)uVar1 + uVar29;\n  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[1] + (uVar1 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[2];\n  local_70 = uVar1 & 0xffffffff;\n  uVar4 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1] +\n          (uVar2 >> 0x20);\n  lVar6 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[3];\n  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[2] + (uVar1 >> 0x20);\n  local_78 = (uint)((ulonglong)lVar6 >> 0x20);\n  uVar9 = (int)uVar1 + local_78;\n  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[2] + (uVar1 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < local_78,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[3];\n  local_70 = uVar1 & 0xffffffff;\n  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[3] + (uVar1 >> 0x20);\n  uVar2 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2] +\n          (uVar2 >> 0x20);\n  lVar7 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[4];\n  uVar29 = (uint)((ulonglong)lVar7 >> 0x20);\n  uVar9 = (int)uVar1 + uVar29;\n  uVar4 = (uVar2 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[3] + (uVar1 >> 0x20);\n  uVar18 = (uint)(uVar4 >> 0x20);\n  uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[4];\n  local_4c = (uint)uVar1;\n  lVar8 = (uVar2 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[3];\n  local_70._4_4_ = (uint)lVar7;\n  uVar13 = (local_70._4_4_ >> 2) * 4;\n  uVar20 = uVar13 + (local_70._4_4_ >> 2 | local_4c << 0x1e);\n  uVar9 = uVar18 + (int)lVar8;\n  lVar7 = (uVar4 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[4] + (uVar1 >> 0x20);\n  uVar16 = (uint)lVar7;\n  uVar29 = (uint)((ulonglong)lVar7 >> 0x20);\n  local_64 = (uint)((ulonglong)local_40[0] * (ulonglong)uVar14);\n  uVar21 = uVar20 + local_64;\n  lVar7 = (ulonglong)uVar9 + (ulonglong)uVar27 * (ulonglong)local_40[4];\n  uVar14 = (uint)(uVar21 < local_64);\n  local_5c = (int)lVar5;\n  local_54 = (int)lVar3;\n  uVar27 = uVar29 + (int)lVar7;\n  uVar17 = uVar14 + local_54;\n  uVar18 = local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar27 < uVar29) + (int)((ulonglong)lVar7 >> 0x20);\n  lVar3 = (ulonglong)((uint)(uVar20 < uVar13) + (local_4c & 3)) +\n          (ulonglong)(local_4c >> 2 | uVar16 * 0x40000000) * 5;\n  puVar30 = (undefined1 *)((ulonglong)lVar3 >> 0x20);\n  uVar20 = uVar17 + (int)lVar3;\n  uVar29 = (uint)(uVar20 < uVar17) + (uint)(uVar17 < uVar14);\n  local_74 = (uint)lVar6;\n  uVar1 = ZEXT48(puVar30) + (ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000) * 5;\n  uVar9 = (uVar18 >> 4) * 0x19;\n  uVar21 = uVar9 + uVar21;\n  uVar14 = uVar29 + (int)uVar1;\n  *(uint *)(param_1 + 0x24) = uVar21;\n  uVar9 = (uint)(uVar21 < uVar9);\n  uVar20 = uVar9 + uVar20;\n  *(uint *)(param_1 + 0x28) = uVar20;\n  uVar20 = (uint)(uVar20 < uVar9);\n  lVar3 = (uVar1 >> 0x20) + (ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000) * 5;\n  uVar21 = (uint)(uVar14 + local_5c < uVar14) + (uint)(uVar14 < uVar29);\n  uVar9 = uVar20 + uVar14 + local_5c;\n  *(uint *)(param_1 + 0x2c) = uVar9;\n  uVar29 = (uint)(uVar9 < uVar20);\n  uVar9 = (int)lVar3 + local_74;\n  uVar14 = uVar21 + uVar9;\n  uVar9 = (uint)(uVar9 < local_74);\n  uVar20 = uVar29 + uVar14;\n  *(uint *)(param_1 + 0x30) = uVar20;\n  puVar11 = (undefined1 *)\n            ((uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29));\n  *(undefined1 **)(param_1 + 0x34) = puVar11;\n  if (local_40[5] == iVar22) {\n    return;\n  }\n  pcVar28 = FUN_0005ab78;\n  puVar24 = PTR___stack_chk_fail_000b0c70;\n  (*(code *)PTR___stack_chk_fail_000b0c70)();\n  puVar26 = auStack_90;\n  while( true ) {\n    puVar12 = puVar11;\n    iVar22 = *(int *)(puVar12 + 0x48);\n    *(int *)(puVar26 + -0xc) = (int)lVar3;\n    piVar19 = *(int **)(puVar24 + 0x56124);\n    *(undefined **)(puVar26 + -0x30) = puVar24 + 0x5d5d8;\n    *(undefined1 **)(puVar26 + -8) = puVar30;\n    *(int *)(puVar26 + -0x10) = (int)((ulonglong)lVar3 >> 0x20);\n    lVar3 = CONCAT44(uVar9,piVar19);\n    *(code **)(puVar26 + -4) = pcVar28;\n    *(int *)(puVar26 + -0x14) = *piVar19;\n    if (iVar22 != 0) {\n      FUN_0005a528();\n    }\n    *(undefined4 *)(puVar26 + -0x28) = 0;\n    *(undefined4 *)(puVar26 + -0x24) = 0;\n    *(undefined4 *)(puVar26 + -0x20) = 0;\n    *(undefined4 *)(puVar26 + -0x1c) = 0;\n    *(undefined4 *)(puVar26 + -0x18) = 0;\n    FUN_0005a4e8(puVar26 + -0x28,puVar12,0x10);\n    uVar14 = (*(uint *)(puVar12 + 0x34) >> 2) * 5;\n    uVar21 = *(int *)(puVar12 + 0x24) + uVar14;\n    uVar20 = (uint)(uVar21 < uVar14);\n    uVar16 = uVar20 + *(int *)(puVar12 + 0x28);\n    uVar14 = (uint)(uVar21 + 5 < uVar21);\n    uVar20 = (uint)(uVar16 < uVar20);\n    uVar27 = uVar20 + *(int *)(puVar12 + 0x2c);\n    uVar29 = (uint)(uVar14 + uVar16 < uVar14);\n    uVar14 = (uint)(uVar27 < uVar20);\n    uVar13 = uVar14 + *(int *)(puVar12 + 0x30);\n    uVar20 = (uint)(uVar29 + uVar27 < uVar29);\n    iVar22 = (*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14);\n    uVar14 = (iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5;\n    uVar21 = uVar14 + uVar21;\n    uVar14 = (uint)(uVar21 < uVar14);\n    *(uint *)(puVar12 + 0x24) = uVar21;\n    uVar16 = uVar14 + uVar16;\n    uVar14 = (uint)(uVar16 < uVar14);\n    *(uint *)(puVar12 + 0x28) = uVar16;\n    uVar27 = uVar14 + uVar27;\n    uVar14 = (uint)(uVar27 < uVar14);\n    *(uint *)(puVar12 + 0x2c) = uVar27;\n    uVar13 = uVar14 + uVar13;\n    *(uint *)(puVar12 + 0x30) = uVar13;\n    *(uint *)(puVar12 + 0x34) = iVar22 + (uint)(uVar13 < uVar14) & 3;\n    FUN_0005a298();\n    iVar22 = 0;\n    iVar25 = *(int *)(puVar26 + -0x30);\n    do {\n      iVar10 = iVar22 >> 2;\n      uVar14 = iVar22 << 3;\n      puVar11 = (undefined1 *)(uVar9 + iVar22);\n      iVar22 = iVar22 + 1;\n      *puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));\n    } while (iVar22 != 0x10);\n    if (*(int *)(puVar26 + -0x14) == *piVar19) break;\n    pcVar23 = *(code **)(iVar25 + -0x74e0);\n    pcVar28 = (code *)0x5ad34;\n    (*pcVar23)();\n    puVar24 = (undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488);\n    puVar11 = puVar11 + 0x114;\n    uVar9 = uVar14;\n    puVar30 = puVar12;\n    puVar26 = puVar26 + -0x40;\n  }\n  return;\n}" ({ "{") (declaration "ulonglong uVar1;" (type_identifier "ulonglong") (identifier "uVar1") (; ";")) (declaration "ulonglong uVar2;" (type_identifier "ulonglong") (identifier "uVar2") (; ";")) (declaration "longlong lVar3;" (type_identifier "longlong") (identifier "lVar3") (; ";")) (declaration "ulonglong uVar4;" (type_identifier "ulonglong") (identifier "uVar4") (; ";")) (declaration "longlong lVar5;" (type_identifier "longlong") (identifier "lVar5") (; ";")) (declaration "longlong lVar6;" (type_identifier "longlong") (identifier "lVar6") (; ";")) (declaration "longlong lVar7;" (type_identifier "longlong") (identifier "lVar7") (; ";")) (declaration "longlong lVar8;" (type_identifier "longlong") (identifier "lVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "undefined1 *puVar11;" (type_identifier "undefined1") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "undefined1 *puVar12;" (type_identifier "undefined1") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "uint *puVar15;" (type_identifier "uint") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "uint uVar16;" (type_identifier "uint") (identifier "uVar16") (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "int *piVar19;" (primitive_type "int") (pointer_declarator "*piVar19" (* "*") (identifier "piVar19")) (; ";")) (declaration "uint uVar20;" (type_identifier "uint") (identifier "uVar20") (; ";")) (declaration "uint uVar21;" (type_identifier "uint") (identifier "uVar21") (; ";")) (declaration "int iVar22;" (primitive_type "int") (identifier "iVar22") (; ";")) (declaration "code *pcVar23;" (type_identifier "code") (pointer_declarator "*pcVar23" (* "*") (identifier "pcVar23")) (; ";")) (declaration "undefined *puVar24;" (type_identifier "undefined") (pointer_declarator "*puVar24" (* "*") (identifier "puVar24")) (; ";")) (declaration "int iVar25;" (primitive_type "int") (identifier "iVar25") (; ";")) (declaration "undefined1 *puVar26;" (type_identifier "undefined1") (pointer_declarator "*puVar26" (* "*") (identifier "puVar26")) (; ";")) (declaration "uint uVar27;" (type_identifier "uint") (identifier "uVar27") (; ";")) (declaration "code *pcVar28;" (type_identifier "code") (pointer_declarator "*pcVar28" (* "*") (identifier "pcVar28")) (; ";")) (declaration "uint uVar29;" (type_identifier "uint") (identifier "uVar29") (; ";")) (declaration "undefined1 *puVar30;" (type_identifier "undefined1") (pointer_declarator "*puVar30" (* "*") (identifier "puVar30")) (; ";")) (declaration "undefined1 auStack_90 [16];" (type_identifier "undefined1") (array_declarator "auStack_90 [16]" (identifier "auStack_90") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "uint local_78;" (type_identifier "uint") (identifier "local_78") (; ";")) (declaration "uint local_74;" (type_identifier "uint") (identifier "local_74") (; ";")) (declaration "undefined8 local_70;" (type_identifier "undefined8") (identifier "local_70") (; ";")) (declaration "uint local_64;" (type_identifier "uint") (identifier "local_64") (; ";")) (declaration "int local_5c;" (primitive_type "int") (identifier "local_5c") (; ";")) (declaration "int local_54;" (primitive_type "int") (identifier "local_54") (; ";")) (declaration "uint local_4c;" (type_identifier "uint") (identifier "local_4c") (; ";")) (declaration "uint local_40 [6];" (type_identifier "uint") (array_declarator "local_40 [6]" (identifier "local_40") ([ "[") (number_literal "6") (] "]")) (; ";")) (expression_statement "puVar15 = local_40;" (assignment_expression "puVar15 = local_40" (identifier "puVar15") (= "=") (identifier "local_40")) (; ";")) (expression_statement "local_40[0] = 0;" (assignment_expression "local_40[0] = 0" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40[1] = 0;" (assignment_expression "local_40[1] = 0" (subscript_expression "local_40[1]" (identifier "local_40") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40[2] = 0;" (assignment_expression "local_40[2] = 0" (subscript_expression "local_40[2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40[3] = 0;" (assignment_expression "local_40[3] = 0" (subscript_expression "local_40[3]" (identifier "local_40") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40[4] = 0;" (assignment_expression "local_40[4] = 0" (subscript_expression "local_40[4]" (identifier "local_40") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40[5] = *(uint *)PTR___stack_chk_guard_000b0c9c;" (assignment_expression "local_40[5] = *(uint *)PTR___stack_chk_guard_000b0c9c" (subscript_expression "local_40[5]" (identifier "local_40") ([ "[") (number_literal "5") (] "]")) (= "=") (pointer_expression "*(uint *)PTR___stack_chk_guard_000b0c9c" (* "*") (cast_expression "(uint *)PTR___stack_chk_guard_000b0c9c" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000b0c9c")))) (; ";")) (expression_statement "uVar9 = param_3;" (assignment_expression "uVar9 = param_3" (identifier "uVar9") (= "=") (identifier "param_3")) (; ";")) (expression_statement "piVar19 = (int *)PTR___stack_chk_guard_000b0c9c;" (assignment_expression "piVar19 = (int *)PTR___stack_chk_guard_000b0c9c" (identifier "piVar19") (= "=") (cast_expression "(int *)PTR___stack_chk_guard_000b0c9c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000b0c9c"))) (; ";")) (expression_statement "FUN_0005a4e8(puVar15);" (call_expression "FUN_0005a4e8(puVar15)" (identifier "FUN_0005a4e8") (argument_list "(puVar15)" (( "(") (identifier "puVar15") () ")"))) (; ";")) (if_statement "if ((int)param_3 < 0) {\n    param_3 = param_3 + 3;\n  }" (if "if") (parenthesized_expression "((int)param_3 < 0)" (( "(") (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    param_3 = param_3 + 3;\n  }" ({ "{") (expression_statement "param_3 = param_3 + 3;" (assignment_expression "param_3 = param_3 + 3" (identifier "param_3") (= "=") (binary_expression "param_3 + 3" (identifier "param_3") (+ "+") (number_literal "3"))) (; ";")) (} "}"))) (expression_statement "local_40[(int)param_3 >> 2] = 1 << ((uVar9 & 3) << 3) | local_40[(int)param_3 >> 2];" (assignment_expression "local_40[(int)param_3 >> 2] = 1 << ((uVar9 & 3) << 3) | local_40[(int)param_3 >> 2]" (subscript_expression "local_40[(int)param_3 >> 2]" (identifier "local_40") ([ "[") (binary_expression "(int)param_3 >> 2" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (>> ">>") (number_literal "2")) (] "]")) (= "=") (binary_expression "1 << ((uVar9 & 3) << 3) | local_40[(int)param_3 >> 2]" (binary_expression "1 << ((uVar9 & 3) << 3)" (number_literal "1") (<< "<<") (parenthesized_expression "((uVar9 & 3) << 3)" (( "(") (binary_expression "(uVar9 & 3) << 3" (parenthesized_expression "(uVar9 & 3)" (( "(") (binary_expression "uVar9 & 3" (identifier "uVar9") (& "&") (number_literal "3")) () ")")) (<< "<<") (number_literal "3")) () ")"))) (| "|") (subscript_expression "local_40[(int)param_3 >> 2]" (identifier "local_40") ([ "[") (binary_expression "(int)param_3 >> 2" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (>> ">>") (number_literal "2")) (] "]")))) (; ";")) (expression_statement "FUN_0005a298(puVar15,puVar15,param_1 + 0x24);" (call_expression "FUN_0005a298(puVar15,puVar15,param_1 + 0x24)" (identifier "FUN_0005a298") (argument_list "(puVar15,puVar15,param_1 + 0x24)" (( "(") (identifier "puVar15") (, ",") (identifier "puVar15") (, ",") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")"))) (; ";")) (expression_statement "uVar14 = *(uint *)(param_1 + 0x10);" (assignment_expression "uVar14 = *(uint *)(param_1 + 0x10)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(param_1 + 0x10)" (* "*") (cast_expression "(uint *)(param_1 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "uVar20 = *(uint *)(param_1 + 0x14);" (assignment_expression "uVar20 = *(uint *)(param_1 + 0x14)" (identifier "uVar20") (= "=") (pointer_expression "*(uint *)(param_1 + 0x14)" (* "*") (cast_expression "(uint *)(param_1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "uVar21 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar21 = *(uint *)(param_1 + 0x18)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(param_1 + 0x18)" (* "*") (cast_expression "(uint *)(param_1 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "uVar27 = *(uint *)(param_1 + 0x1c);" (assignment_expression "uVar27 = *(uint *)(param_1 + 0x1c)" (identifier "uVar27") (= "=") (pointer_expression "*(uint *)(param_1 + 0x1c)" (* "*") (cast_expression "(uint *)(param_1 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "iVar22 = *piVar19;" (assignment_expression "iVar22 = *piVar19" (identifier "iVar22") (= "=") (pointer_expression "*piVar19" (* "*") (identifier "piVar19"))) (; ";")) (expression_statement "uVar1 = ((ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20) +\n          (ulonglong)local_40[0] * (ulonglong)uVar20;" (assignment_expression "uVar1 = ((ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20) +\n          (ulonglong)local_40[0] * (ulonglong)uVar20" (identifier "uVar1") (= "=") (binary_expression "((ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20) +\n          (ulonglong)local_40[0] * (ulonglong)uVar20" (parenthesized_expression "((ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20)" (( "(") (binary_expression "(ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20" (binary_expression "(ulonglong)local_40[0] * (ulonglong)uVar14" (cast_expression "(ulonglong)local_40[0]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) (* "*") (cast_expression "(ulonglong)uVar14" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar14"))) (>> ">>") (number_literal "0x20")) () ")")) (+ "+") (binary_expression "(ulonglong)local_40[0] * (ulonglong)uVar20" (cast_expression "(ulonglong)local_40[0]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) (* "*") (cast_expression "(ulonglong)uVar20" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar20"))))) (; ";")) (expression_statement "uVar2 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar21;" (assignment_expression "uVar2 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar21" (identifier "uVar2") (= "=") (binary_expression "(uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar21" (parenthesized_expression "(uVar1 >> 0x20)" (( "(") (binary_expression "uVar1 >> 0x20" (identifier "uVar1") (>> ">>") (number_literal "0x20")) () ")")) (+ "+") (binary_expression "(ulonglong)local_40[0] * (ulonglong)uVar21" (cast_expression "(ulonglong)local_40[0]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) (* "*") (cast_expression "(ulonglong)uVar21" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar21"))))) (; ";")) (expression_statement "lVar3 = (uVar1 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[1];" (assignment_expression "lVar3 = (uVar1 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[1]" (identifier "lVar3") (= "=") (binary_expression "(uVar1 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[1]" (parenthesized_expression "(uVar1 & 0xffffffff)" (( "(") (binary_expression "uVar1 & 0xffffffff" (identifier "uVar1") (& "&") (number_literal "0xffffffff")) () ")")) (+ "+") (binary_expression "(ulonglong)uVar14 * (ulonglong)local_40[1]" (cast_expression "(ulonglong)uVar14" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar14")) (* "*") (cast_expression "(ulonglong)local_40[1]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[1]" (identifier "local_40") ([ "[") (number_literal "1") (] "]")))))) (; ";")) (expression_statement "uVar29 = (uint)((ulonglong)lVar3 >> 0x20);" (assignment_expression "uVar29 = (uint)((ulonglong)lVar3 >> 0x20)" (identifier "uVar29") (= "=") (call_expression "(uint)((ulonglong)lVar3 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar3 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar3")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar9 = (int)uVar2 + uVar29;" (assignment_expression "uVar9 = (int)uVar2 + uVar29" (identifier "uVar9") (= "=") (binary_expression "(int)uVar2 + uVar29" (cast_expression "(int)uVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar2")) (+ "+") (identifier "uVar29"))) (; ";")) (expression_statement "uVar1 = (uVar2 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar27;" (assignment_expression "uVar1 = (uVar2 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar27" (identifier "uVar1") (= "=") (binary_expression "(uVar2 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar27" (parenthesized_expression "(uVar2 >> 0x20)" (( "(") (binary_expression "uVar2 >> 0x20" (identifier "uVar2") (>> ">>") (number_literal "0x20")) () ")")) (+ "+") (binary_expression "(ulonglong)local_40[0] * (ulonglong)uVar27" (cast_expression "(ulonglong)local_40[0]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) (* "*") (cast_expression "(ulonglong)uVar27" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar27"))))) (; ";")) (expression_statement "uVar2 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[1];" (assignment_expression "uVar2 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[1]" (identifier "uVar2") (= "=") (binary_expression "(ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[1]" (cast_expression "(ulonglong)CONCAT14(uVar9 < uVar29,uVar9)" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (call_expression "CONCAT14(uVar9 < uVar29,uVar9)" (identifier "CONCAT14") (argument_list "(uVar9 < uVar29,uVar9)" (( "(") (binary_expression "uVar9 < uVar29" (identifier "uVar9") (< "<") (identifier "uVar29")) (, ",") (identifier "uVar9") () ")")))) (+ "+") (binary_expression "(ulonglong)uVar20 * (ulonglong)local_40[1]" (cast_expression "(ulonglong)uVar20" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar20")) (* "*") (cast_expression "(ulonglong)local_40[1]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[1]" (identifier "local_40") ([ "[") (number_literal "1") (] "]")))))) (; ";")) (expression_statement "uVar4 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)*(uint *)(param_1 + 0x20);" (assignment_expression "uVar4 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)*(uint *)(param_1 + 0x20)" (identifier "uVar4") (= "=") (binary_expression "(uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)*(uint *)(param_1 + 0x20)" (parenthesized_expression "(uVar1 >> 0x20)" (( "(") (binary_expression "uVar1 >> 0x20" (identifier "uVar1") (>> ">>") (number_literal "0x20")) () ")")) (+ "+") (binary_expression "(ulonglong)local_40[0] * (ulonglong)*(uint *)(param_1 + 0x20)" (binary_expression "(ulonglong)local_40[0] * (ulonglong)" (cast_expression "(ulonglong)local_40[0]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) (* "*") (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")"))) (* "*") (cast_expression "(uint *)(param_1 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))))) (; ";")) (expression_statement "uVar1 = (uVar1 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[1] + (uVar2 >> 0x20);" (assignment_expression "uVar1 = (uVar1 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[1] + (uVar2 >> 0x20)" (identifier "uVar1") (= "=") (binary_expression "(uVar1 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[1] + (uVar2 >> 0x20)" (binary_expression "(uVar1 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[1]" (parenthesized_expression "(uVar1 & 0xffffffff)" (( "(") (binary_expression "uVar1 & 0xffffffff" (identifier "uVar1") (& "&") (number_literal "0xffffffff")) () ")")) (+ "+") (binary_expression "(ulonglong)uVar21 * (ulonglong)local_40[1]" (cast_expression "(ulonglong)uVar21" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar21")) (* "*") (cast_expression "(ulonglong)local_40[1]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[1]" (identifier "local_40") ([ "[") (number_literal "1") (] "]"))))) (+ "+") (parenthesized_expression "(uVar2 >> 0x20)" (( "(") (binary_expression "uVar2 >> 0x20" (identifier "uVar2") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "lVar5 = (uVar2 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[2];" (assignment_expression "lVar5 = (uVar2 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[2]" (identifier "lVar5") (= "=") (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[2]" (parenthesized_expression "(uVar2 & 0xffffffff)" (( "(") (binary_expression "uVar2 & 0xffffffff" (identifier "uVar2") (& "&") (number_literal "0xffffffff")) () ")")) (+ "+") (binary_expression "(ulonglong)uVar14 * (ulonglong)local_40[2]" (cast_expression "(ulonglong)uVar14" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar14")) (* "*") (cast_expression "(ulonglong)local_40[2]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")))))) (; ";")) (expression_statement "uVar29 = (uint)((ulonglong)lVar5 >> 0x20);" (assignment_expression "uVar29 = (uint)((ulonglong)lVar5 >> 0x20)" (identifier "uVar29") (= "=") (call_expression "(uint)((ulonglong)lVar5 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar5 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar5 >> 0x20" (cast_expression "(ulonglong)lVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar5")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar9 = (int)uVar1 + uVar29;" (assignment_expression "uVar9 = (int)uVar1 + uVar29" (identifier "uVar9") (= "=") (binary_expression "(int)uVar1 + uVar29" (cast_expression "(int)uVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar1")) (+ "+") (identifier "uVar29"))) (; ";")) (expression_statement "uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[1] + (uVar1 >> 0x20);" (assignment_expression "uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[1] + (uVar1 >> 0x20)" (identifier "uVar2") (= "=") (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[1] + (uVar1 >> 0x20)" (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[1]" (parenthesized_expression "(uVar4 & 0xffffffff)" (( "(") (binary_expression "uVar4 & 0xffffffff" (identifier "uVar4") (& "&") (number_literal "0xffffffff")) () ")")) (+ "+") (binary_expression "(ulonglong)uVar27 * (ulonglong)local_40[1]" (cast_expression "(ulonglong)uVar27" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar27")) (* "*") (cast_expression "(ulonglong)local_40[1]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[1]" (identifier "local_40") ([ "[") (number_literal "1") (] "]"))))) (+ "+") (parenthesized_expression "(uVar1 >> 0x20)" (( "(") (binary_expression "uVar1 >> 0x20" (identifier "uVar1") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[2];" (assignment_expression "uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[2]" (identifier "uVar1") (= "=") (binary_expression "(ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[2]" (cast_expression "(ulonglong)CONCAT14(uVar9 < uVar29,uVar9)" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (call_expression "CONCAT14(uVar9 < uVar29,uVar9)" (identifier "CONCAT14") (argument_list "(uVar9 < uVar29,uVar9)" (( "(") (binary_expression "uVar9 < uVar29" (identifier "uVar9") (< "<") (identifier "uVar29")) (, ",") (identifier "uVar9") () ")")))) (+ "+") (binary_expression "(ulonglong)uVar20 * (ulonglong)local_40[2]" (cast_expression "(ulonglong)uVar20" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar20")) (* "*") (cast_expression "(ulonglong)local_40[2]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")))))) (; ";")) (expression_statement "local_70 = uVar1 & 0xffffffff;" (assignment_expression "local_70 = uVar1 & 0xffffffff" (identifier "local_70") (= "=") (binary_expression "uVar1 & 0xffffffff" (identifier "uVar1") (& "&") (number_literal "0xffffffff"))) (; ";")) (expression_statement "uVar4 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1] +\n          (uVar2 >> 0x20);" (assignment_expression "uVar4 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1] +\n          (uVar2 >> 0x20)" (identifier "uVar4") (= "=") (binary_expression "(uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1] +\n          (uVar2 >> 0x20)" (binary_expression "(uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1]" (parenthesized_expression "(uVar4 >> 0x20)" (( "(") (binary_expression "uVar4 >> 0x20" (identifier "uVar4") (>> ">>") (number_literal "0x20")) () ")")) (+ "+") (binary_expression "(ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1]" (binary_expression "(ulonglong)*(uint *)(param_1 + 0x20)" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (* "*") (cast_expression "(uint *)(param_1 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (* "*") (cast_expression "(ulonglong)local_40[1]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[1]" (identifier "local_40") ([ "[") (number_literal "1") (] "]"))))) (+ "+") (parenthesized_expression "(uVar2 >> 0x20)" (( "(") (binary_expression "uVar2 >> 0x20" (identifier "uVar2") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "lVar6 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[3];" (assignment_expression "lVar6 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[3]" (identifier "lVar6") (= "=") (binary_expression "local_70 + (ulonglong)uVar14 * (ulonglong)local_40[3]" (identifier "local_70") (+ "+") (binary_expression "(ulonglong)uVar14 * (ulonglong)local_40[3]" (cast_expression "(ulonglong)uVar14" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar14")) (* "*") (cast_expression "(ulonglong)local_40[3]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[3]" (identifier "local_40") ([ "[") (number_literal "3") (] "]")))))) (; ";")) (expression_statement "uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[2] + (uVar1 >> 0x20);" (assignment_expression "uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[2] + (uVar1 >> 0x20)" (identifier "uVar1") (= "=") (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[2] + (uVar1 >> 0x20)" (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[2]" (parenthesized_expression "(uVar2 & 0xffffffff)" (( "(") (binary_expression "uVar2 & 0xffffffff" (identifier "uVar2") (& "&") (number_literal "0xffffffff")) () ")")) (+ "+") (binary_expression "(ulonglong)uVar21 * (ulonglong)local_40[2]" (cast_expression "(ulonglong)uVar21" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar21")) (* "*") (cast_expression "(ulonglong)local_40[2]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]"))))) (+ "+") (parenthesized_expression "(uVar1 >> 0x20)" (( "(") (binary_expression "uVar1 >> 0x20" (identifier "uVar1") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_78 = (uint)((ulonglong)lVar6 >> 0x20);" (assignment_expression "local_78 = (uint)((ulonglong)lVar6 >> 0x20)" (identifier "local_78") (= "=") (call_expression "(uint)((ulonglong)lVar6 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar6 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar6 >> 0x20" (cast_expression "(ulonglong)lVar6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar6")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar9 = (int)uVar1 + local_78;" (assignment_expression "uVar9 = (int)uVar1 + local_78" (identifier "uVar9") (= "=") (binary_expression "(int)uVar1 + local_78" (cast_expression "(int)uVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar1")) (+ "+") (identifier "local_78"))) (; ";")) (expression_statement "uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[2] + (uVar1 >> 0x20);" (assignment_expression "uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[2] + (uVar1 >> 0x20)" (identifier "uVar2") (= "=") (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[2] + (uVar1 >> 0x20)" (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[2]" (parenthesized_expression "(uVar4 & 0xffffffff)" (( "(") (binary_expression "uVar4 & 0xffffffff" (identifier "uVar4") (& "&") (number_literal "0xffffffff")) () ")")) (+ "+") (binary_expression "(ulonglong)uVar27 * (ulonglong)local_40[2]" (cast_expression "(ulonglong)uVar27" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar27")) (* "*") (cast_expression "(ulonglong)local_40[2]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]"))))) (+ "+") (parenthesized_expression "(uVar1 >> 0x20)" (( "(") (binary_expression "uVar1 >> 0x20" (identifier "uVar1") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar1 = (ulonglong)CONCAT14(uVar9 < local_78,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[3];" (assignment_expression "uVar1 = (ulonglong)CONCAT14(uVar9 < local_78,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[3]" (identifier "uVar1") (= "=") (binary_expression "(ulonglong)CONCAT14(uVar9 < local_78,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[3]" (cast_expression "(ulonglong)CONCAT14(uVar9 < local_78,uVar9)" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (call_expression "CONCAT14(uVar9 < local_78,uVar9)" (identifier "CONCAT14") (argument_list "(uVar9 < local_78,uVar9)" (( "(") (binary_expression "uVar9 < local_78" (identifier "uVar9") (< "<") (identifier "local_78")) (, ",") (identifier "uVar9") () ")")))) (+ "+") (binary_expression "(ulonglong)uVar20 * (ulonglong)local_40[3]" (cast_expression "(ulonglong)uVar20" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar20")) (* "*") (cast_expression "(ulonglong)local_40[3]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[3]" (identifier "local_40") ([ "[") (number_literal "3") (] "]")))))) (; ";")) (expression_statement "local_70 = uVar1 & 0xffffffff;" (assignment_expression "local_70 = uVar1 & 0xffffffff" (identifier "local_70") (= "=") (binary_expression "uVar1 & 0xffffffff" (identifier "uVar1") (& "&") (number_literal "0xffffffff"))) (; ";")) (expression_statement "uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[3] + (uVar1 >> 0x20);" (assignment_expression "uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[3] + (uVar1 >> 0x20)" (identifier "uVar1") (= "=") (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[3] + (uVar1 >> 0x20)" (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[3]" (parenthesized_expression "(uVar2 & 0xffffffff)" (( "(") (binary_expression "uVar2 & 0xffffffff" (identifier "uVar2") (& "&") (number_literal "0xffffffff")) () ")")) (+ "+") (binary_expression "(ulonglong)uVar21 * (ulonglong)local_40[3]" (cast_expression "(ulonglong)uVar21" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar21")) (* "*") (cast_expression "(ulonglong)local_40[3]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[3]" (identifier "local_40") ([ "[") (number_literal "3") (] "]"))))) (+ "+") (parenthesized_expression "(uVar1 >> 0x20)" (( "(") (binary_expression "uVar1 >> 0x20" (identifier "uVar1") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar2 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2] +\n          (uVar2 >> 0x20);" (assignment_expression "uVar2 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2] +\n          (uVar2 >> 0x20)" (identifier "uVar2") (= "=") (binary_expression "(uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2] +\n          (uVar2 >> 0x20)" (binary_expression "(uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2]" (parenthesized_expression "(uVar4 >> 0x20)" (( "(") (binary_expression "uVar4 >> 0x20" (identifier "uVar4") (>> ">>") (number_literal "0x20")) () ")")) (+ "+") (binary_expression "(ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2]" (binary_expression "(ulonglong)*(uint *)(param_1 + 0x20)" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (* "*") (cast_expression "(uint *)(param_1 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (* "*") (cast_expression "(ulonglong)local_40[2]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]"))))) (+ "+") (parenthesized_expression "(uVar2 >> 0x20)" (( "(") (binary_expression "uVar2 >> 0x20" (identifier "uVar2") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "lVar7 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[4];" (assignment_expression "lVar7 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[4]" (identifier "lVar7") (= "=") (binary_expression "local_70 + (ulonglong)uVar14 * (ulonglong)local_40[4]" (identifier "local_70") (+ "+") (binary_expression "(ulonglong)uVar14 * (ulonglong)local_40[4]" (cast_expression "(ulonglong)uVar14" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar14")) (* "*") (cast_expression "(ulonglong)local_40[4]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[4]" (identifier "local_40") ([ "[") (number_literal "4") (] "]")))))) (; ";")) (expression_statement "uVar29 = (uint)((ulonglong)lVar7 >> 0x20);" (assignment_expression "uVar29 = (uint)((ulonglong)lVar7 >> 0x20)" (identifier "uVar29") (= "=") (call_expression "(uint)((ulonglong)lVar7 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar7 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar7 >> 0x20" (cast_expression "(ulonglong)lVar7" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar7")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar9 = (int)uVar1 + uVar29;" (assignment_expression "uVar9 = (int)uVar1 + uVar29" (identifier "uVar9") (= "=") (binary_expression "(int)uVar1 + uVar29" (cast_expression "(int)uVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar1")) (+ "+") (identifier "uVar29"))) (; ";")) (expression_statement "uVar4 = (uVar2 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[3] + (uVar1 >> 0x20);" (assignment_expression "uVar4 = (uVar2 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[3] + (uVar1 >> 0x20)" (identifier "uVar4") (= "=") (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[3] + (uVar1 >> 0x20)" (binary_expression "(uVar2 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[3]" (parenthesized_expression "(uVar2 & 0xffffffff)" (( "(") (binary_expression "uVar2 & 0xffffffff" (identifier "uVar2") (& "&") (number_literal "0xffffffff")) () ")")) (+ "+") (binary_expression "(ulonglong)uVar27 * (ulonglong)local_40[3]" (cast_expression "(ulonglong)uVar27" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar27")) (* "*") (cast_expression "(ulonglong)local_40[3]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[3]" (identifier "local_40") ([ "[") (number_literal "3") (] "]"))))) (+ "+") (parenthesized_expression "(uVar1 >> 0x20)" (( "(") (binary_expression "uVar1 >> 0x20" (identifier "uVar1") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar18 = (uint)(uVar4 >> 0x20);" (assignment_expression "uVar18 = (uint)(uVar4 >> 0x20)" (identifier "uVar18") (= "=") (call_expression "(uint)(uVar4 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar4 >> 0x20)" (( "(") (binary_expression "uVar4 >> 0x20" (identifier "uVar4") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[4];" (assignment_expression "uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[4]" (identifier "uVar1") (= "=") (binary_expression "(ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[4]" (cast_expression "(ulonglong)CONCAT14(uVar9 < uVar29,uVar9)" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (call_expression "CONCAT14(uVar9 < uVar29,uVar9)" (identifier "CONCAT14") (argument_list "(uVar9 < uVar29,uVar9)" (( "(") (binary_expression "uVar9 < uVar29" (identifier "uVar9") (< "<") (identifier "uVar29")) (, ",") (identifier "uVar9") () ")")))) (+ "+") (binary_expression "(ulonglong)uVar20 * (ulonglong)local_40[4]" (cast_expression "(ulonglong)uVar20" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar20")) (* "*") (cast_expression "(ulonglong)local_40[4]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[4]" (identifier "local_40") ([ "[") (number_literal "4") (] "]")))))) (; ";")) (expression_statement "local_4c = (uint)uVar1;" (assignment_expression "local_4c = (uint)uVar1" (identifier "local_4c") (= "=") (cast_expression "(uint)uVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar1"))) (; ";")) (expression_statement "lVar8 = (uVar2 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[3];" (assignment_expression "lVar8 = (uVar2 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[3]" (identifier "lVar8") (= "=") (binary_expression "(uVar2 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[3]" (parenthesized_expression "(uVar2 >> 0x20)" (( "(") (binary_expression "uVar2 >> 0x20" (identifier "uVar2") (>> ">>") (number_literal "0x20")) () ")")) (+ "+") (binary_expression "(ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[3]" (binary_expression "(ulonglong)*(uint *)(param_1 + 0x20)" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (* "*") (cast_expression "(uint *)(param_1 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (* "*") (cast_expression "(ulonglong)local_40[3]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[3]" (identifier "local_40") ([ "[") (number_literal "3") (] "]")))))) (; ";")) (expression_statement "local_70._4_4_ = (uint)lVar7;" (assignment_expression "local_70._4_4_ = (uint)lVar7" (field_expression "local_70._4_4_" (identifier "local_70") (. ".") (field_identifier "_4_4_")) (= "=") (cast_expression "(uint)lVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar7"))) (; ";")) (expression_statement "uVar13 = (local_70._4_4_ >> 2) * 4;" (assignment_expression "uVar13 = (local_70._4_4_ >> 2) * 4" (identifier "uVar13") (= "=") (binary_expression "(local_70._4_4_ >> 2) * 4" (parenthesized_expression "(local_70._4_4_ >> 2)" (( "(") (binary_expression "local_70._4_4_ >> 2" (field_expression "local_70._4_4_" (identifier "local_70") (. ".") (field_identifier "_4_4_")) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "uVar20 = uVar13 + (local_70._4_4_ >> 2 | local_4c << 0x1e);" (assignment_expression "uVar20 = uVar13 + (local_70._4_4_ >> 2 | local_4c << 0x1e)" (identifier "uVar20") (= "=") (binary_expression "uVar13 + (local_70._4_4_ >> 2 | local_4c << 0x1e)" (identifier "uVar13") (+ "+") (parenthesized_expression "(local_70._4_4_ >> 2 | local_4c << 0x1e)" (( "(") (binary_expression "local_70._4_4_ >> 2 | local_4c << 0x1e" (binary_expression "local_70._4_4_ >> 2" (field_expression "local_70._4_4_" (identifier "local_70") (. ".") (field_identifier "_4_4_")) (>> ">>") (number_literal "2")) (| "|") (binary_expression "local_4c << 0x1e" (identifier "local_4c") (<< "<<") (number_literal "0x1e"))) () ")")))) (; ";")) (expression_statement "uVar9 = uVar18 + (int)lVar8;" (assignment_expression "uVar9 = uVar18 + (int)lVar8" (identifier "uVar9") (= "=") (binary_expression "uVar18 + (int)lVar8" (identifier "uVar18") (+ "+") (cast_expression "(int)lVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar8")))) (; ";")) (expression_statement "lVar7 = (uVar4 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[4] + (uVar1 >> 0x20);" (assignment_expression "lVar7 = (uVar4 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[4] + (uVar1 >> 0x20)" (identifier "lVar7") (= "=") (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[4] + (uVar1 >> 0x20)" (binary_expression "(uVar4 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[4]" (parenthesized_expression "(uVar4 & 0xffffffff)" (( "(") (binary_expression "uVar4 & 0xffffffff" (identifier "uVar4") (& "&") (number_literal "0xffffffff")) () ")")) (+ "+") (binary_expression "(ulonglong)uVar21 * (ulonglong)local_40[4]" (cast_expression "(ulonglong)uVar21" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar21")) (* "*") (cast_expression "(ulonglong)local_40[4]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[4]" (identifier "local_40") ([ "[") (number_literal "4") (] "]"))))) (+ "+") (parenthesized_expression "(uVar1 >> 0x20)" (( "(") (binary_expression "uVar1 >> 0x20" (identifier "uVar1") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar16 = (uint)lVar7;" (assignment_expression "uVar16 = (uint)lVar7" (identifier "uVar16") (= "=") (cast_expression "(uint)lVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar7"))) (; ";")) (expression_statement "uVar29 = (uint)((ulonglong)lVar7 >> 0x20);" (assignment_expression "uVar29 = (uint)((ulonglong)lVar7 >> 0x20)" (identifier "uVar29") (= "=") (call_expression "(uint)((ulonglong)lVar7 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar7 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar7 >> 0x20" (cast_expression "(ulonglong)lVar7" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar7")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_64 = (uint)((ulonglong)local_40[0] * (ulonglong)uVar14);" (assignment_expression "local_64 = (uint)((ulonglong)local_40[0] * (ulonglong)uVar14)" (identifier "local_64") (= "=") (call_expression "(uint)((ulonglong)local_40[0] * (ulonglong)uVar14)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)local_40[0] * (ulonglong)uVar14)" (( "(") (binary_expression "(ulonglong)local_40[0] * (ulonglong)uVar14" (cast_expression "(ulonglong)local_40[0]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) (* "*") (cast_expression "(ulonglong)uVar14" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar14"))) () ")")))) (; ";")) (expression_statement "uVar21 = uVar20 + local_64;" (assignment_expression "uVar21 = uVar20 + local_64" (identifier "uVar21") (= "=") (binary_expression "uVar20 + local_64" (identifier "uVar20") (+ "+") (identifier "local_64"))) (; ";")) (expression_statement "lVar7 = (ulonglong)uVar9 + (ulonglong)uVar27 * (ulonglong)local_40[4];" (assignment_expression "lVar7 = (ulonglong)uVar9 + (ulonglong)uVar27 * (ulonglong)local_40[4]" (identifier "lVar7") (= "=") (binary_expression "(ulonglong)uVar9 + (ulonglong)uVar27 * (ulonglong)local_40[4]" (cast_expression "(ulonglong)uVar9" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar9")) (+ "+") (binary_expression "(ulonglong)uVar27 * (ulonglong)local_40[4]" (cast_expression "(ulonglong)uVar27" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar27")) (* "*") (cast_expression "(ulonglong)local_40[4]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "local_40[4]" (identifier "local_40") ([ "[") (number_literal "4") (] "]")))))) (; ";")) (expression_statement "uVar14 = (uint)(uVar21 < local_64);" (assignment_expression "uVar14 = (uint)(uVar21 < local_64)" (identifier "uVar14") (= "=") (call_expression "(uint)(uVar21 < local_64)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar21 < local_64)" (( "(") (binary_expression "uVar21 < local_64" (identifier "uVar21") (< "<") (identifier "local_64")) () ")")))) (; ";")) (expression_statement "local_5c = (int)lVar5;" (assignment_expression "local_5c = (int)lVar5" (identifier "local_5c") (= "=") (cast_expression "(int)lVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar5"))) (; ";")) (expression_statement "local_54 = (int)lVar3;" (assignment_expression "local_54 = (int)lVar3" (identifier "local_54") (= "=") (cast_expression "(int)lVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar3"))) (; ";")) (expression_statement "uVar27 = uVar29 + (int)lVar7;" (assignment_expression "uVar27 = uVar29 + (int)lVar7" (identifier "uVar27") (= "=") (binary_expression "uVar29 + (int)lVar7" (identifier "uVar29") (+ "+") (cast_expression "(int)lVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar7")))) (; ";")) (expression_statement "uVar17 = uVar14 + local_54;" (assignment_expression "uVar17 = uVar14 + local_54" (identifier "uVar17") (= "=") (binary_expression "uVar14 + local_54" (identifier "uVar14") (+ "+") (identifier "local_54"))) (; ";")) (expression_statement "uVar18 = local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar27 < uVar29) + (int)((ulonglong)lVar7 >> 0x20);" (assignment_expression "uVar18 = local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar27 < uVar29) + (int)((ulonglong)lVar7 >> 0x20)" (identifier "uVar18") (= "=") (binary_expression "local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar27 < uVar29) + (int)((ulonglong)lVar7 >> 0x20)" (binary_expression "local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20) +\n           (uint)(uVar27 < uVar29)" (binary_expression "local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20)" (binary_expression "local_40[4] * *(int *)(param_1 + 0x20) +\n           (uint)(uVar9 < uVar18)" (binary_expression "local_40[4] * *(int *)(param_1 + 0x20)" (subscript_expression "local_40[4]" (identifier "local_40") ([ "[") (number_literal "4") (] "]")) (* "*") (pointer_expression "*(int *)(param_1 + 0x20)" (* "*") (cast_expression "(int *)(param_1 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))) (+ "+") (call_expression "(uint)(uVar9 < uVar18)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar9 < uVar18)" (( "(") (binary_expression "uVar9 < uVar18" (identifier "uVar9") (< "<") (identifier "uVar18")) () ")")))) (+ "+") (cast_expression "(int)((ulonglong)lVar8 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar8 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar8 >> 0x20" (cast_expression "(ulonglong)lVar8" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar8")) (>> ">>") (number_literal "0x20")) () ")")))) (+ "+") (call_expression "(uint)(uVar27 < uVar29)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar27 < uVar29)" (( "(") (binary_expression "uVar27 < uVar29" (identifier "uVar27") (< "<") (identifier "uVar29")) () ")")))) (+ "+") (cast_expression "(int)((ulonglong)lVar7 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar7 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar7 >> 0x20" (cast_expression "(ulonglong)lVar7" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar7")) (>> ">>") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "lVar3 = (ulonglong)((uint)(uVar20 < uVar13) + (local_4c & 3)) +\n          (ulonglong)(local_4c >> 2 | uVar16 * 0x40000000) * 5;" (assignment_expression "lVar3 = (ulonglong)((uint)(uVar20 < uVar13) + (local_4c & 3)) +\n          (ulonglong)(local_4c >> 2 | uVar16 * 0x40000000) * 5" (identifier "lVar3") (= "=") (binary_expression "(ulonglong)((uint)(uVar20 < uVar13) + (local_4c & 3)) +\n          (ulonglong)(local_4c >> 2 | uVar16 * 0x40000000) * 5" (call_expression "(ulonglong)((uint)(uVar20 < uVar13) + (local_4c & 3))" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (argument_list "((uint)(uVar20 < uVar13) + (local_4c & 3))" (( "(") (binary_expression "(uint)(uVar20 < uVar13) + (local_4c & 3)" (call_expression "(uint)(uVar20 < uVar13)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar20 < uVar13)" (( "(") (binary_expression "uVar20 < uVar13" (identifier "uVar20") (< "<") (identifier "uVar13")) () ")"))) (+ "+") (parenthesized_expression "(local_4c & 3)" (( "(") (binary_expression "local_4c & 3" (identifier "local_4c") (& "&") (number_literal "3")) () ")"))) () ")"))) (+ "+") (binary_expression "(ulonglong)(local_4c >> 2 | uVar16 * 0x40000000) * 5" (call_expression "(ulonglong)(local_4c >> 2 | uVar16 * 0x40000000)" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (argument_list "(local_4c >> 2 | uVar16 * 0x40000000)" (( "(") (binary_expression "local_4c >> 2 | uVar16 * 0x40000000" (binary_expression "local_4c >> 2" (identifier "local_4c") (>> ">>") (number_literal "2")) (| "|") (binary_expression "uVar16 * 0x40000000" (identifier "uVar16") (* "*") (number_literal "0x40000000"))) () ")"))) (* "*") (number_literal "5")))) (; ";")) (expression_statement "puVar30 = (undefined1 *)((ulonglong)lVar3 >> 0x20);" (assignment_expression "puVar30 = (undefined1 *)((ulonglong)lVar3 >> 0x20)" (identifier "puVar30") (= "=") (cast_expression "(undefined1 *)((ulonglong)lVar3 >> 0x20)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)lVar3 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar3")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar20 = uVar17 + (int)lVar3;" (assignment_expression "uVar20 = uVar17 + (int)lVar3" (identifier "uVar20") (= "=") (binary_expression "uVar17 + (int)lVar3" (identifier "uVar17") (+ "+") (cast_expression "(int)lVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar3")))) (; ";")) (expression_statement "uVar29 = (uint)(uVar20 < uVar17) + (uint)(uVar17 < uVar14);" (assignment_expression "uVar29 = (uint)(uVar20 < uVar17) + (uint)(uVar17 < uVar14)" (identifier "uVar29") (= "=") (binary_expression "(uint)(uVar20 < uVar17) + (uint)(uVar17 < uVar14)" (call_expression "(uint)(uVar20 < uVar17)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar20 < uVar17)" (( "(") (binary_expression "uVar20 < uVar17" (identifier "uVar20") (< "<") (identifier "uVar17")) () ")"))) (+ "+") (call_expression "(uint)(uVar17 < uVar14)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar17 < uVar14)" (( "(") (binary_expression "uVar17 < uVar14" (identifier "uVar17") (< "<") (identifier "uVar14")) () ")"))))) (; ";")) (expression_statement "local_74 = (uint)lVar6;" (assignment_expression "local_74 = (uint)lVar6" (identifier "local_74") (= "=") (cast_expression "(uint)lVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar6"))) (; ";")) (expression_statement "uVar1 = ZEXT48(puVar30) + (ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000) * 5;" (assignment_expression "uVar1 = ZEXT48(puVar30) + (ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000) * 5" (identifier "uVar1") (= "=") (binary_expression "ZEXT48(puVar30) + (ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000) * 5" (call_expression "ZEXT48(puVar30)" (identifier "ZEXT48") (argument_list "(puVar30)" (( "(") (identifier "puVar30") () ")"))) (+ "+") (binary_expression "(ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000) * 5" (call_expression "(ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000)" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (argument_list "(uVar16 >> 2 | uVar27 * 0x40000000)" (( "(") (binary_expression "uVar16 >> 2 | uVar27 * 0x40000000" (binary_expression "uVar16 >> 2" (identifier "uVar16") (>> ">>") (number_literal "2")) (| "|") (binary_expression "uVar27 * 0x40000000" (identifier "uVar27") (* "*") (number_literal "0x40000000"))) () ")"))) (* "*") (number_literal "5")))) (; ";")) (expression_statement "uVar9 = (uVar18 >> 4) * 0x19;" (assignment_expression "uVar9 = (uVar18 >> 4) * 0x19" (identifier "uVar9") (= "=") (binary_expression "(uVar18 >> 4) * 0x19" (parenthesized_expression "(uVar18 >> 4)" (( "(") (binary_expression "uVar18 >> 4" (identifier "uVar18") (>> ">>") (number_literal "4")) () ")")) (* "*") (number_literal "0x19"))) (; ";")) (expression_statement "uVar21 = uVar9 + uVar21;" (assignment_expression "uVar21 = uVar9 + uVar21" (identifier "uVar21") (= "=") (binary_expression "uVar9 + uVar21" (identifier "uVar9") (+ "+") (identifier "uVar21"))) (; ";")) (expression_statement "uVar14 = uVar29 + (int)uVar1;" (assignment_expression "uVar14 = uVar29 + (int)uVar1" (identifier "uVar14") (= "=") (binary_expression "uVar29 + (int)uVar1" (identifier "uVar29") (+ "+") (cast_expression "(int)uVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar1")))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x24) = uVar21;" (assignment_expression "*(uint *)(param_1 + 0x24) = uVar21" (pointer_expression "*(uint *)(param_1 + 0x24)" (* "*") (cast_expression "(uint *)(param_1 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (identifier "uVar21")) (; ";")) (expression_statement "uVar9 = (uint)(uVar21 < uVar9);" (assignment_expression "uVar9 = (uint)(uVar21 < uVar9)" (identifier "uVar9") (= "=") (call_expression "(uint)(uVar21 < uVar9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar21 < uVar9)" (( "(") (binary_expression "uVar21 < uVar9" (identifier "uVar21") (< "<") (identifier "uVar9")) () ")")))) (; ";")) (expression_statement "uVar20 = uVar9 + uVar20;" (assignment_expression "uVar20 = uVar9 + uVar20" (identifier "uVar20") (= "=") (binary_expression "uVar9 + uVar20" (identifier "uVar9") (+ "+") (identifier "uVar20"))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x28) = uVar20;" (assignment_expression "*(uint *)(param_1 + 0x28) = uVar20" (pointer_expression "*(uint *)(param_1 + 0x28)" (* "*") (cast_expression "(uint *)(param_1 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "uVar20")) (; ";")) (expression_statement "uVar20 = (uint)(uVar20 < uVar9);" (assignment_expression "uVar20 = (uint)(uVar20 < uVar9)" (identifier "uVar20") (= "=") (call_expression "(uint)(uVar20 < uVar9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar20 < uVar9)" (( "(") (binary_expression "uVar20 < uVar9" (identifier "uVar20") (< "<") (identifier "uVar9")) () ")")))) (; ";")) (expression_statement "lVar3 = (uVar1 >> 0x20) + (ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000) * 5;" (assignment_expression "lVar3 = (uVar1 >> 0x20) + (ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000) * 5" (identifier "lVar3") (= "=") (binary_expression "(uVar1 >> 0x20) + (ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000) * 5" (parenthesized_expression "(uVar1 >> 0x20)" (( "(") (binary_expression "uVar1 >> 0x20" (identifier "uVar1") (>> ">>") (number_literal "0x20")) () ")")) (+ "+") (binary_expression "(ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000) * 5" (call_expression "(ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000)" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (argument_list "(uVar27 >> 2 | uVar18 * 0x40000000)" (( "(") (binary_expression "uVar27 >> 2 | uVar18 * 0x40000000" (binary_expression "uVar27 >> 2" (identifier "uVar27") (>> ">>") (number_literal "2")) (| "|") (binary_expression "uVar18 * 0x40000000" (identifier "uVar18") (* "*") (number_literal "0x40000000"))) () ")"))) (* "*") (number_literal "5")))) (; ";")) (expression_statement "uVar21 = (uint)(uVar14 + local_5c < uVar14) + (uint)(uVar14 < uVar29);" (assignment_expression "uVar21 = (uint)(uVar14 + local_5c < uVar14) + (uint)(uVar14 < uVar29)" (identifier "uVar21") (= "=") (binary_expression "(uint)(uVar14 + local_5c < uVar14) + (uint)(uVar14 < uVar29)" (call_expression "(uint)(uVar14 + local_5c < uVar14)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar14 + local_5c < uVar14)" (( "(") (binary_expression "uVar14 + local_5c < uVar14" (binary_expression "uVar14 + local_5c" (identifier "uVar14") (+ "+") (identifier "local_5c")) (< "<") (identifier "uVar14")) () ")"))) (+ "+") (call_expression "(uint)(uVar14 < uVar29)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar14 < uVar29)" (( "(") (binary_expression "uVar14 < uVar29" (identifier "uVar14") (< "<") (identifier "uVar29")) () ")"))))) (; ";")) (expression_statement "uVar9 = uVar20 + uVar14 + local_5c;" (assignment_expression "uVar9 = uVar20 + uVar14 + local_5c" (identifier "uVar9") (= "=") (binary_expression "uVar20 + uVar14 + local_5c" (binary_expression "uVar20 + uVar14" (identifier "uVar20") (+ "+") (identifier "uVar14")) (+ "+") (identifier "local_5c"))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x2c) = uVar9;" (assignment_expression "*(uint *)(param_1 + 0x2c) = uVar9" (pointer_expression "*(uint *)(param_1 + 0x2c)" (* "*") (cast_expression "(uint *)(param_1 + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "uVar29 = (uint)(uVar9 < uVar20);" (assignment_expression "uVar29 = (uint)(uVar9 < uVar20)" (identifier "uVar29") (= "=") (call_expression "(uint)(uVar9 < uVar20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar9 < uVar20)" (( "(") (binary_expression "uVar9 < uVar20" (identifier "uVar9") (< "<") (identifier "uVar20")) () ")")))) (; ";")) (expression_statement "uVar9 = (int)lVar3 + local_74;" (assignment_expression "uVar9 = (int)lVar3 + local_74" (identifier "uVar9") (= "=") (binary_expression "(int)lVar3 + local_74" (cast_expression "(int)lVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar3")) (+ "+") (identifier "local_74"))) (; ";")) (expression_statement "uVar14 = uVar21 + uVar9;" (assignment_expression "uVar14 = uVar21 + uVar9" (identifier "uVar14") (= "=") (binary_expression "uVar21 + uVar9" (identifier "uVar21") (+ "+") (identifier "uVar9"))) (; ";")) (expression_statement "uVar9 = (uint)(uVar9 < local_74);" (assignment_expression "uVar9 = (uint)(uVar9 < local_74)" (identifier "uVar9") (= "=") (call_expression "(uint)(uVar9 < local_74)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar9 < local_74)" (( "(") (binary_expression "uVar9 < local_74" (identifier "uVar9") (< "<") (identifier "local_74")) () ")")))) (; ";")) (expression_statement "uVar20 = uVar29 + uVar14;" (assignment_expression "uVar20 = uVar29 + uVar14" (identifier "uVar20") (= "=") (binary_expression "uVar29 + uVar14" (identifier "uVar29") (+ "+") (identifier "uVar14"))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x30) = uVar20;" (assignment_expression "*(uint *)(param_1 + 0x30) = uVar20" (pointer_expression "*(uint *)(param_1 + 0x30)" (* "*") (cast_expression "(uint *)(param_1 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "uVar20")) (; ";")) (expression_statement "puVar11 = (undefined1 *)\n            ((uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29));" (assignment_expression "puVar11 = (undefined1 *)\n            ((uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29))" (identifier "puVar11") (= "=") (cast_expression "(undefined1 *)\n            ((uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29))" (( "(") (binary_expression "(uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29)" (binary_expression "(uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9" (binary_expression "(uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21)" (binary_expression "(uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +\n             (int)((ulonglong)lVar3 >> 0x20)" (binary_expression "(uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3)" (binary_expression "(uVar18 * 0x10000000 >> 0x1e) * 5" (parenthesized_expression "(uVar18 * 0x10000000 >> 0x1e)" (( "(") (binary_expression "uVar18 * 0x10000000 >> 0x1e" (binary_expression "uVar18 * 0x10000000" (identifier "uVar18") (* "*") (number_literal "0x10000000")) (>> ">>") (number_literal "0x1e")) () ")")) (* "*") (number_literal "5")) (+ "+") (parenthesized_expression "(local_70._4_4_ & 3)" (( "(") (binary_expression "local_70._4_4_ & 3" (field_expression "local_70._4_4_" (identifier "local_70") (. ".") (field_identifier "_4_4_")) (& "&") (number_literal "3")) () ")"))) (+ "+") (cast_expression "(int)((ulonglong)lVar3 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar3 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar3")) (>> ">>") (number_literal "0x20")) () ")")))) (+ "+") (parenthesized_expression "(uVar14 < uVar21)" (( "(") (binary_expression "uVar14 < uVar21" (identifier "uVar14") (< "<") (identifier "uVar21")) () ")"))) (+ "+") (identifier "uVar9")) (+ "+") (call_expression "(uint)(uVar20 < uVar29)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar20 < uVar29)" (( "(") (binary_expression "uVar20 < uVar29" (identifier "uVar20") (< "<") (identifier "uVar29")) () ")")))) () ")")))) (; ";")) (expression_statement "*(undefined1 **)(param_1 + 0x34) = puVar11;" (assignment_expression "*(undefined1 **)(param_1 + 0x34) = puVar11" (pointer_expression "*(undefined1 **)(param_1 + 0x34)" (* "*") (cast_expression "(undefined1 **)(param_1 + 0x34)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (identifier "puVar11")) (; ";")) (if_statement "if (local_40[5] == iVar22) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_40[5] == iVar22)" (( "(") (binary_expression "local_40[5] == iVar22" (subscript_expression "local_40[5]" (identifier "local_40") ([ "[") (number_literal "5") (] "]")) (== "==") (identifier "iVar22")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pcVar28 = FUN_0005ab78;" (assignment_expression "pcVar28 = FUN_0005ab78" (identifier "pcVar28") (= "=") (identifier "FUN_0005ab78")) (; ";")) (expression_statement "puVar24 = PTR___stack_chk_fail_000b0c70;" (assignment_expression "puVar24 = PTR___stack_chk_fail_000b0c70" (identifier "puVar24") (= "=") (identifier "PTR___stack_chk_fail_000b0c70")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000b0c70)();" (call_expression "(*(code *)PTR___stack_chk_fail_000b0c70)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000b0c70)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000b0c70" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000b0c70" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000b0c70"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar26 = auStack_90;" (assignment_expression "puVar26 = auStack_90" (identifier "puVar26") (= "=") (identifier "auStack_90")) (; ";")) (while_statement "while( true ) {\n    puVar12 = puVar11;\n    iVar22 = *(int *)(puVar12 + 0x48);\n    *(int *)(puVar26 + -0xc) = (int)lVar3;\n    piVar19 = *(int **)(puVar24 + 0x56124);\n    *(undefined **)(puVar26 + -0x30) = puVar24 + 0x5d5d8;\n    *(undefined1 **)(puVar26 + -8) = puVar30;\n    *(int *)(puVar26 + -0x10) = (int)((ulonglong)lVar3 >> 0x20);\n    lVar3 = CONCAT44(uVar9,piVar19);\n    *(code **)(puVar26 + -4) = pcVar28;\n    *(int *)(puVar26 + -0x14) = *piVar19;\n    if (iVar22 != 0) {\n      FUN_0005a528();\n    }\n    *(undefined4 *)(puVar26 + -0x28) = 0;\n    *(undefined4 *)(puVar26 + -0x24) = 0;\n    *(undefined4 *)(puVar26 + -0x20) = 0;\n    *(undefined4 *)(puVar26 + -0x1c) = 0;\n    *(undefined4 *)(puVar26 + -0x18) = 0;\n    FUN_0005a4e8(puVar26 + -0x28,puVar12,0x10);\n    uVar14 = (*(uint *)(puVar12 + 0x34) >> 2) * 5;\n    uVar21 = *(int *)(puVar12 + 0x24) + uVar14;\n    uVar20 = (uint)(uVar21 < uVar14);\n    uVar16 = uVar20 + *(int *)(puVar12 + 0x28);\n    uVar14 = (uint)(uVar21 + 5 < uVar21);\n    uVar20 = (uint)(uVar16 < uVar20);\n    uVar27 = uVar20 + *(int *)(puVar12 + 0x2c);\n    uVar29 = (uint)(uVar14 + uVar16 < uVar14);\n    uVar14 = (uint)(uVar27 < uVar20);\n    uVar13 = uVar14 + *(int *)(puVar12 + 0x30);\n    uVar20 = (uint)(uVar29 + uVar27 < uVar29);\n    iVar22 = (*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14);\n    uVar14 = (iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5;\n    uVar21 = uVar14 + uVar21;\n    uVar14 = (uint)(uVar21 < uVar14);\n    *(uint *)(puVar12 + 0x24) = uVar21;\n    uVar16 = uVar14 + uVar16;\n    uVar14 = (uint)(uVar16 < uVar14);\n    *(uint *)(puVar12 + 0x28) = uVar16;\n    uVar27 = uVar14 + uVar27;\n    uVar14 = (uint)(uVar27 < uVar14);\n    *(uint *)(puVar12 + 0x2c) = uVar27;\n    uVar13 = uVar14 + uVar13;\n    *(uint *)(puVar12 + 0x30) = uVar13;\n    *(uint *)(puVar12 + 0x34) = iVar22 + (uint)(uVar13 < uVar14) & 3;\n    FUN_0005a298();\n    iVar22 = 0;\n    iVar25 = *(int *)(puVar26 + -0x30);\n    do {\n      iVar10 = iVar22 >> 2;\n      uVar14 = iVar22 << 3;\n      puVar11 = (undefined1 *)(uVar9 + iVar22);\n      iVar22 = iVar22 + 1;\n      *puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));\n    } while (iVar22 != 0x10);\n    if (*(int *)(puVar26 + -0x14) == *piVar19) break;\n    pcVar23 = *(code **)(iVar25 + -0x74e0);\n    pcVar28 = (code *)0x5ad34;\n    (*pcVar23)();\n    puVar24 = (undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488);\n    puVar11 = puVar11 + 0x114;\n    uVar9 = uVar14;\n    puVar30 = puVar12;\n    puVar26 = puVar26 + -0x40;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    puVar12 = puVar11;\n    iVar22 = *(int *)(puVar12 + 0x48);\n    *(int *)(puVar26 + -0xc) = (int)lVar3;\n    piVar19 = *(int **)(puVar24 + 0x56124);\n    *(undefined **)(puVar26 + -0x30) = puVar24 + 0x5d5d8;\n    *(undefined1 **)(puVar26 + -8) = puVar30;\n    *(int *)(puVar26 + -0x10) = (int)((ulonglong)lVar3 >> 0x20);\n    lVar3 = CONCAT44(uVar9,piVar19);\n    *(code **)(puVar26 + -4) = pcVar28;\n    *(int *)(puVar26 + -0x14) = *piVar19;\n    if (iVar22 != 0) {\n      FUN_0005a528();\n    }\n    *(undefined4 *)(puVar26 + -0x28) = 0;\n    *(undefined4 *)(puVar26 + -0x24) = 0;\n    *(undefined4 *)(puVar26 + -0x20) = 0;\n    *(undefined4 *)(puVar26 + -0x1c) = 0;\n    *(undefined4 *)(puVar26 + -0x18) = 0;\n    FUN_0005a4e8(puVar26 + -0x28,puVar12,0x10);\n    uVar14 = (*(uint *)(puVar12 + 0x34) >> 2) * 5;\n    uVar21 = *(int *)(puVar12 + 0x24) + uVar14;\n    uVar20 = (uint)(uVar21 < uVar14);\n    uVar16 = uVar20 + *(int *)(puVar12 + 0x28);\n    uVar14 = (uint)(uVar21 + 5 < uVar21);\n    uVar20 = (uint)(uVar16 < uVar20);\n    uVar27 = uVar20 + *(int *)(puVar12 + 0x2c);\n    uVar29 = (uint)(uVar14 + uVar16 < uVar14);\n    uVar14 = (uint)(uVar27 < uVar20);\n    uVar13 = uVar14 + *(int *)(puVar12 + 0x30);\n    uVar20 = (uint)(uVar29 + uVar27 < uVar29);\n    iVar22 = (*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14);\n    uVar14 = (iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5;\n    uVar21 = uVar14 + uVar21;\n    uVar14 = (uint)(uVar21 < uVar14);\n    *(uint *)(puVar12 + 0x24) = uVar21;\n    uVar16 = uVar14 + uVar16;\n    uVar14 = (uint)(uVar16 < uVar14);\n    *(uint *)(puVar12 + 0x28) = uVar16;\n    uVar27 = uVar14 + uVar27;\n    uVar14 = (uint)(uVar27 < uVar14);\n    *(uint *)(puVar12 + 0x2c) = uVar27;\n    uVar13 = uVar14 + uVar13;\n    *(uint *)(puVar12 + 0x30) = uVar13;\n    *(uint *)(puVar12 + 0x34) = iVar22 + (uint)(uVar13 < uVar14) & 3;\n    FUN_0005a298();\n    iVar22 = 0;\n    iVar25 = *(int *)(puVar26 + -0x30);\n    do {\n      iVar10 = iVar22 >> 2;\n      uVar14 = iVar22 << 3;\n      puVar11 = (undefined1 *)(uVar9 + iVar22);\n      iVar22 = iVar22 + 1;\n      *puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));\n    } while (iVar22 != 0x10);\n    if (*(int *)(puVar26 + -0x14) == *piVar19) break;\n    pcVar23 = *(code **)(iVar25 + -0x74e0);\n    pcVar28 = (code *)0x5ad34;\n    (*pcVar23)();\n    puVar24 = (undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488);\n    puVar11 = puVar11 + 0x114;\n    uVar9 = uVar14;\n    puVar30 = puVar12;\n    puVar26 = puVar26 + -0x40;\n  }" ({ "{") (expression_statement "puVar12 = puVar11;" (assignment_expression "puVar12 = puVar11" (identifier "puVar12") (= "=") (identifier "puVar11")) (; ";")) (expression_statement "iVar22 = *(int *)(puVar12 + 0x48);" (assignment_expression "iVar22 = *(int *)(puVar12 + 0x48)" (identifier "iVar22") (= "=") (pointer_expression "*(int *)(puVar12 + 0x48)" (* "*") (cast_expression "(int *)(puVar12 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 0x48)" (( "(") (binary_expression "puVar12 + 0x48" (identifier "puVar12") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar26 + -0xc) = (int)lVar3;" (assignment_expression "*(int *)(puVar26 + -0xc) = (int)lVar3" (pointer_expression "*(int *)(puVar26 + -0xc)" (* "*") (cast_expression "(int *)(puVar26 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0xc)" (( "(") (binary_expression "puVar26 + -0xc" (identifier "puVar26") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (cast_expression "(int)lVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar3"))) (; ";")) (expression_statement "piVar19 = *(int **)(puVar24 + 0x56124);" (assignment_expression "piVar19 = *(int **)(puVar24 + 0x56124)" (identifier "piVar19") (= "=") (pointer_expression "*(int **)(puVar24 + 0x56124)" (* "*") (cast_expression "(int **)(puVar24 + 0x56124)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x56124)" (( "(") (binary_expression "puVar24 + 0x56124" (identifier "puVar24") (+ "+") (number_literal "0x56124")) () ")"))))) (; ";")) (expression_statement "*(undefined **)(puVar26 + -0x30) = puVar24 + 0x5d5d8;" (assignment_expression "*(undefined **)(puVar26 + -0x30) = puVar24 + 0x5d5d8" (pointer_expression "*(undefined **)(puVar26 + -0x30)" (* "*") (cast_expression "(undefined **)(puVar26 + -0x30)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar26 + -0x30)" (( "(") (binary_expression "puVar26 + -0x30" (identifier "puVar26") (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (binary_expression "puVar24 + 0x5d5d8" (identifier "puVar24") (+ "+") (number_literal "0x5d5d8"))) (; ";")) (expression_statement "*(undefined1 **)(puVar26 + -8) = puVar30;" (assignment_expression "*(undefined1 **)(puVar26 + -8) = puVar30" (pointer_expression "*(undefined1 **)(puVar26 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar26 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar26 + -8)" (( "(") (binary_expression "puVar26 + -8" (identifier "puVar26") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "puVar30")) (; ";")) (expression_statement "*(int *)(puVar26 + -0x10) = (int)((ulonglong)lVar3 >> 0x20);" (assignment_expression "*(int *)(puVar26 + -0x10) = (int)((ulonglong)lVar3 >> 0x20)" (pointer_expression "*(int *)(puVar26 + -0x10)" (* "*") (cast_expression "(int *)(puVar26 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0x10)" (( "(") (binary_expression "puVar26 + -0x10" (identifier "puVar26") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (cast_expression "(int)((ulonglong)lVar3 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar3 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar3")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "lVar3 = CONCAT44(uVar9,piVar19);" (assignment_expression "lVar3 = CONCAT44(uVar9,piVar19)" (identifier "lVar3") (= "=") (call_expression "CONCAT44(uVar9,piVar19)" (identifier "CONCAT44") (argument_list "(uVar9,piVar19)" (( "(") (identifier "uVar9") (, ",") (identifier "piVar19") () ")")))) (; ";")) (expression_statement "*(code **)(puVar26 + -4) = pcVar28;" (assignment_expression "*(code **)(puVar26 + -4) = pcVar28" (pointer_expression "*(code **)(puVar26 + -4)" (* "*") (cast_expression "(code **)(puVar26 + -4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar26 + -4)" (( "(") (binary_expression "puVar26 + -4" (identifier "puVar26") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "pcVar28")) (; ";")) (expression_statement "*(int *)(puVar26 + -0x14) = *piVar19;" (assignment_expression "*(int *)(puVar26 + -0x14) = *piVar19" (pointer_expression "*(int *)(puVar26 + -0x14)" (* "*") (cast_expression "(int *)(puVar26 + -0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0x14)" (( "(") (binary_expression "puVar26 + -0x14" (identifier "puVar26") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "*piVar19" (* "*") (identifier "piVar19"))) (; ";")) (if_statement "if (iVar22 != 0) {\n      FUN_0005a528();\n    }" (if "if") (parenthesized_expression "(iVar22 != 0)" (( "(") (binary_expression "iVar22 != 0" (identifier "iVar22") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_0005a528();\n    }" ({ "{") (expression_statement "FUN_0005a528();" (call_expression "FUN_0005a528()" (identifier "FUN_0005a528") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(puVar26 + -0x28) = 0;" (assignment_expression "*(undefined4 *)(puVar26 + -0x28) = 0" (pointer_expression "*(undefined4 *)(puVar26 + -0x28)" (* "*") (cast_expression "(undefined4 *)(puVar26 + -0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0x28)" (( "(") (binary_expression "puVar26 + -0x28" (identifier "puVar26") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar26 + -0x24) = 0;" (assignment_expression "*(undefined4 *)(puVar26 + -0x24) = 0" (pointer_expression "*(undefined4 *)(puVar26 + -0x24)" (* "*") (cast_expression "(undefined4 *)(puVar26 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0x24)" (( "(") (binary_expression "puVar26 + -0x24" (identifier "puVar26") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar26 + -0x20) = 0;" (assignment_expression "*(undefined4 *)(puVar26 + -0x20) = 0" (pointer_expression "*(undefined4 *)(puVar26 + -0x20)" (* "*") (cast_expression "(undefined4 *)(puVar26 + -0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0x20)" (( "(") (binary_expression "puVar26 + -0x20" (identifier "puVar26") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar26 + -0x1c) = 0;" (assignment_expression "*(undefined4 *)(puVar26 + -0x1c) = 0" (pointer_expression "*(undefined4 *)(puVar26 + -0x1c)" (* "*") (cast_expression "(undefined4 *)(puVar26 + -0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0x1c)" (( "(") (binary_expression "puVar26 + -0x1c" (identifier "puVar26") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar26 + -0x18) = 0;" (assignment_expression "*(undefined4 *)(puVar26 + -0x18) = 0" (pointer_expression "*(undefined4 *)(puVar26 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar26 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0x18)" (( "(") (binary_expression "puVar26 + -0x18" (identifier "puVar26") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_0005a4e8(puVar26 + -0x28,puVar12,0x10);" (call_expression "FUN_0005a4e8(puVar26 + -0x28,puVar12,0x10)" (identifier "FUN_0005a4e8") (argument_list "(puVar26 + -0x28,puVar12,0x10)" (( "(") (binary_expression "puVar26 + -0x28" (identifier "puVar26") (+ "+") (number_literal "-0x28")) (, ",") (identifier "puVar12") (, ",") (number_literal "0x10") () ")"))) (; ";")) (expression_statement "uVar14 = (*(uint *)(puVar12 + 0x34) >> 2) * 5;" (assignment_expression "uVar14 = (*(uint *)(puVar12 + 0x34) >> 2) * 5" (identifier "uVar14") (= "=") (binary_expression "(*(uint *)(puVar12 + 0x34) >> 2) * 5" (parenthesized_expression "(*(uint *)(puVar12 + 0x34) >> 2)" (( "(") (binary_expression "*(uint *)(puVar12 + 0x34) >> 2" (pointer_expression "*(uint *)(puVar12 + 0x34)" (* "*") (cast_expression "(uint *)(puVar12 + 0x34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 0x34)" (( "(") (binary_expression "puVar12 + 0x34" (identifier "puVar12") (+ "+") (number_literal "0x34")) () ")")))) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "5"))) (; ";")) (expression_statement "uVar21 = *(int *)(puVar12 + 0x24) + uVar14;" (assignment_expression "uVar21 = *(int *)(puVar12 + 0x24) + uVar14" (identifier "uVar21") (= "=") (binary_expression "*(int *)(puVar12 + 0x24) + uVar14" (pointer_expression "*(int *)(puVar12 + 0x24)" (* "*") (cast_expression "(int *)(puVar12 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 0x24)" (( "(") (binary_expression "puVar12 + 0x24" (identifier "puVar12") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (identifier "uVar14"))) (; ";")) (expression_statement "uVar20 = (uint)(uVar21 < uVar14);" (assignment_expression "uVar20 = (uint)(uVar21 < uVar14)" (identifier "uVar20") (= "=") (call_expression "(uint)(uVar21 < uVar14)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar21 < uVar14)" (( "(") (binary_expression "uVar21 < uVar14" (identifier "uVar21") (< "<") (identifier "uVar14")) () ")")))) (; ";")) (expression_statement "uVar16 = uVar20 + *(int *)(puVar12 + 0x28);" (assignment_expression "uVar16 = uVar20 + *(int *)(puVar12 + 0x28)" (identifier "uVar16") (= "=") (binary_expression "uVar20 + *(int *)(puVar12 + 0x28)" (identifier "uVar20") (+ "+") (pointer_expression "*(int *)(puVar12 + 0x28)" (* "*") (cast_expression "(int *)(puVar12 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 0x28)" (( "(") (binary_expression "puVar12 + 0x28" (identifier "puVar12") (+ "+") (number_literal "0x28")) () ")")))))) (; ";")) (expression_statement "uVar14 = (uint)(uVar21 + 5 < uVar21);" (assignment_expression "uVar14 = (uint)(uVar21 + 5 < uVar21)" (identifier "uVar14") (= "=") (call_expression "(uint)(uVar21 + 5 < uVar21)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar21 + 5 < uVar21)" (( "(") (binary_expression "uVar21 + 5 < uVar21" (binary_expression "uVar21 + 5" (identifier "uVar21") (+ "+") (number_literal "5")) (< "<") (identifier "uVar21")) () ")")))) (; ";")) (expression_statement "uVar20 = (uint)(uVar16 < uVar20);" (assignment_expression "uVar20 = (uint)(uVar16 < uVar20)" (identifier "uVar20") (= "=") (call_expression "(uint)(uVar16 < uVar20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar16 < uVar20)" (( "(") (binary_expression "uVar16 < uVar20" (identifier "uVar16") (< "<") (identifier "uVar20")) () ")")))) (; ";")) (expression_statement "uVar27 = uVar20 + *(int *)(puVar12 + 0x2c);" (assignment_expression "uVar27 = uVar20 + *(int *)(puVar12 + 0x2c)" (identifier "uVar27") (= "=") (binary_expression "uVar20 + *(int *)(puVar12 + 0x2c)" (identifier "uVar20") (+ "+") (pointer_expression "*(int *)(puVar12 + 0x2c)" (* "*") (cast_expression "(int *)(puVar12 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 0x2c)" (( "(") (binary_expression "puVar12 + 0x2c" (identifier "puVar12") (+ "+") (number_literal "0x2c")) () ")")))))) (; ";")) (expression_statement "uVar29 = (uint)(uVar14 + uVar16 < uVar14);" (assignment_expression "uVar29 = (uint)(uVar14 + uVar16 < uVar14)" (identifier "uVar29") (= "=") (call_expression "(uint)(uVar14 + uVar16 < uVar14)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar14 + uVar16 < uVar14)" (( "(") (binary_expression "uVar14 + uVar16 < uVar14" (binary_expression "uVar14 + uVar16" (identifier "uVar14") (+ "+") (identifier "uVar16")) (< "<") (identifier "uVar14")) () ")")))) (; ";")) (expression_statement "uVar14 = (uint)(uVar27 < uVar20);" (assignment_expression "uVar14 = (uint)(uVar27 < uVar20)" (identifier "uVar14") (= "=") (call_expression "(uint)(uVar27 < uVar20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar27 < uVar20)" (( "(") (binary_expression "uVar27 < uVar20" (identifier "uVar27") (< "<") (identifier "uVar20")) () ")")))) (; ";")) (expression_statement "uVar13 = uVar14 + *(int *)(puVar12 + 0x30);" (assignment_expression "uVar13 = uVar14 + *(int *)(puVar12 + 0x30)" (identifier "uVar13") (= "=") (binary_expression "uVar14 + *(int *)(puVar12 + 0x30)" (identifier "uVar14") (+ "+") (pointer_expression "*(int *)(puVar12 + 0x30)" (* "*") (cast_expression "(int *)(puVar12 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 0x30)" (( "(") (binary_expression "puVar12 + 0x30" (identifier "puVar12") (+ "+") (number_literal "0x30")) () ")")))))) (; ";")) (expression_statement "uVar20 = (uint)(uVar29 + uVar27 < uVar29);" (assignment_expression "uVar20 = (uint)(uVar29 + uVar27 < uVar29)" (identifier "uVar20") (= "=") (call_expression "(uint)(uVar29 + uVar27 < uVar29)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar29 + uVar27 < uVar29)" (( "(") (binary_expression "uVar29 + uVar27 < uVar29" (binary_expression "uVar29 + uVar27" (identifier "uVar29") (+ "+") (identifier "uVar27")) (< "<") (identifier "uVar29")) () ")")))) (; ";")) (expression_statement "iVar22 = (*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14);" (assignment_expression "iVar22 = (*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14)" (identifier "iVar22") (= "=") (binary_expression "(*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14)" (parenthesized_expression "(*(uint *)(puVar12 + 0x34) & 3)" (( "(") (binary_expression "*(uint *)(puVar12 + 0x34) & 3" (pointer_expression "*(uint *)(puVar12 + 0x34)" (* "*") (cast_expression "(uint *)(puVar12 + 0x34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 0x34)" (( "(") (binary_expression "puVar12 + 0x34" (identifier "puVar12") (+ "+") (number_literal "0x34")) () ")")))) (& "&") (number_literal "3")) () ")")) (+ "+") (call_expression "(uint)(uVar13 < uVar14)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar13 < uVar14)" (( "(") (binary_expression "uVar13 < uVar14" (identifier "uVar13") (< "<") (identifier "uVar14")) () ")"))))) (; ";")) (expression_statement "uVar14 = (iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5;" (assignment_expression "uVar14 = (iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5" (identifier "uVar14") (= "=") (binary_expression "(iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5" (parenthesized_expression "(iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2)" (( "(") (binary_expression "iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2" (binary_expression "iVar22 + (uint)(uVar20 + uVar13 < uVar20)" (identifier "iVar22") (+ "+") (call_expression "(uint)(uVar20 + uVar13 < uVar20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar20 + uVar13 < uVar20)" (( "(") (binary_expression "uVar20 + uVar13 < uVar20" (binary_expression "uVar20 + uVar13" (identifier "uVar20") (+ "+") (identifier "uVar13")) (< "<") (identifier "uVar20")) () ")")))) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "5"))) (; ";")) (expression_statement "uVar21 = uVar14 + uVar21;" (assignment_expression "uVar21 = uVar14 + uVar21" (identifier "uVar21") (= "=") (binary_expression "uVar14 + uVar21" (identifier "uVar14") (+ "+") (identifier "uVar21"))) (; ";")) (expression_statement "uVar14 = (uint)(uVar21 < uVar14);" (assignment_expression "uVar14 = (uint)(uVar21 < uVar14)" (identifier "uVar14") (= "=") (call_expression "(uint)(uVar21 < uVar14)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar21 < uVar14)" (( "(") (binary_expression "uVar21 < uVar14" (identifier "uVar21") (< "<") (identifier "uVar14")) () ")")))) (; ";")) (expression_statement "*(uint *)(puVar12 + 0x24) = uVar21;" (assignment_expression "*(uint *)(puVar12 + 0x24) = uVar21" (pointer_expression "*(uint *)(puVar12 + 0x24)" (* "*") (cast_expression "(uint *)(puVar12 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 0x24)" (( "(") (binary_expression "puVar12 + 0x24" (identifier "puVar12") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (identifier "uVar21")) (; ";")) (expression_statement "uVar16 = uVar14 + uVar16;" (assignment_expression "uVar16 = uVar14 + uVar16" (identifier "uVar16") (= "=") (binary_expression "uVar14 + uVar16" (identifier "uVar14") (+ "+") (identifier "uVar16"))) (; ";")) (expression_statement "uVar14 = (uint)(uVar16 < uVar14);" (assignment_expression "uVar14 = (uint)(uVar16 < uVar14)" (identifier "uVar14") (= "=") (call_expression "(uint)(uVar16 < uVar14)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar16 < uVar14)" (( "(") (binary_expression "uVar16 < uVar14" (identifier "uVar16") (< "<") (identifier "uVar14")) () ")")))) (; ";")) (expression_statement "*(uint *)(puVar12 + 0x28) = uVar16;" (assignment_expression "*(uint *)(puVar12 + 0x28) = uVar16" (pointer_expression "*(uint *)(puVar12 + 0x28)" (* "*") (cast_expression "(uint *)(puVar12 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 0x28)" (( "(") (binary_expression "puVar12 + 0x28" (identifier "puVar12") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "uVar27 = uVar14 + uVar27;" (assignment_expression "uVar27 = uVar14 + uVar27" (identifier "uVar27") (= "=") (binary_expression "uVar14 + uVar27" (identifier "uVar14") (+ "+") (identifier "uVar27"))) (; ";")) (expression_statement "uVar14 = (uint)(uVar27 < uVar14);" (assignment_expression "uVar14 = (uint)(uVar27 < uVar14)" (identifier "uVar14") (= "=") (call_expression "(uint)(uVar27 < uVar14)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar27 < uVar14)" (( "(") (binary_expression "uVar27 < uVar14" (identifier "uVar27") (< "<") (identifier "uVar14")) () ")")))) (; ";")) (expression_statement "*(uint *)(puVar12 + 0x2c) = uVar27;" (assignment_expression "*(uint *)(puVar12 + 0x2c) = uVar27" (pointer_expression "*(uint *)(puVar12 + 0x2c)" (* "*") (cast_expression "(uint *)(puVar12 + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 0x2c)" (( "(") (binary_expression "puVar12 + 0x2c" (identifier "puVar12") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (identifier "uVar27")) (; ";")) (expression_statement "uVar13 = uVar14 + uVar13;" (assignment_expression "uVar13 = uVar14 + uVar13" (identifier "uVar13") (= "=") (binary_expression "uVar14 + uVar13" (identifier "uVar14") (+ "+") (identifier "uVar13"))) (; ";")) (expression_statement "*(uint *)(puVar12 + 0x30) = uVar13;" (assignment_expression "*(uint *)(puVar12 + 0x30) = uVar13" (pointer_expression "*(uint *)(puVar12 + 0x30)" (* "*") (cast_expression "(uint *)(puVar12 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 0x30)" (( "(") (binary_expression "puVar12 + 0x30" (identifier "puVar12") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "uVar13")) (; ";")) (expression_statement "*(uint *)(puVar12 + 0x34) = iVar22 + (uint)(uVar13 < uVar14) & 3;" (assignment_expression "*(uint *)(puVar12 + 0x34) = iVar22 + (uint)(uVar13 < uVar14) & 3" (pointer_expression "*(uint *)(puVar12 + 0x34)" (* "*") (cast_expression "(uint *)(puVar12 + 0x34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 0x34)" (( "(") (binary_expression "puVar12 + 0x34" (identifier "puVar12") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (binary_expression "iVar22 + (uint)(uVar13 < uVar14) & 3" (binary_expression "iVar22 + (uint)(uVar13 < uVar14)" (identifier "iVar22") (+ "+") (call_expression "(uint)(uVar13 < uVar14)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar13 < uVar14)" (( "(") (binary_expression "uVar13 < uVar14" (identifier "uVar13") (< "<") (identifier "uVar14")) () ")")))) (& "&") (number_literal "3"))) (; ";")) (expression_statement "FUN_0005a298();" (call_expression "FUN_0005a298()" (identifier "FUN_0005a298") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar22 = 0;" (assignment_expression "iVar22 = 0" (identifier "iVar22") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar25 = *(int *)(puVar26 + -0x30);" (assignment_expression "iVar25 = *(int *)(puVar26 + -0x30)" (identifier "iVar25") (= "=") (pointer_expression "*(int *)(puVar26 + -0x30)" (* "*") (cast_expression "(int *)(puVar26 + -0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0x30)" (( "(") (binary_expression "puVar26 + -0x30" (identifier "puVar26") (+ "+") (number_literal "-0x30")) () ")"))))) (; ";")) (do_statement "do {\n      iVar10 = iVar22 >> 2;\n      uVar14 = iVar22 << 3;\n      puVar11 = (undefined1 *)(uVar9 + iVar22);\n      iVar22 = iVar22 + 1;\n      *puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));\n    } while (iVar22 != 0x10);" (do "do") (compound_statement "{\n      iVar10 = iVar22 >> 2;\n      uVar14 = iVar22 << 3;\n      puVar11 = (undefined1 *)(uVar9 + iVar22);\n      iVar22 = iVar22 + 1;\n      *puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));\n    }" ({ "{") (expression_statement "iVar10 = iVar22 >> 2;" (assignment_expression "iVar10 = iVar22 >> 2" (identifier "iVar10") (= "=") (binary_expression "iVar22 >> 2" (identifier "iVar22") (>> ">>") (number_literal "2"))) (; ";")) (expression_statement "uVar14 = iVar22 << 3;" (assignment_expression "uVar14 = iVar22 << 3" (identifier "uVar14") (= "=") (binary_expression "iVar22 << 3" (identifier "iVar22") (<< "<<") (number_literal "3"))) (; ";")) (expression_statement "puVar11 = (undefined1 *)(uVar9 + iVar22);" (assignment_expression "puVar11 = (undefined1 *)(uVar9 + iVar22)" (identifier "puVar11") (= "=") (cast_expression "(undefined1 *)(uVar9 + iVar22)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar9 + iVar22)" (( "(") (binary_expression "uVar9 + iVar22" (identifier "uVar9") (+ "+") (identifier "iVar22")) () ")")))) (; ";")) (expression_statement "iVar22 = iVar22 + 1;" (assignment_expression "iVar22 = iVar22 + 1" (identifier "iVar22") (= "=") (binary_expression "iVar22 + 1" (identifier "iVar22") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));" (assignment_expression "*puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f))" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (cast_expression "(char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f))" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f))" (( "(") (binary_expression "*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f)" (pointer_expression "*(uint *)(puVar26 + iVar10 * 4 + -0x28)" (* "*") (cast_expression "(uint *)(puVar26 + iVar10 * 4 + -0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + iVar10 * 4 + -0x28)" (( "(") (binary_expression "puVar26 + iVar10 * 4 + -0x28" (binary_expression "puVar26 + iVar10 * 4" (identifier "puVar26") (+ "+") (binary_expression "iVar10 * 4" (identifier "iVar10") (* "*") (number_literal "4"))) (+ "+") (number_literal "-0x28")) () ")")))) (>> ">>") (parenthesized_expression "(uVar14 & 0x1f)" (( "(") (binary_expression "uVar14 & 0x1f" (identifier "uVar14") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar22 != 0x10)" (( "(") (binary_expression "iVar22 != 0x10" (identifier "iVar22") (!= "!=") (number_literal "0x10")) () ")")) (; ";")) (if_statement "if (*(int *)(puVar26 + -0x14) == *piVar19) break;" (if "if") (parenthesized_expression "(*(int *)(puVar26 + -0x14) == *piVar19)" (( "(") (binary_expression "*(int *)(puVar26 + -0x14) == *piVar19" (pointer_expression "*(int *)(puVar26 + -0x14)" (* "*") (cast_expression "(int *)(puVar26 + -0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0x14)" (( "(") (binary_expression "puVar26 + -0x14" (identifier "puVar26") (+ "+") (number_literal "-0x14")) () ")")))) (== "==") (pointer_expression "*piVar19" (* "*") (identifier "piVar19"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pcVar23 = *(code **)(iVar25 + -0x74e0);" (assignment_expression "pcVar23 = *(code **)(iVar25 + -0x74e0)" (identifier "pcVar23") (= "=") (pointer_expression "*(code **)(iVar25 + -0x74e0)" (* "*") (cast_expression "(code **)(iVar25 + -0x74e0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar25 + -0x74e0)" (( "(") (binary_expression "iVar25 + -0x74e0" (identifier "iVar25") (+ "+") (number_literal "-0x74e0")) () ")"))))) (; ";")) (expression_statement "pcVar28 = (code *)0x5ad34;" (assignment_expression "pcVar28 = (code *)0x5ad34" (identifier "pcVar28") (= "=") (cast_expression "(code *)0x5ad34" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x5ad34"))) (; ";")) (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" (( "(") (pointer_expression "*pcVar23" (* "*") (identifier "pcVar23")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar24 = (undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488);" (assignment_expression "puVar24 = (undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488)" (identifier "puVar24") (= "=") (cast_expression "(undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar23 + 0x55b2c) + -0x5488)" (( "(") (binary_expression "*(int *)(pcVar23 + 0x55b2c) + -0x5488" (pointer_expression "*(int *)(pcVar23 + 0x55b2c)" (* "*") (cast_expression "(int *)(pcVar23 + 0x55b2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar23 + 0x55b2c)" (( "(") (binary_expression "pcVar23 + 0x55b2c" (identifier "pcVar23") (+ "+") (number_literal "0x55b2c")) () ")")))) (+ "+") (number_literal "-0x5488")) () ")")))) (; ";")) (expression_statement "puVar11 = puVar11 + 0x114;" (assignment_expression "puVar11 = puVar11 + 0x114" (identifier "puVar11") (= "=") (binary_expression "puVar11 + 0x114" (identifier "puVar11") (+ "+") (number_literal "0x114"))) (; ";")) (expression_statement "uVar9 = uVar14;" (assignment_expression "uVar9 = uVar14" (identifier "uVar9") (= "=") (identifier "uVar14")) (; ";")) (expression_statement "puVar30 = puVar12;" (assignment_expression "puVar30 = puVar12" (identifier "puVar30") (= "=") (identifier "puVar12")) (; ";")) (expression_statement "puVar26 = puVar26 + -0x40;" (assignment_expression "puVar26 = puVar26 + -0x40" (identifier "puVar26") (= "=") (binary_expression "puVar26 + -0x40" (identifier "puVar26") (+ "+") (number_literal "-0x40"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *ctx,type_2 *chunk,int var_2)

{
  type_3 var_5;
  type_3 var_7;
  type_4 lVar3;
  type_3 var_9;
  type_4 lVar5;
  type_4 lVar6;
  type_4 lVar7;
  type_4 lVar8;
  int var_25;
  type_5 var_3;
  type_1 *ctx_00;
  type_6 *r;
  type_7 *var_30;
  type_2 *mac;
  type_5 var_12;
  type_5 var_18;
  type_6 *pbVar14;
  type_5 var_21;
  type_5 var_22;
  type_5 var_14;
  int *piVar18;
  type_5 var_15;
  type_5 var_17;
  int var_26;
  type_8 *var_27;
  type_5 var_20;
  type_9 *pcVar24;
  type_5 var_6;
  type_6 bStack_b8;
  int var_28;
  type_4 lStack_a0;
  type_5 uStack_98;
  type_9 *pcStack_94;
  type_5 var_11;
  type_5 var_24;
  type_10 var_10;
  type_5 var_16;
  int var_23;
  int var_19;
  type_5 var_13;
  type_6 c;
  
  pbVar14 = &c;
  c.w[0] = 0;
  c.w[1] = 0;
  c.w[2] = 0;
  c.w[3] = 0;
  c.w[4] = 0;
  var_25 = *(int *)PTR___stack_chk_guard_000b0c9c;
  var_3 = var_2;
  piVar18 = (int *)PTR___stack_chk_guard_000b0c9c;
  var_1(pbVar14,chunk,var_2);
  if (var_2 < 0) {
    var_2 = var_2 + 3;
  }
  c.w[var_2 >> 2] = 1 << ((var_3 & 3) << 3) | c.w[var_2 >> 2];
  var_4(pbVar14,pbVar14,&ctx->h);
  var_18 = (ctx->r).w[0];
  var_15 = (ctx->r).w[1];
  var_17 = (ctx->r).w[2];
  var_20 = (ctx->r).w[3];
  var_26 = *piVar18;
  var_5 = ((type_3)c.w[0] * (type_3)var_18 >> 0x20) + (type_3)c.w[0] * (type_3)var_15;
  var_7 = (var_5 >> 0x20) + (type_3)c.w[0] * (type_3)var_17;
  lVar3 = (var_5 & 0xffffffff) + (type_3)var_18 * (type_3)c.w[1];
  var_6 = (type_5)((type_3)lVar3 >> 0x20);
  var_3 = (int)var_7 + var_6;
  var_5 = (var_7 >> 0x20) + (type_3)c.w[0] * (type_3)var_20;
  var_7 = (type_3)var_8(var_3 < var_6,var_3) + (type_3)var_15 * (type_3)c.w[1];
  var_9 = (var_5 >> 0x20) + (type_3)c.w[0] * (type_3)(ctx->r).w[4];
  var_5 = (var_5 & 0xffffffff) + (type_3)var_17 * (type_3)c.w[1] + (var_7 >> 0x20);
  lVar5 = (var_7 & 0xffffffff) + (type_3)var_18 * (type_3)c.w[2];
  var_6 = (type_5)((type_3)lVar5 >> 0x20);
  var_3 = (int)var_5 + var_6;
  var_7 = (var_9 & 0xffffffff) + (type_3)var_20 * (type_3)c.w[1] + (var_5 >> 0x20);
  var_5 = (type_3)var_8(var_3 < var_6,var_3) + (type_3)var_15 * (type_3)c.w[2];
  var_10 = var_5 & 0xffffffff;
  var_9 = (var_9 >> 0x20) + (type_3)(ctx->r).w[4] * (type_3)c.w[1] + (var_7 >> 0x20);
  lVar6 = var_10 + (type_3)var_18 * (type_3)c.w[3];
  var_5 = (var_7 & 0xffffffff) + (type_3)var_17 * (type_3)c.w[2] + (var_5 >> 0x20);
  var_11 = (type_5)((type_3)lVar6 >> 0x20);
  var_3 = (int)var_5 + var_11;
  var_7 = (var_9 & 0xffffffff) + (type_3)var_20 * (type_3)c.w[2] + (var_5 >> 0x20);
  var_5 = (type_3)var_8(var_3 < var_11,var_3) + (type_3)var_15 * (type_3)c.w[3];
  var_10 = var_5 & 0xffffffff;
  var_5 = (var_7 & 0xffffffff) + (type_3)var_17 * (type_3)c.w[3] + (var_5 >> 0x20);
  var_7 = (var_9 >> 0x20) + (type_3)(ctx->r).w[4] * (type_3)c.w[2] + (var_7 >> 0x20);
  lVar7 = var_10 + (type_3)var_18 * (type_3)c.w[4];
  var_6 = (type_5)((type_3)lVar7 >> 0x20);
  var_3 = (int)var_5 + var_6;
  var_9 = (var_7 & 0xffffffff) + (type_3)var_20 * (type_3)c.w[3] + (var_5 >> 0x20);
  var_14 = (type_5)(var_9 >> 0x20);
  var_5 = (type_3)var_8(var_3 < var_6,var_3) + (type_3)var_15 * (type_3)c.w[4];
  var_13 = (type_5)var_5;
  lVar8 = (var_7 >> 0x20) + (type_3)(ctx->r).w[4] * (type_3)c.w[3];
  var_10._4_4_ = (type_5)lVar7;
  var_12 = (var_10._4_4_ >> 2) * 4;
  var_15 = var_12 + (var_10._4_4_ >> 2 | var_13 << 0x1e);
  var_3 = var_14 + (int)lVar8;
  lVar7 = (var_9 & 0xffffffff) + (type_3)var_17 * (type_3)c.w[4] + (var_5 >> 0x20);
  var_21 = (type_5)lVar7;
  var_6 = (type_5)((type_3)lVar7 >> 0x20);
  var_16 = (type_5)((type_3)c.w[0] * (type_3)var_18);
  var_17 = var_15 + var_16;
  lVar7 = (type_3)var_3 + (type_3)var_20 * (type_3)c.w[4];
  var_18 = (type_5)(var_17 < var_16);
  var_23 = (int)lVar5;
  var_19 = (int)lVar3;
  var_20 = var_6 + (int)lVar7;
  var_22 = var_18 + var_19;
  var_14 = c.w[4] * (ctx->r).w[4] + (type_5)(var_3 < var_14) + (int)((type_3)lVar8 >> 0x20) +
           (type_5)(var_20 < var_6) + (int)((type_3)lVar7 >> 0x20);
  lVar3 = (type_3)((type_5)(var_15 < var_12) + (var_13 & 3)) +
          (type_3)(var_13 >> 2 | var_21 * 0x40000000) * 5;
  uStack_98 = (type_5)((type_3)lVar3 >> 0x20);
  var_15 = var_22 + (int)lVar3;
  var_6 = (type_5)(var_15 < var_22) + (type_5)(var_22 < var_18);
  var_24 = (type_5)lVar6;
  var_5 = (type_3)uStack_98 + (type_3)(var_21 >> 2 | var_20 * 0x40000000) * 5;
  var_3 = (var_14 >> 4) * 0x19;
  var_17 = var_3 + var_17;
  var_18 = var_6 + (int)var_5;
  (ctx->h).w[0] = var_17;
  var_3 = (type_5)(var_17 < var_3);
  var_15 = var_3 + var_15;
  (ctx->h).w[1] = var_15;
  var_17 = (type_5)(var_15 < var_3);
  lStack_a0 = (var_5 >> 0x20) + (type_3)(var_20 >> 2 | var_14 * 0x40000000) * 5;
  var_15 = (type_5)(var_18 + var_23 < var_18) + (type_5)(var_18 < var_6);
  var_3 = var_17 + var_18 + var_23;
  (ctx->h).w[2] = var_3;
  var_6 = (type_5)(var_3 < var_17);
  var_18 = (int)lStack_a0 + var_24;
  var_3 = var_15 + var_18;
  var_17 = (type_5)(var_18 < var_24);
  var_18 = var_6 + var_3;
  (ctx->h).w[3] = var_18;
  ctx_00 = (type_1 *)
           ((var_14 * 0x10000000 >> 0x1e) * 5 + (var_10._4_4_ & 3) +
            (int)((type_3)lStack_a0 >> 0x20) + (var_3 < var_15) + var_17 +
           (type_5)(var_18 < var_6));
  (ctx->h).w[4] = (type_11)ctx_00;
  if (var_25 == var_26) {
    return;
  }
  pcVar24 = var_29;
  var_27 = PTR___stack_chk_fail_000b0c70;
  (*(type_9 *)PTR___stack_chk_fail_000b0c70)();
  piVar18 = *(int **)(var_27 + 0x56124);
  var_28 = *piVar18;
  pcStack_94 = pcVar24;
  if (ctx_00->bufferIndex != 0) {
    function_1(ctx_00,ctx_00->buffer,ctx_00->bufferIndex);
  }
  r = &bStack_b8;
  bStack_b8.w[0] = 0;
  bStack_b8.w[1] = 0;
  bStack_b8.w[2] = 0;
  bStack_b8.w[3] = 0;
  bStack_b8.w[4] = 0;
  pbVar14 = r;
  var_1(r,ctx_00,0x10);
  var_18 = (ctx_00->h).w[4];
  var_3 = (var_18 >> 2) * 5;
  var_6 = (ctx_00->h).w[0] + var_3;
  var_15 = (type_5)(var_6 < var_3);
  var_22 = var_15 + (ctx_00->h).w[1];
  var_3 = (type_5)(var_6 + 5 < var_6);
  var_15 = (type_5)(var_22 < var_15);
  var_21 = var_15 + (ctx_00->h).w[2];
  var_12 = (type_5)(var_3 + var_22 < var_3);
  var_3 = (type_5)(var_21 < var_15);
  var_20 = var_3 + (ctx_00->h).w[3];
  var_15 = (type_5)(var_12 + var_21 < var_12);
  var_25 = (var_18 & 3) + (type_5)(var_20 < var_3);
  var_3 = (var_25 + (type_5)(var_15 + var_20 < var_15) >> 2) * 5;
  var_6 = var_3 + var_6;
  var_3 = (type_5)(var_6 < var_3);
  (ctx_00->h).w[0] = var_6;
  var_22 = var_3 + var_22;
  var_3 = (type_5)(var_22 < var_3);
  (ctx_00->h).w[1] = var_22;
  var_21 = var_3 + var_21;
  var_3 = (type_5)(var_21 < var_3);
  (ctx_00->h).w[2] = var_21;
  var_20 = var_3 + var_20;
  (ctx_00->h).w[3] = var_20;
  (ctx_00->h).w[4] = var_25 + (type_5)(var_20 < var_3) & 3;
  var_4(r,pbVar14,&ctx_00->h);
  var_25 = 0;
  do {
    var_26 = var_25 >> 2;
    mac = (type_2 *)(var_25 << 3);
    var_30 = (type_7 *)(var_17 + var_25);
    var_25 = var_25 + 1;
    *var_30 = (char)(bStack_b8.w[var_26] >> ((type_5)mac & 0x1f));
  } while (var_25 != 0x10);
  if (var_28 == *piVar18) {
    return;
  }
  (**(type_9 **)(var_27 + 0x560f8))();
  var_29((type_1 *)(var_30 + 0x114),mac);
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) right: (binary_expression left: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) right: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (identifier)))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (parenthesized_expression (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (identifier)))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_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: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (identifier)))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_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: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) right: (parenthesized_expression (binary_expression left: (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: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (identifier)))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (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: (binary_expression left: (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier))) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) right: (identifier)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))))) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (return_statement))))

void MASKED(int param_1,undefined4 param_2,uint param_3)

{
  ulonglong uVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  longlong lVar6;
  longlong lVar7;
  longlong lVar8;
  uint uVar9;
  int iVar10;
  undefined1 *puVar11;
  undefined1 *puVar12;
  uint uVar13;
  uint uVar14;
  uint *puVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  int *piVar19;
  uint uVar20;
  uint uVar21;
  int iVar22;
  code *pcVar23;
  undefined *puVar24;
  int iVar25;
  undefined1 *puVar26;
  uint uVar27;
  code *pcVar28;
  uint uVar29;
  undefined1 *puVar30;
  undefined1 auStack_90 [16];
  uint local_78;
  uint local_74;
  undefined8 local_70;
  uint local_64;
  int local_5c;
  int local_54;
  uint local_4c;
  uint local_40 [6];
  
  puVar15 = local_40;
  local_40[0] = 0;
  local_40[1] = 0;
  local_40[2] = 0;
  local_40[3] = 0;
  local_40[4] = 0;
  local_40[5] = *(uint *)PTR___stack_chk_guard_000b0c9c;
  uVar9 = param_3;
  piVar19 = (int *)PTR___stack_chk_guard_000b0c9c;
  FUN_0005a4e8(puVar15);
  if ((int)param_3 < 0) {
    param_3 = param_3 + 3;
  }
  local_40[(int)param_3 >> 2] = 1 << ((uVar9 & 3) << 3) | local_40[(int)param_3 >> 2];
  FUN_0005a298(puVar15,puVar15,param_1 + 0x24);
  uVar14 = *(uint *)(param_1 + 0x10);
  uVar20 = *(uint *)(param_1 + 0x14);
  uVar21 = *(uint *)(param_1 + 0x18);
  uVar27 = *(uint *)(param_1 + 0x1c);
  iVar22 = *piVar19;
  uVar1 = ((ulonglong)local_40[0] * (ulonglong)uVar14 >> 0x20) +
          (ulonglong)local_40[0] * (ulonglong)uVar20;
  uVar2 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar21;
  lVar3 = (uVar1 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[1];
  uVar29 = (uint)((ulonglong)lVar3 >> 0x20);
  uVar9 = (int)uVar2 + uVar29;
  uVar1 = (uVar2 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)uVar27;
  uVar2 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[1];
  uVar4 = (uVar1 >> 0x20) + (ulonglong)local_40[0] * (ulonglong)*(uint *)(param_1 + 0x20);
  uVar1 = (uVar1 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[1] + (uVar2 >> 0x20);
  lVar5 = (uVar2 & 0xffffffff) + (ulonglong)uVar14 * (ulonglong)local_40[2];
  uVar29 = (uint)((ulonglong)lVar5 >> 0x20);
  uVar9 = (int)uVar1 + uVar29;
  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[1] + (uVar1 >> 0x20);
  uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[2];
  local_70 = uVar1 & 0xffffffff;
  uVar4 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[1] +
          (uVar2 >> 0x20);
  lVar6 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[3];
  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[2] + (uVar1 >> 0x20);
  local_78 = (uint)((ulonglong)lVar6 >> 0x20);
  uVar9 = (int)uVar1 + local_78;
  uVar2 = (uVar4 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[2] + (uVar1 >> 0x20);
  uVar1 = (ulonglong)CONCAT14(uVar9 < local_78,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[3];
  local_70 = uVar1 & 0xffffffff;
  uVar1 = (uVar2 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[3] + (uVar1 >> 0x20);
  uVar2 = (uVar4 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[2] +
          (uVar2 >> 0x20);
  lVar7 = local_70 + (ulonglong)uVar14 * (ulonglong)local_40[4];
  uVar29 = (uint)((ulonglong)lVar7 >> 0x20);
  uVar9 = (int)uVar1 + uVar29;
  uVar4 = (uVar2 & 0xffffffff) + (ulonglong)uVar27 * (ulonglong)local_40[3] + (uVar1 >> 0x20);
  uVar18 = (uint)(uVar4 >> 0x20);
  uVar1 = (ulonglong)CONCAT14(uVar9 < uVar29,uVar9) + (ulonglong)uVar20 * (ulonglong)local_40[4];
  local_4c = (uint)uVar1;
  lVar8 = (uVar2 >> 0x20) + (ulonglong)*(uint *)(param_1 + 0x20) * (ulonglong)local_40[3];
  local_70._4_4_ = (uint)lVar7;
  uVar13 = (local_70._4_4_ >> 2) * 4;
  uVar20 = uVar13 + (local_70._4_4_ >> 2 | local_4c << 0x1e);
  uVar9 = uVar18 + (int)lVar8;
  lVar7 = (uVar4 & 0xffffffff) + (ulonglong)uVar21 * (ulonglong)local_40[4] + (uVar1 >> 0x20);
  uVar16 = (uint)lVar7;
  uVar29 = (uint)((ulonglong)lVar7 >> 0x20);
  local_64 = (uint)((ulonglong)local_40[0] * (ulonglong)uVar14);
  uVar21 = uVar20 + local_64;
  lVar7 = (ulonglong)uVar9 + (ulonglong)uVar27 * (ulonglong)local_40[4];
  uVar14 = (uint)(uVar21 < local_64);
  local_5c = (int)lVar5;
  local_54 = (int)lVar3;
  uVar27 = uVar29 + (int)lVar7;
  uVar17 = uVar14 + local_54;
  uVar18 = local_40[4] * *(int *)(param_1 + 0x20) +
           (uint)(uVar9 < uVar18) + (int)((ulonglong)lVar8 >> 0x20) +
           (uint)(uVar27 < uVar29) + (int)((ulonglong)lVar7 >> 0x20);
  lVar3 = (ulonglong)((uint)(uVar20 < uVar13) + (local_4c & 3)) +
          (ulonglong)(local_4c >> 2 | uVar16 * 0x40000000) * 5;
  puVar30 = (undefined1 *)((ulonglong)lVar3 >> 0x20);
  uVar20 = uVar17 + (int)lVar3;
  uVar29 = (uint)(uVar20 < uVar17) + (uint)(uVar17 < uVar14);
  local_74 = (uint)lVar6;
  uVar1 = ZEXT48(puVar30) + (ulonglong)(uVar16 >> 2 | uVar27 * 0x40000000) * 5;
  uVar9 = (uVar18 >> 4) * 0x19;
  uVar21 = uVar9 + uVar21;
  uVar14 = uVar29 + (int)uVar1;
  *(uint *)(param_1 + 0x24) = uVar21;
  uVar9 = (uint)(uVar21 < uVar9);
  uVar20 = uVar9 + uVar20;
  *(uint *)(param_1 + 0x28) = uVar20;
  uVar20 = (uint)(uVar20 < uVar9);
  lVar3 = (uVar1 >> 0x20) + (ulonglong)(uVar27 >> 2 | uVar18 * 0x40000000) * 5;
  uVar21 = (uint)(uVar14 + local_5c < uVar14) + (uint)(uVar14 < uVar29);
  uVar9 = uVar20 + uVar14 + local_5c;
  *(uint *)(param_1 + 0x2c) = uVar9;
  uVar29 = (uint)(uVar9 < uVar20);
  uVar9 = (int)lVar3 + local_74;
  uVar14 = uVar21 + uVar9;
  uVar9 = (uint)(uVar9 < local_74);
  uVar20 = uVar29 + uVar14;
  *(uint *)(param_1 + 0x30) = uVar20;
  puVar11 = (undefined1 *)
            ((uVar18 * 0x10000000 >> 0x1e) * 5 + (local_70._4_4_ & 3) +
             (int)((ulonglong)lVar3 >> 0x20) + (uVar14 < uVar21) + uVar9 + (uint)(uVar20 < uVar29));
  *(undefined1 **)(param_1 + 0x34) = puVar11;
  if (local_40[5] == iVar22) {
    return;
  }
  pcVar28 = FUN_0005ab78;
  puVar24 = PTR___stack_chk_fail_000b0c70;
  (*(code *)PTR___stack_chk_fail_000b0c70)();
  puVar26 = auStack_90;
  while( true ) {
    puVar12 = puVar11;
    iVar22 = *(int *)(puVar12 + 0x48);
    *(int *)(puVar26 + -0xc) = (int)lVar3;
    piVar19 = *(int **)(puVar24 + 0x56124);
    *(undefined **)(puVar26 + -0x30) = puVar24 + 0x5d5d8;
    *(undefined1 **)(puVar26 + -8) = puVar30;
    *(int *)(puVar26 + -0x10) = (int)((ulonglong)lVar3 >> 0x20);
    lVar3 = CONCAT44(uVar9,piVar19);
    *(code **)(puVar26 + -4) = pcVar28;
    *(int *)(puVar26 + -0x14) = *piVar19;
    if (iVar22 != 0) {
      MASKED();
    }
    *(undefined4 *)(puVar26 + -0x28) = 0;
    *(undefined4 *)(puVar26 + -0x24) = 0;
    *(undefined4 *)(puVar26 + -0x20) = 0;
    *(undefined4 *)(puVar26 + -0x1c) = 0;
    *(undefined4 *)(puVar26 + -0x18) = 0;
    FUN_0005a4e8(puVar26 + -0x28,puVar12,0x10);
    uVar14 = (*(uint *)(puVar12 + 0x34) >> 2) * 5;
    uVar21 = *(int *)(puVar12 + 0x24) + uVar14;
    uVar20 = (uint)(uVar21 < uVar14);
    uVar16 = uVar20 + *(int *)(puVar12 + 0x28);
    uVar14 = (uint)(uVar21 + 5 < uVar21);
    uVar20 = (uint)(uVar16 < uVar20);
    uVar27 = uVar20 + *(int *)(puVar12 + 0x2c);
    uVar29 = (uint)(uVar14 + uVar16 < uVar14);
    uVar14 = (uint)(uVar27 < uVar20);
    uVar13 = uVar14 + *(int *)(puVar12 + 0x30);
    uVar20 = (uint)(uVar29 + uVar27 < uVar29);
    iVar22 = (*(uint *)(puVar12 + 0x34) & 3) + (uint)(uVar13 < uVar14);
    uVar14 = (iVar22 + (uint)(uVar20 + uVar13 < uVar20) >> 2) * 5;
    uVar21 = uVar14 + uVar21;
    uVar14 = (uint)(uVar21 < uVar14);
    *(uint *)(puVar12 + 0x24) = uVar21;
    uVar16 = uVar14 + uVar16;
    uVar14 = (uint)(uVar16 < uVar14);
    *(uint *)(puVar12 + 0x28) = uVar16;
    uVar27 = uVar14 + uVar27;
    uVar14 = (uint)(uVar27 < uVar14);
    *(uint *)(puVar12 + 0x2c) = uVar27;
    uVar13 = uVar14 + uVar13;
    *(uint *)(puVar12 + 0x30) = uVar13;
    *(uint *)(puVar12 + 0x34) = iVar22 + (uint)(uVar13 < uVar14) & 3;
    FUN_0005a298();
    iVar22 = 0;
    iVar25 = *(int *)(puVar26 + -0x30);
    do {
      iVar10 = iVar22 >> 2;
      uVar14 = iVar22 << 3;
      puVar11 = (undefined1 *)(uVar9 + iVar22);
      iVar22 = iVar22 + 1;
      *puVar11 = (char)(*(uint *)(puVar26 + iVar10 * 4 + -0x28) >> (uVar14 & 0x1f));
    } while (iVar22 != 0x10);
    if (*(int *)(puVar26 + -0x14) == *piVar19) break;
    pcVar23 = *(code **)(iVar25 + -0x74e0);
    pcVar28 = (code *)0x5ad34;
    (*pcVar23)();
    puVar24 = (undefined *)(*(int *)(pcVar23 + 0x55b2c) + -0x5488);
    puVar11 = puVar11 + 0x114;
    uVar9 = uVar14;
    puVar30 = puVar12;
    puVar26 = puVar26 + -0x40;
  }
  return;
}

