
void ssh_pkt_adduint32(Packet *pkt,ulong value)

{
  uchar x [4];
  
  x = (uchar  [4])value;
                    /* WARNING: Subroutine does not return */
  ssh_pkt_adddata(pkt,x,4);
}



int FUN_0004b63c(int *param_1,int param_2)

{
  int iVar1;
  uint *puVar2;
  uint uVar3;
  undefined1 uVar5;
  undefined4 uVar4;
  undefined4 extraout_v1;
  undefined1 *puVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  uint uVar11;
  int iVar12;
  int *piVar13;
  uint uVar14;
  int *piVar15;
  int *piVar16;
  int *piVar17;
  int *piVar18;
  undefined *puVar19;
  code *pcVar20;
  code *pcVar21;
  int iStack_15c;
  int iStack_158;
  int aiStack_154 [12];
  int iStack_124;
  int aiStack_120 [4];
  undefined4 uStack_110;
  int iStack_10c;
  int *piStack_108;
  int *piStack_104;
  uint *puStack_100;
  code *pcStack_fc;
  int *piStack_e8;
  undefined4 uStack_e4;
  int iStack_e0;
  int *piStack_dc;
  undefined4 uStack_d8;
  undefined4 uStack_d4;
  undefined4 uStack_d0;
  code *pcStack_c8;
  int iStack_bc;
  int iStack_b8;
  int aiStack_b4 [12];
  int iStack_84;
  int *piStack_80;
  int *piStack_7c;
  int *piStack_78;
  int local_10;
  int local_c;
  
  puVar19 = PTR___stack_chk_guard_00112630;
  piVar15 = &local_10;
  local_c = *(int *)PTR___stack_chk_guard_00112630;
  local_10 = param_2;
  FUN_0004b364(param_1,piVar15,4);
  if (local_c == *(int *)puVar19) {
    return *(int *)puVar19;
  }
  puVar19 = PTR___stack_chk_fail_001122c8;
  (*(code *)PTR___stack_chk_fail_001122c8)();
  piVar13 = *(int **)(puVar19 + 0xc6f84);
  iVar1 = *piVar13;
  FUN_0004b364();
  pcVar20 = *(code **)(puVar19 + 0xc6e88);
  param_1[6] = *param_1;
  puVar2 = (uint *)(*pcVar20)(piVar15);
  piVar17 = param_1;
  piVar16 = piVar15;
  FUN_0004b594();
  if (iVar1 == *piVar13) {
    return *piVar13;
  }
  pcVar21 = *(code **)(puVar19 + 0xc6c1c);
  (*pcVar21)();
  pcVar20 = pcVar21 + 0xcdb48;
  piVar18 = *(int **)(pcVar21 + 0xc6ec8);
  iStack_84 = *piVar18;
  iVar1 = *piVar16;
  pcStack_c8 = pcVar20;
  piStack_80 = param_1;
  piStack_7c = piVar13;
  piStack_78 = piVar15;
  if (piVar17[6] != 0) {
    iVar10 = piVar17[0x93];
    uVar3 = piVar16[2];
    piVar16[6] = 0;
    *piVar16 = iVar1 - (piVar16[5] - piVar16[4]);
    if (iVar10 == 0) {
LAB_0004b804:
      pcVar21 = *(code **)(pcVar20 + -0x7efc);
      if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;
LAB_0004b818:
      if (uVar3 == 0x48) {
        pcVar21 = *(code **)(pcVar20 + -0x7efc);
        goto LAB_0004ba3c;
      }
      pcVar20 = *(code **)(pcVar20 + -0x7efc);
      iVar1 = iVar10;
joined_r0x0004b824:
      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {
        piVar16[6] = 0;
        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);
        aiStack_b4[iVar1 * 3] = piVar16[6];
        aiStack_b4[iVar1 * 3 + 2] = 1;
        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);
        if (iStack_bc != 0) {
          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];
          iVar1 = iVar1 + 1;
        }
      }
    }
    else {
      if (uVar3 == 0x10) {
        aiStack_b4[0] = 4;
      }
      else {
        iVar10 = 0;
        if (uVar3 != 0x17) goto LAB_0004b804;
        FUN_00047058(piVar16);
        aiStack_b4[0] = piVar16[6] + 4;
      }
      aiStack_b4[2] = 2;
      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);
      pcVar20 = pcStack_c8;
      if (iStack_bc == 0) {
        uVar3 = piVar16[2];
        iVar10 = 0;
        goto LAB_0004b804;
      }
      uVar3 = piVar16[2];
      iVar10 = 1;
      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;
      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);
LAB_0004ba3c:
      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);
      if (iVar1 == 0) {
        uVar3 = piVar16[2];
        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);
        iVar1 = iVar10;
        goto joined_r0x0004b824;
      }
      iVar7 = *piVar16;
      iVar1 = iVar10 + 1;
      aiStack_b4[iVar10 * 3] = 0;
      aiStack_b4[iVar10 * 3 + 1] = iVar7;
      aiStack_b4[iVar10 * 3 + 2] = 1;
    }
    FUN_00049aac(*(undefined1 *)(piVar16[4] + 0xc));
    piStack_e8 = (int *)piVar16[5];
    piStack_dc = aiStack_b4;
    uStack_d0 = 0;
    uStack_d4 = 0;
    uStack_d8 = 0;
    uStack_e4 = extraout_v1;
    iStack_e0 = iVar1;
    log_packet(piVar17[6],1);
    pcVar20 = pcStack_c8;
    iVar1 = (piVar16[5] - piVar16[4]) + *piVar16;
    *piVar16 = iVar1;
  }
  if (piVar17[0xf] != 0) {
    piStack_e8 = &iStack_b8;
    (**(code **)(pcVar20 + -0x7af0))(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc);
    if (piVar16[7] < iStack_b8 + 2) {
      FUN_0004b2d8(piVar16);
    }
    (**(code **)(pcStack_c8 + -0x6d44))(piVar16[4] + 0xc,iStack_bc,iStack_b8);
    safefree(iStack_bc);
    pcVar20 = pcStack_c8;
    iVar1 = iStack_b8 + 0xc;
    *piVar16 = iVar1;
  }
  iVar10 = iVar1 + 4;
  if (piVar16[7] < iVar10) {
    FUN_0004b2d8(piVar16);
    iVar1 = *piVar16;
    iVar10 = iVar1 + 4;
    pcVar20 = pcStack_c8;
  }
  uVar14 = iVar1 - 8;
  uVar3 = uVar14 & 0x80000007;
  *piVar16 = iVar10;
  if ((int)uVar3 < 0) {
    uVar3 = (uVar3 - 1 | 0xfffffff8) + 1;
  }
  iVar1 = uVar14 - uVar3;
  piVar15 = (int *)0xc;
  iVar10 = iVar1 + 8;
  uVar11 = uVar3;
  do {
    uVar5 = (**(code **)(pcVar20 + -0x7af8))();
    puVar6 = (undefined1 *)(piVar16[4] + uVar11);
    uVar11 = uVar11 + 1;
    *puVar6 = uVar5;
    pcVar20 = pcStack_c8;
  } while (uVar11 != 0xc);
  iVar12 = uVar3 + 4;
  uVar4 = (**(code **)(pcStack_c8 + -0x7af4))(piVar16[4] + iVar12,iVar1 + 4);
  iVar7 = iVar10 + uVar3;
  *(char *)(piVar16[4] + iVar7) = (char)((uint)uVar4 >> 0x18);
  piVar13 = (int *)((int)uVar14 >> 8);
  *(char *)(piVar16[4] + iVar7 + 1) = (char)((uint)uVar4 >> 0x10);
  *(char *)(piVar16[4] + iVar7 + 2) = (char)((uint)uVar4 >> 8);
  *(char *)(piVar16[4] + iVar7 + 3) = (char)uVar4;
  *(char *)(piVar16[4] + uVar3) = (char)(uVar14 >> 0x18);
  *(char *)(piVar16[4] + uVar3 + 1) = (char)(uVar14 >> 0x10);
  *(char *)(piVar16[4] + uVar3 + 2) = (char)(uVar14 >> 8);
  *(char *)(piVar16[4] + uVar3 + 3) = (char)uVar14;
  if (piVar17[0x15] != 0) {
    piVar13 = (int *)(piVar16[4] + iVar12);
    (**(code **)(piVar17[0x15] + 0xc))(piVar17[0x16],piVar13,iVar10);
  }
  iVar7 = *piVar18;
  *puVar2 = uVar3;
  if (iStack_84 == iVar7) {
    return iVar1 + 0xc;
  }
  pcVar20 = *(code **)(pcStack_c8 + -0x6fe8);
  pcVar21 = FUN_0004bc54;
  iVar1 = iStack_84;
  (*pcVar20)();
  iVar7 = *piVar13;
  piVar16 = *(int **)(pcVar20 + 0xc69dc);
  uStack_110 = 0xc;
  iStack_124 = *piVar16;
  aiStack_120[1] = iVar12;
  aiStack_120[2] = uVar3;
  aiStack_120[3] = uVar14;
  iStack_10c = iVar10;
  piStack_108 = piVar17;
  piStack_104 = piVar18;
  puStack_100 = puVar2;
  pcStack_fc = pcVar21;
  if (*(int *)(iVar1 + 0x18) == 0) goto LAB_0004bd94;
  uVar3 = *(uint *)(iVar1 + 0x24c);
  iVar10 = piVar13[2];
  piVar13[6] = 0;
  *piVar13 = iVar7 - (piVar13[5] - piVar13[4]);
  if ((uVar3 != 0) && (uVar3 = 0, iVar10 - 0x5eU < 2)) {
    FUN_00047058(piVar13);
    if (piVar13[2] == 0x5f) {
      FUN_00047058();
    }
    aiStack_154[2] = 2;
    aiStack_154[0] = piVar13[6] + 4;
    FUN_00047b74(piVar13,&iStack_15c,&iStack_158);
    if (iStack_15c == 0) {
      iVar10 = piVar13[2];
      uVar3 = 0;
    }
    else {
      uVar3 = 1;
      iVar10 = piVar13[2];
    }
  }
  if (iVar10 == 0x32) {
    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);
    if (iVar10 != 0) {
      piVar17 = &iStack_158;
      piVar15 = &iStack_15c;
      piVar13[6] = 0;
      FUN_00047b74(piVar13,piVar15,piVar17);
      FUN_00047b74(piVar13,piVar15,piVar17);
      FUN_00047b74(piVar13,piVar15,piVar17);
      if (iStack_158 == 8) {
        iVar10 = (**(code **)(pcVar20 + 0xc67dc))
                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);
        if (iVar10 == 0) {
          iVar10 = piVar13[6];
          if (0 < *piVar13 - iVar10) {
            iVar10 = iVar10 + 1;
            piVar13[6] = iVar10;
          }
          aiStack_154[uVar3 * 3] = iVar10;
          aiStack_154[uVar3 * 3 + 2] = 1;
          FUN_00047b74(piVar13,piVar15,piVar17);
          if (iStack_15c != 0) {
            piVar18 = (int *)(uVar3 + 1);
            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];
            FUN_00047b74(piVar13,piVar15,piVar17);
            piVar15 = piVar18;
            if (iStack_15c != 0) {
              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];
            }
          }
        }
      }
      goto LAB_0004bd10;
    }
    iVar10 = piVar13[2];
  }
  if ((*(int *)(iVar1 + 0x188) == 4) && (iVar10 == 0x3d)) {
    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);
    if (iVar10 != 0) {
      piVar13[6] = 0;
      piVar17 = &iStack_158;
      FUN_00047058(piVar13);
      aiStack_154[uVar3 * 3] = piVar13[6];
      aiStack_154[uVar3 * 3 + 2] = 1;
      do {
        FUN_00047b74(piVar13,&iStack_15c,piVar17);
      } while (iStack_15c != 0);
      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];
      piVar15 = &iStack_15c;
      goto LAB_0004bd10;
    }
    iVar10 = piVar13[2];
  }
  if ((iVar10 == 0x62) &&
     (iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0))
  {
    piVar13[6] = 0;
    piVar17 = &iStack_158;
    piVar15 = &iStack_15c;
    FUN_00047058(piVar13);
    FUN_00047b74();
    if (iStack_158 == 7) {
      iVar7 = piVar13[6];
      iVar10 = iVar7 + 1;
      piVar18 = piVar15;
      if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;
      if (*piVar13 - iVar10 < 1) goto LAB_0004c510;
      piVar13[6] = iVar7 + 2;
      goto LAB_0004c1fc;
    }
  }
LAB_0004bd10:
  do {
    FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),
                 *(undefined1 *)(piVar13[4] + 5));
    log_packet(*(undefined4 *)(iVar1 + 0x18),1);
    iVar7 = (piVar13[5] - piVar13[4]) + *piVar13;
    *piVar13 = iVar7;
LAB_0004bd94:
    uVar3 = *(uint *)(iVar1 + 0xec);
    if (uVar3 == 0) {
      if (*(int *)(iVar1 + 0x88) != 0) {
        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))
                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,
                            &iStack_158);
        if (iVar10 == 0) {
          iVar7 = *piVar13;
        }
        else {
          *piVar13 = 5;
          FUN_0004b364(piVar13,iStack_15c,iStack_158);
          safefree(iStack_15c);
          iVar7 = *piVar13;
        }
      }
      if (*(int *)(iVar1 + 0x60) == 0) {
        iVar10 = 8;
      }
      else {
        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);
        iVar10 = 8;
        if (7 < iVar12) {
          iVar10 = iVar12;
        }
      }
      iVar12 = *(int *)(iVar1 + 0x70);
      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {
        iVar8 = piVar13[1];
        iVar9 = iVar7;
        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;
LAB_0004be1c:
        iVar8 = iVar8 - iVar7;
      }
      else {
        iVar8 = piVar13[1];
        iVar9 = iVar7 + -4;
        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;
LAB_0004c04c:
        iVar8 = 4;
      }
      if (iVar10 == 0) {
        trap(7);
      }
      if (iVar10 == 0) {
        trap(7);
      }
      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;
      if (0xff < (int)uVar14) {
        iVar1 = (**(code **)(pcVar20 + 0xc62fc))
                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,
                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,
                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);
        return iVar1;
      }
      piVar15 = (int *)0x0;
      if (iVar12 != 0) {
        piVar15 = *(int **)(iVar12 + 0x2c);
      }
      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {
        FUN_0004b2d8(piVar13);
      }
      *(char *)(piVar13[4] + 4) = (char)uVar14;
      uVar11 = 0;
      if (0 < (int)uVar14) {
        do {
          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();
          iVar10 = piVar13[4] + uVar11;
          uVar11 = uVar11 + 1;
          *(undefined1 *)(iVar10 + *piVar13) = uVar5;
          uVar3 = uVar11;
        } while (uVar14 != uVar11);
      }
      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);
      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);
      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);
      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);
      *(char *)(piVar13[4] + 3) = (char)piVar17;
      iVar10 = *(int *)(iVar1 + 0x60);
      if (iVar10 == 0) {
        iVar7 = *(int *)(iVar1 + 0x70);
        iVar12 = piVar13[4];
        if (iVar7 != 0) {
          iVar9 = uVar14 + *piVar13;
          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;
LAB_0004c100:
          pcVar21 = *(code **)(iVar7 + 0xc);
LAB_0004c104:
          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));
          iVar12 = piVar13[4];
        }
      }
      else {
        iVar12 = piVar13[4];
        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {
          iVar7 = *(int *)(iVar1 + 0x70);
          if (iVar7 != 0) {
            iVar9 = uVar14 + *piVar13;
            if (*(int *)(iVar1 + 0x78) != 0) {
LAB_0004c0dc:
              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);
              iVar12 = piVar13[4];
              iVar7 = *(int *)(iVar1 + 0x70);
              iVar9 = uVar14 + *piVar13;
              goto LAB_0004c100;
            }
            goto LAB_0004bfa4;
          }
        }
        else {
          (**(code **)(iVar10 + 0x18))
                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));
          iVar7 = *(int *)(iVar1 + 0x70);
          if (iVar7 != 0) {
            iVar12 = piVar13[4];
            iVar9 = uVar14 + *piVar13;
            if (*(int *)(iVar1 + 0x78) != 0) {
              iVar10 = *(int *)(iVar1 + 0x60);
              if (iVar10 != 0) goto LAB_0004c0dc;
              pcVar21 = *(code **)(iVar7 + 0xc);
              goto LAB_0004c104;
            }
LAB_0004bfa4:
            (**(code **)(iVar7 + 0xc))
                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));
          }
          iVar10 = *(int *)(iVar1 + 0x60);
          iVar12 = piVar13[4];
          if (iVar10 == 0) goto LAB_0004bfe0;
        }
        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);
        iVar12 = piVar13[4];
      }
LAB_0004bfe0:
      iVar7 = *piVar13;
      iVar10 = uVar14 + iVar7 + (int)piVar15;
      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;
      piVar13[8] = uVar14 + iVar7;
      piVar13[5] = iVar12;
    }
    else {
      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);
      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);
      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);
      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;
      iVar7 = *(int *)(iVar1 + 0x1ac);
      iVar10 = *piVar13 + -1;
      piVar13[5] = piVar13[4] + 1;
      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;
    }
    if (iStack_124 == *piVar16) {
      return iVar10;
    }
    iVar10 = iStack_124;
    (**(code **)(pcVar20 + 0xc6674))();
LAB_0004c510:
    piVar13[6] = iVar10;
    piVar18 = piVar15;
LAB_0004c1fc:
    FUN_00047b74(piVar13,piVar18,piVar17);
    iVar10 = piVar13[6];
    piVar15 = aiStack_120 + uVar3 * 3;
    aiStack_154[uVar3 * 3 + 2] = 1;
    aiStack_154[uVar3 * 3] = iVar10;
    FUN_00047b74(piVar13,piVar18,piVar17);
    if (iStack_15c != 0) {
      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];
    }
  } while( true );
}


lui gp,0xd
addiu gp,gp,-0x238c
addu gp,gp,t9
addiu sp,sp,-0x28
lw t9,-0x7b3c(gp)
li a2,0x4
sw s0,0x20(sp)
addiu t9,t9,-0x4c9c
lw s0,-0x6c80(gp)
sw a1,0x18(sp)
addiu a1,sp,0x18
sw gp,0x10(sp)
sw ra,0x24(sp)
lw v0,0x0(s0)
sw v0,0x1c(sp)
bal 0x0004b364
_nop
lw v1,0x1c(sp)
lw v0,0x0(s0)
bne v1,v0,0x0004b6a0
_lw gp,0x10(sp)
lw ra,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x28
lw t9,-0x6fe8(gp)
jalr t9
_nop
(translation_unit "int FUN_0004b63c(int *param_1,int param_2)\n\n{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined1 uVar5;\n  undefined4 uVar4;\n  undefined4 extraout_v1;\n  undefined1 *puVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int iVar12;\n  int *piVar13;\n  uint uVar14;\n  int *piVar15;\n  int *piVar16;\n  int *piVar17;\n  int *piVar18;\n  undefined *puVar19;\n  code *pcVar20;\n  code *pcVar21;\n  int iStack_15c;\n  int iStack_158;\n  int aiStack_154 [12];\n  int iStack_124;\n  int aiStack_120 [4];\n  undefined4 uStack_110;\n  int iStack_10c;\n  int *piStack_108;\n  int *piStack_104;\n  uint *puStack_100;\n  code *pcStack_fc;\n  int *piStack_e8;\n  undefined4 uStack_e4;\n  int iStack_e0;\n  int *piStack_dc;\n  undefined4 uStack_d8;\n  undefined4 uStack_d4;\n  undefined4 uStack_d0;\n  code *pcStack_c8;\n  int iStack_bc;\n  int iStack_b8;\n  int aiStack_b4 [12];\n  int iStack_84;\n  int *piStack_80;\n  int *piStack_7c;\n  int *piStack_78;\n  int local_10;\n  int local_c;\n  \n  puVar19 = PTR___stack_chk_guard_00112630;\n  piVar15 = &local_10;\n  local_c = *(int *)PTR___stack_chk_guard_00112630;\n  local_10 = param_2;\n  FUN_0004b364(param_1,piVar15,4);\n  if (local_c == *(int *)puVar19) {\n    return *(int *)puVar19;\n  }\n  puVar19 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  piVar13 = *(int **)(puVar19 + 0xc6f84);\n  iVar1 = *piVar13;\n  FUN_0004b364();\n  pcVar20 = *(code **)(puVar19 + 0xc6e88);\n  param_1[6] = *param_1;\n  puVar2 = (uint *)(*pcVar20)(piVar15);\n  piVar17 = param_1;\n  piVar16 = piVar15;\n  FUN_0004b594();\n  if (iVar1 == *piVar13) {\n    return *piVar13;\n  }\n  pcVar21 = *(code **)(puVar19 + 0xc6c1c);\n  (*pcVar21)();\n  pcVar20 = pcVar21 + 0xcdb48;\n  piVar18 = *(int **)(pcVar21 + 0xc6ec8);\n  iStack_84 = *piVar18;\n  iVar1 = *piVar16;\n  pcStack_c8 = pcVar20;\n  piStack_80 = param_1;\n  piStack_7c = piVar13;\n  piStack_78 = piVar15;\n  if (piVar17[6] != 0) {\n    iVar10 = piVar17[0x93];\n    uVar3 = piVar16[2];\n    piVar16[6] = 0;\n    *piVar16 = iVar1 - (piVar16[5] - piVar16[4]);\n    if (iVar10 == 0) {\nLAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);\n      if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;\nLAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }\n      pcVar20 = *(code **)(pcVar20 + -0x7efc);\n      iVar1 = iVar10;\njoined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }\n    }\n    else {\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }\n    FUN_00049aac(*(undefined1 *)(piVar16[4] + 0xc));\n    piStack_e8 = (int *)piVar16[5];\n    piStack_dc = aiStack_b4;\n    uStack_d0 = 0;\n    uStack_d4 = 0;\n    uStack_d8 = 0;\n    uStack_e4 = extraout_v1;\n    iStack_e0 = iVar1;\n    log_packet(piVar17[6],1);\n    pcVar20 = pcStack_c8;\n    iVar1 = (piVar16[5] - piVar16[4]) + *piVar16;\n    *piVar16 = iVar1;\n  }\n  if (piVar17[0xf] != 0) {\n    piStack_e8 = &iStack_b8;\n    (**(code **)(pcVar20 + -0x7af0))(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc);\n    if (piVar16[7] < iStack_b8 + 2) {\n      FUN_0004b2d8(piVar16);\n    }\n    (**(code **)(pcStack_c8 + -0x6d44))(piVar16[4] + 0xc,iStack_bc,iStack_b8);\n    safefree(iStack_bc);\n    pcVar20 = pcStack_c8;\n    iVar1 = iStack_b8 + 0xc;\n    *piVar16 = iVar1;\n  }\n  iVar10 = iVar1 + 4;\n  if (piVar16[7] < iVar10) {\n    FUN_0004b2d8(piVar16);\n    iVar1 = *piVar16;\n    iVar10 = iVar1 + 4;\n    pcVar20 = pcStack_c8;\n  }\n  uVar14 = iVar1 - 8;\n  uVar3 = uVar14 & 0x80000007;\n  *piVar16 = iVar10;\n  if ((int)uVar3 < 0) {\n    uVar3 = (uVar3 - 1 | 0xfffffff8) + 1;\n  }\n  iVar1 = uVar14 - uVar3;\n  piVar15 = (int *)0xc;\n  iVar10 = iVar1 + 8;\n  uVar11 = uVar3;\n  do {\n    uVar5 = (**(code **)(pcVar20 + -0x7af8))();\n    puVar6 = (undefined1 *)(piVar16[4] + uVar11);\n    uVar11 = uVar11 + 1;\n    *puVar6 = uVar5;\n    pcVar20 = pcStack_c8;\n  } while (uVar11 != 0xc);\n  iVar12 = uVar3 + 4;\n  uVar4 = (**(code **)(pcStack_c8 + -0x7af4))(piVar16[4] + iVar12,iVar1 + 4);\n  iVar7 = iVar10 + uVar3;\n  *(char *)(piVar16[4] + iVar7) = (char)((uint)uVar4 >> 0x18);\n  piVar13 = (int *)((int)uVar14 >> 8);\n  *(char *)(piVar16[4] + iVar7 + 1) = (char)((uint)uVar4 >> 0x10);\n  *(char *)(piVar16[4] + iVar7 + 2) = (char)((uint)uVar4 >> 8);\n  *(char *)(piVar16[4] + iVar7 + 3) = (char)uVar4;\n  *(char *)(piVar16[4] + uVar3) = (char)(uVar14 >> 0x18);\n  *(char *)(piVar16[4] + uVar3 + 1) = (char)(uVar14 >> 0x10);\n  *(char *)(piVar16[4] + uVar3 + 2) = (char)(uVar14 >> 8);\n  *(char *)(piVar16[4] + uVar3 + 3) = (char)uVar14;\n  if (piVar17[0x15] != 0) {\n    piVar13 = (int *)(piVar16[4] + iVar12);\n    (**(code **)(piVar17[0x15] + 0xc))(piVar17[0x16],piVar13,iVar10);\n  }\n  iVar7 = *piVar18;\n  *puVar2 = uVar3;\n  if (iStack_84 == iVar7) {\n    return iVar1 + 0xc;\n  }\n  pcVar20 = *(code **)(pcStack_c8 + -0x6fe8);\n  pcVar21 = FUN_0004bc54;\n  iVar1 = iStack_84;\n  (*pcVar20)();\n  iVar7 = *piVar13;\n  piVar16 = *(int **)(pcVar20 + 0xc69dc);\n  uStack_110 = 0xc;\n  iStack_124 = *piVar16;\n  aiStack_120[1] = iVar12;\n  aiStack_120[2] = uVar3;\n  aiStack_120[3] = uVar14;\n  iStack_10c = iVar10;\n  piStack_108 = piVar17;\n  piStack_104 = piVar18;\n  puStack_100 = puVar2;\n  pcStack_fc = pcVar21;\n  if (*(int *)(iVar1 + 0x18) == 0) goto LAB_0004bd94;\n  uVar3 = *(uint *)(iVar1 + 0x24c);\n  iVar10 = piVar13[2];\n  piVar13[6] = 0;\n  *piVar13 = iVar7 - (piVar13[5] - piVar13[4]);\n  if ((uVar3 != 0) && (uVar3 = 0, iVar10 - 0x5eU < 2)) {\n    FUN_00047058(piVar13);\n    if (piVar13[2] == 0x5f) {\n      FUN_00047058();\n    }\n    aiStack_154[2] = 2;\n    aiStack_154[0] = piVar13[6] + 4;\n    FUN_00047b74(piVar13,&iStack_15c,&iStack_158);\n    if (iStack_15c == 0) {\n      iVar10 = piVar13[2];\n      uVar3 = 0;\n    }\n    else {\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }\n  }\n  if (iVar10 == 0x32) {\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar17 = &iStack_158;\n      piVar15 = &iStack_15c;\n      piVar13[6] = 0;\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }\n  if ((*(int *)(iVar1 + 0x188) == 4) && (iVar10 == 0x3d)) {\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar13[6] = 0;\n      piVar17 = &iStack_158;\n      FUN_00047058(piVar13);\n      aiStack_154[uVar3 * 3] = piVar13[6];\n      aiStack_154[uVar3 * 3 + 2] = 1;\n      do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n      piVar15 = &iStack_15c;\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }\n  if ((iVar10 == 0x62) &&\n     (iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0))\n  {\n    piVar13[6] = 0;\n    piVar17 = &iStack_158;\n    piVar15 = &iStack_15c;\n    FUN_00047058(piVar13);\n    FUN_00047b74();\n    if (iStack_158 == 7) {\n      iVar7 = piVar13[6];\n      iVar10 = iVar7 + 1;\n      piVar18 = piVar15;\n      if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;\n      if (*piVar13 - iVar10 < 1) goto LAB_0004c510;\n      piVar13[6] = iVar7 + 2;\n      goto LAB_0004c1fc;\n    }\n  }\nLAB_0004bd10:\n  do {\n    FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5));\n    log_packet(*(undefined4 *)(iVar1 + 0x18),1);\n    iVar7 = (piVar13[5] - piVar13[4]) + *piVar13;\n    *piVar13 = iVar7;\nLAB_0004bd94:\n    uVar3 = *(uint *)(iVar1 + 0xec);\n    if (uVar3 == 0) {\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }\n    else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }\n    if (iStack_124 == *piVar16) {\n      return iVar10;\n    }\n    iVar10 = iStack_124;\n    (**(code **)(pcVar20 + 0xc6674))();\nLAB_0004c510:\n    piVar13[6] = iVar10;\n    piVar18 = piVar15;\nLAB_0004c1fc:\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    iVar10 = piVar13[6];\n    piVar15 = aiStack_120 + uVar3 * 3;\n    aiStack_154[uVar3 * 3 + 2] = 1;\n    aiStack_154[uVar3 * 3] = iVar10;\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    if (iStack_15c != 0) {\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }\n  } while( true );\n}\n\n" (function_definition "int FUN_0004b63c(int *param_1,int param_2)\n\n{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined1 uVar5;\n  undefined4 uVar4;\n  undefined4 extraout_v1;\n  undefined1 *puVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int iVar12;\n  int *piVar13;\n  uint uVar14;\n  int *piVar15;\n  int *piVar16;\n  int *piVar17;\n  int *piVar18;\n  undefined *puVar19;\n  code *pcVar20;\n  code *pcVar21;\n  int iStack_15c;\n  int iStack_158;\n  int aiStack_154 [12];\n  int iStack_124;\n  int aiStack_120 [4];\n  undefined4 uStack_110;\n  int iStack_10c;\n  int *piStack_108;\n  int *piStack_104;\n  uint *puStack_100;\n  code *pcStack_fc;\n  int *piStack_e8;\n  undefined4 uStack_e4;\n  int iStack_e0;\n  int *piStack_dc;\n  undefined4 uStack_d8;\n  undefined4 uStack_d4;\n  undefined4 uStack_d0;\n  code *pcStack_c8;\n  int iStack_bc;\n  int iStack_b8;\n  int aiStack_b4 [12];\n  int iStack_84;\n  int *piStack_80;\n  int *piStack_7c;\n  int *piStack_78;\n  int local_10;\n  int local_c;\n  \n  puVar19 = PTR___stack_chk_guard_00112630;\n  piVar15 = &local_10;\n  local_c = *(int *)PTR___stack_chk_guard_00112630;\n  local_10 = param_2;\n  FUN_0004b364(param_1,piVar15,4);\n  if (local_c == *(int *)puVar19) {\n    return *(int *)puVar19;\n  }\n  puVar19 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  piVar13 = *(int **)(puVar19 + 0xc6f84);\n  iVar1 = *piVar13;\n  FUN_0004b364();\n  pcVar20 = *(code **)(puVar19 + 0xc6e88);\n  param_1[6] = *param_1;\n  puVar2 = (uint *)(*pcVar20)(piVar15);\n  piVar17 = param_1;\n  piVar16 = piVar15;\n  FUN_0004b594();\n  if (iVar1 == *piVar13) {\n    return *piVar13;\n  }\n  pcVar21 = *(code **)(puVar19 + 0xc6c1c);\n  (*pcVar21)();\n  pcVar20 = pcVar21 + 0xcdb48;\n  piVar18 = *(int **)(pcVar21 + 0xc6ec8);\n  iStack_84 = *piVar18;\n  iVar1 = *piVar16;\n  pcStack_c8 = pcVar20;\n  piStack_80 = param_1;\n  piStack_7c = piVar13;\n  piStack_78 = piVar15;\n  if (piVar17[6] != 0) {\n    iVar10 = piVar17[0x93];\n    uVar3 = piVar16[2];\n    piVar16[6] = 0;\n    *piVar16 = iVar1 - (piVar16[5] - piVar16[4]);\n    if (iVar10 == 0) {\nLAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);\n      if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;\nLAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }\n      pcVar20 = *(code **)(pcVar20 + -0x7efc);\n      iVar1 = iVar10;\njoined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }\n    }\n    else {\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }\n    FUN_00049aac(*(undefined1 *)(piVar16[4] + 0xc));\n    piStack_e8 = (int *)piVar16[5];\n    piStack_dc = aiStack_b4;\n    uStack_d0 = 0;\n    uStack_d4 = 0;\n    uStack_d8 = 0;\n    uStack_e4 = extraout_v1;\n    iStack_e0 = iVar1;\n    log_packet(piVar17[6],1);\n    pcVar20 = pcStack_c8;\n    iVar1 = (piVar16[5] - piVar16[4]) + *piVar16;\n    *piVar16 = iVar1;\n  }\n  if (piVar17[0xf] != 0) {\n    piStack_e8 = &iStack_b8;\n    (**(code **)(pcVar20 + -0x7af0))(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc);\n    if (piVar16[7] < iStack_b8 + 2) {\n      FUN_0004b2d8(piVar16);\n    }\n    (**(code **)(pcStack_c8 + -0x6d44))(piVar16[4] + 0xc,iStack_bc,iStack_b8);\n    safefree(iStack_bc);\n    pcVar20 = pcStack_c8;\n    iVar1 = iStack_b8 + 0xc;\n    *piVar16 = iVar1;\n  }\n  iVar10 = iVar1 + 4;\n  if (piVar16[7] < iVar10) {\n    FUN_0004b2d8(piVar16);\n    iVar1 = *piVar16;\n    iVar10 = iVar1 + 4;\n    pcVar20 = pcStack_c8;\n  }\n  uVar14 = iVar1 - 8;\n  uVar3 = uVar14 & 0x80000007;\n  *piVar16 = iVar10;\n  if ((int)uVar3 < 0) {\n    uVar3 = (uVar3 - 1 | 0xfffffff8) + 1;\n  }\n  iVar1 = uVar14 - uVar3;\n  piVar15 = (int *)0xc;\n  iVar10 = iVar1 + 8;\n  uVar11 = uVar3;\n  do {\n    uVar5 = (**(code **)(pcVar20 + -0x7af8))();\n    puVar6 = (undefined1 *)(piVar16[4] + uVar11);\n    uVar11 = uVar11 + 1;\n    *puVar6 = uVar5;\n    pcVar20 = pcStack_c8;\n  } while (uVar11 != 0xc);\n  iVar12 = uVar3 + 4;\n  uVar4 = (**(code **)(pcStack_c8 + -0x7af4))(piVar16[4] + iVar12,iVar1 + 4);\n  iVar7 = iVar10 + uVar3;\n  *(char *)(piVar16[4] + iVar7) = (char)((uint)uVar4 >> 0x18);\n  piVar13 = (int *)((int)uVar14 >> 8);\n  *(char *)(piVar16[4] + iVar7 + 1) = (char)((uint)uVar4 >> 0x10);\n  *(char *)(piVar16[4] + iVar7 + 2) = (char)((uint)uVar4 >> 8);\n  *(char *)(piVar16[4] + iVar7 + 3) = (char)uVar4;\n  *(char *)(piVar16[4] + uVar3) = (char)(uVar14 >> 0x18);\n  *(char *)(piVar16[4] + uVar3 + 1) = (char)(uVar14 >> 0x10);\n  *(char *)(piVar16[4] + uVar3 + 2) = (char)(uVar14 >> 8);\n  *(char *)(piVar16[4] + uVar3 + 3) = (char)uVar14;\n  if (piVar17[0x15] != 0) {\n    piVar13 = (int *)(piVar16[4] + iVar12);\n    (**(code **)(piVar17[0x15] + 0xc))(piVar17[0x16],piVar13,iVar10);\n  }\n  iVar7 = *piVar18;\n  *puVar2 = uVar3;\n  if (iStack_84 == iVar7) {\n    return iVar1 + 0xc;\n  }\n  pcVar20 = *(code **)(pcStack_c8 + -0x6fe8);\n  pcVar21 = FUN_0004bc54;\n  iVar1 = iStack_84;\n  (*pcVar20)();\n  iVar7 = *piVar13;\n  piVar16 = *(int **)(pcVar20 + 0xc69dc);\n  uStack_110 = 0xc;\n  iStack_124 = *piVar16;\n  aiStack_120[1] = iVar12;\n  aiStack_120[2] = uVar3;\n  aiStack_120[3] = uVar14;\n  iStack_10c = iVar10;\n  piStack_108 = piVar17;\n  piStack_104 = piVar18;\n  puStack_100 = puVar2;\n  pcStack_fc = pcVar21;\n  if (*(int *)(iVar1 + 0x18) == 0) goto LAB_0004bd94;\n  uVar3 = *(uint *)(iVar1 + 0x24c);\n  iVar10 = piVar13[2];\n  piVar13[6] = 0;\n  *piVar13 = iVar7 - (piVar13[5] - piVar13[4]);\n  if ((uVar3 != 0) && (uVar3 = 0, iVar10 - 0x5eU < 2)) {\n    FUN_00047058(piVar13);\n    if (piVar13[2] == 0x5f) {\n      FUN_00047058();\n    }\n    aiStack_154[2] = 2;\n    aiStack_154[0] = piVar13[6] + 4;\n    FUN_00047b74(piVar13,&iStack_15c,&iStack_158);\n    if (iStack_15c == 0) {\n      iVar10 = piVar13[2];\n      uVar3 = 0;\n    }\n    else {\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }\n  }\n  if (iVar10 == 0x32) {\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar17 = &iStack_158;\n      piVar15 = &iStack_15c;\n      piVar13[6] = 0;\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }\n  if ((*(int *)(iVar1 + 0x188) == 4) && (iVar10 == 0x3d)) {\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar13[6] = 0;\n      piVar17 = &iStack_158;\n      FUN_00047058(piVar13);\n      aiStack_154[uVar3 * 3] = piVar13[6];\n      aiStack_154[uVar3 * 3 + 2] = 1;\n      do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n      piVar15 = &iStack_15c;\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }\n  if ((iVar10 == 0x62) &&\n     (iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0))\n  {\n    piVar13[6] = 0;\n    piVar17 = &iStack_158;\n    piVar15 = &iStack_15c;\n    FUN_00047058(piVar13);\n    FUN_00047b74();\n    if (iStack_158 == 7) {\n      iVar7 = piVar13[6];\n      iVar10 = iVar7 + 1;\n      piVar18 = piVar15;\n      if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;\n      if (*piVar13 - iVar10 < 1) goto LAB_0004c510;\n      piVar13[6] = iVar7 + 2;\n      goto LAB_0004c1fc;\n    }\n  }\nLAB_0004bd10:\n  do {\n    FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5));\n    log_packet(*(undefined4 *)(iVar1 + 0x18),1);\n    iVar7 = (piVar13[5] - piVar13[4]) + *piVar13;\n    *piVar13 = iVar7;\nLAB_0004bd94:\n    uVar3 = *(uint *)(iVar1 + 0xec);\n    if (uVar3 == 0) {\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }\n    else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }\n    if (iStack_124 == *piVar16) {\n      return iVar10;\n    }\n    iVar10 = iStack_124;\n    (**(code **)(pcVar20 + 0xc6674))();\nLAB_0004c510:\n    piVar13[6] = iVar10;\n    piVar18 = piVar15;\nLAB_0004c1fc:\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    iVar10 = piVar13[6];\n    piVar15 = aiStack_120 + uVar3 * 3;\n    aiStack_154[uVar3 * 3 + 2] = 1;\n    aiStack_154[uVar3 * 3] = iVar10;\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    if (iStack_15c != 0) {\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_0004b63c(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined1 uVar5;\n  undefined4 uVar4;\n  undefined4 extraout_v1;\n  undefined1 *puVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int iVar12;\n  int *piVar13;\n  uint uVar14;\n  int *piVar15;\n  int *piVar16;\n  int *piVar17;\n  int *piVar18;\n  undefined *puVar19;\n  code *pcVar20;\n  code *pcVar21;\n  int iStack_15c;\n  int iStack_158;\n  int aiStack_154 [12];\n  int iStack_124;\n  int aiStack_120 [4];\n  undefined4 uStack_110;\n  int iStack_10c;\n  int *piStack_108;\n  int *piStack_104;\n  uint *puStack_100;\n  code *pcStack_fc;\n  int *piStack_e8;\n  undefined4 uStack_e4;\n  int iStack_e0;\n  int *piStack_dc;\n  undefined4 uStack_d8;\n  undefined4 uStack_d4;\n  undefined4 uStack_d0;\n  code *pcStack_c8;\n  int iStack_bc;\n  int iStack_b8;\n  int aiStack_b4 [12];\n  int iStack_84;\n  int *piStack_80;\n  int *piStack_7c;\n  int *piStack_78;\n  int local_10;\n  int local_c;\n  \n  puVar19 = PTR___stack_chk_guard_00112630;\n  piVar15 = &local_10;\n  local_c = *(int *)PTR___stack_chk_guard_00112630;\n  local_10 = param_2;\n  FUN_0004b364(param_1,piVar15,4);\n  if (local_c == *(int *)puVar19) {\n    return *(int *)puVar19;\n  }\n  puVar19 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  piVar13 = *(int **)(puVar19 + 0xc6f84);\n  iVar1 = *piVar13;\n  FUN_0004b364();\n  pcVar20 = *(code **)(puVar19 + 0xc6e88);\n  param_1[6] = *param_1;\n  puVar2 = (uint *)(*pcVar20)(piVar15);\n  piVar17 = param_1;\n  piVar16 = piVar15;\n  FUN_0004b594();\n  if (iVar1 == *piVar13) {\n    return *piVar13;\n  }\n  pcVar21 = *(code **)(puVar19 + 0xc6c1c);\n  (*pcVar21)();\n  pcVar20 = pcVar21 + 0xcdb48;\n  piVar18 = *(int **)(pcVar21 + 0xc6ec8);\n  iStack_84 = *piVar18;\n  iVar1 = *piVar16;\n  pcStack_c8 = pcVar20;\n  piStack_80 = param_1;\n  piStack_7c = piVar13;\n  piStack_78 = piVar15;\n  if (piVar17[6] != 0) {\n    iVar10 = piVar17[0x93];\n    uVar3 = piVar16[2];\n    piVar16[6] = 0;\n    *piVar16 = iVar1 - (piVar16[5] - piVar16[4]);\n    if (iVar10 == 0) {\nLAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);\n      if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;\nLAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }\n      pcVar20 = *(code **)(pcVar20 + -0x7efc);\n      iVar1 = iVar10;\njoined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }\n    }\n    else {\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }\n    FUN_00049aac(*(undefined1 *)(piVar16[4] + 0xc));\n    piStack_e8 = (int *)piVar16[5];\n    piStack_dc = aiStack_b4;\n    uStack_d0 = 0;\n    uStack_d4 = 0;\n    uStack_d8 = 0;\n    uStack_e4 = extraout_v1;\n    iStack_e0 = iVar1;\n    log_packet(piVar17[6],1);\n    pcVar20 = pcStack_c8;\n    iVar1 = (piVar16[5] - piVar16[4]) + *piVar16;\n    *piVar16 = iVar1;\n  }\n  if (piVar17[0xf] != 0) {\n    piStack_e8 = &iStack_b8;\n    (**(code **)(pcVar20 + -0x7af0))(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc);\n    if (piVar16[7] < iStack_b8 + 2) {\n      FUN_0004b2d8(piVar16);\n    }\n    (**(code **)(pcStack_c8 + -0x6d44))(piVar16[4] + 0xc,iStack_bc,iStack_b8);\n    safefree(iStack_bc);\n    pcVar20 = pcStack_c8;\n    iVar1 = iStack_b8 + 0xc;\n    *piVar16 = iVar1;\n  }\n  iVar10 = iVar1 + 4;\n  if (piVar16[7] < iVar10) {\n    FUN_0004b2d8(piVar16);\n    iVar1 = *piVar16;\n    iVar10 = iVar1 + 4;\n    pcVar20 = pcStack_c8;\n  }\n  uVar14 = iVar1 - 8;\n  uVar3 = uVar14 & 0x80000007;\n  *piVar16 = iVar10;\n  if ((int)uVar3 < 0) {\n    uVar3 = (uVar3 - 1 | 0xfffffff8) + 1;\n  }\n  iVar1 = uVar14 - uVar3;\n  piVar15 = (int *)0xc;\n  iVar10 = iVar1 + 8;\n  uVar11 = uVar3;\n  do {\n    uVar5 = (**(code **)(pcVar20 + -0x7af8))();\n    puVar6 = (undefined1 *)(piVar16[4] + uVar11);\n    uVar11 = uVar11 + 1;\n    *puVar6 = uVar5;\n    pcVar20 = pcStack_c8;\n  } while (uVar11 != 0xc);\n  iVar12 = uVar3 + 4;\n  uVar4 = (**(code **)(pcStack_c8 + -0x7af4))(piVar16[4] + iVar12,iVar1 + 4);\n  iVar7 = iVar10 + uVar3;\n  *(char *)(piVar16[4] + iVar7) = (char)((uint)uVar4 >> 0x18);\n  piVar13 = (int *)((int)uVar14 >> 8);\n  *(char *)(piVar16[4] + iVar7 + 1) = (char)((uint)uVar4 >> 0x10);\n  *(char *)(piVar16[4] + iVar7 + 2) = (char)((uint)uVar4 >> 8);\n  *(char *)(piVar16[4] + iVar7 + 3) = (char)uVar4;\n  *(char *)(piVar16[4] + uVar3) = (char)(uVar14 >> 0x18);\n  *(char *)(piVar16[4] + uVar3 + 1) = (char)(uVar14 >> 0x10);\n  *(char *)(piVar16[4] + uVar3 + 2) = (char)(uVar14 >> 8);\n  *(char *)(piVar16[4] + uVar3 + 3) = (char)uVar14;\n  if (piVar17[0x15] != 0) {\n    piVar13 = (int *)(piVar16[4] + iVar12);\n    (**(code **)(piVar17[0x15] + 0xc))(piVar17[0x16],piVar13,iVar10);\n  }\n  iVar7 = *piVar18;\n  *puVar2 = uVar3;\n  if (iStack_84 == iVar7) {\n    return iVar1 + 0xc;\n  }\n  pcVar20 = *(code **)(pcStack_c8 + -0x6fe8);\n  pcVar21 = FUN_0004bc54;\n  iVar1 = iStack_84;\n  (*pcVar20)();\n  iVar7 = *piVar13;\n  piVar16 = *(int **)(pcVar20 + 0xc69dc);\n  uStack_110 = 0xc;\n  iStack_124 = *piVar16;\n  aiStack_120[1] = iVar12;\n  aiStack_120[2] = uVar3;\n  aiStack_120[3] = uVar14;\n  iStack_10c = iVar10;\n  piStack_108 = piVar17;\n  piStack_104 = piVar18;\n  puStack_100 = puVar2;\n  pcStack_fc = pcVar21;\n  if (*(int *)(iVar1 + 0x18) == 0) goto LAB_0004bd94;\n  uVar3 = *(uint *)(iVar1 + 0x24c);\n  iVar10 = piVar13[2];\n  piVar13[6] = 0;\n  *piVar13 = iVar7 - (piVar13[5] - piVar13[4]);\n  if ((uVar3 != 0) && (uVar3 = 0, iVar10 - 0x5eU < 2)) {\n    FUN_00047058(piVar13);\n    if (piVar13[2] == 0x5f) {\n      FUN_00047058();\n    }\n    aiStack_154[2] = 2;\n    aiStack_154[0] = piVar13[6] + 4;\n    FUN_00047b74(piVar13,&iStack_15c,&iStack_158);\n    if (iStack_15c == 0) {\n      iVar10 = piVar13[2];\n      uVar3 = 0;\n    }\n    else {\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }\n  }\n  if (iVar10 == 0x32) {\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar17 = &iStack_158;\n      piVar15 = &iStack_15c;\n      piVar13[6] = 0;\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }\n  if ((*(int *)(iVar1 + 0x188) == 4) && (iVar10 == 0x3d)) {\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar13[6] = 0;\n      piVar17 = &iStack_158;\n      FUN_00047058(piVar13);\n      aiStack_154[uVar3 * 3] = piVar13[6];\n      aiStack_154[uVar3 * 3 + 2] = 1;\n      do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n      piVar15 = &iStack_15c;\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }\n  if ((iVar10 == 0x62) &&\n     (iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0))\n  {\n    piVar13[6] = 0;\n    piVar17 = &iStack_158;\n    piVar15 = &iStack_15c;\n    FUN_00047058(piVar13);\n    FUN_00047b74();\n    if (iStack_158 == 7) {\n      iVar7 = piVar13[6];\n      iVar10 = iVar7 + 1;\n      piVar18 = piVar15;\n      if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;\n      if (*piVar13 - iVar10 < 1) goto LAB_0004c510;\n      piVar13[6] = iVar7 + 2;\n      goto LAB_0004c1fc;\n    }\n  }\nLAB_0004bd10:\n  do {\n    FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5));\n    log_packet(*(undefined4 *)(iVar1 + 0x18),1);\n    iVar7 = (piVar13[5] - piVar13[4]) + *piVar13;\n    *piVar13 = iVar7;\nLAB_0004bd94:\n    uVar3 = *(uint *)(iVar1 + 0xec);\n    if (uVar3 == 0) {\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }\n    else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }\n    if (iStack_124 == *piVar16) {\n      return iVar10;\n    }\n    iVar10 = iStack_124;\n    (**(code **)(pcVar20 + 0xc6674))();\nLAB_0004c510:\n    piVar13[6] = iVar10;\n    piVar18 = piVar15;\nLAB_0004c1fc:\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    iVar10 = piVar13[6];\n    piVar15 = aiStack_120 + uVar3 * 3;\n    aiStack_154[uVar3 * 3 + 2] = 1;\n    aiStack_154[uVar3 * 3] = iVar10;\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    if (iStack_15c != 0) {\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined1 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 extraout_v1;" type_identifier identifier ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "int *piVar18;" primitive_type (pointer_declarator "*piVar18" * identifier) ;) (declaration "undefined *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "code *pcVar20;" type_identifier (pointer_declarator "*pcVar20" * identifier) ;) (declaration "code *pcVar21;" type_identifier (pointer_declarator "*pcVar21" * identifier) ;) (declaration "int iStack_15c;" primitive_type identifier ;) (declaration "int iStack_158;" primitive_type identifier ;) (declaration "int aiStack_154 [12];" primitive_type (array_declarator "aiStack_154 [12]" identifier [ number_literal ]) ;) (declaration "int iStack_124;" primitive_type identifier ;) (declaration "int aiStack_120 [4];" primitive_type (array_declarator "aiStack_120 [4]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_110;" type_identifier identifier ;) (declaration "int iStack_10c;" primitive_type identifier ;) (declaration "int *piStack_108;" primitive_type (pointer_declarator "*piStack_108" * identifier) ;) (declaration "int *piStack_104;" primitive_type (pointer_declarator "*piStack_104" * identifier) ;) (declaration "uint *puStack_100;" type_identifier (pointer_declarator "*puStack_100" * identifier) ;) (declaration "code *pcStack_fc;" type_identifier (pointer_declarator "*pcStack_fc" * identifier) ;) (declaration "int *piStack_e8;" primitive_type (pointer_declarator "*piStack_e8" * identifier) ;) (declaration "undefined4 uStack_e4;" type_identifier identifier ;) (declaration "int iStack_e0;" primitive_type identifier ;) (declaration "int *piStack_dc;" primitive_type (pointer_declarator "*piStack_dc" * identifier) ;) (declaration "undefined4 uStack_d8;" type_identifier identifier ;) (declaration "undefined4 uStack_d4;" type_identifier identifier ;) (declaration "undefined4 uStack_d0;" type_identifier identifier ;) (declaration "code *pcStack_c8;" type_identifier (pointer_declarator "*pcStack_c8" * identifier) ;) (declaration "int iStack_bc;" primitive_type identifier ;) (declaration "int iStack_b8;" primitive_type identifier ;) (declaration "int aiStack_b4 [12];" primitive_type (array_declarator "aiStack_b4 [12]" identifier [ number_literal ]) ;) (declaration "int iStack_84;" primitive_type identifier ;) (declaration "int *piStack_80;" primitive_type (pointer_declarator "*piStack_80" * identifier) ;) (declaration "int *piStack_7c;" primitive_type (pointer_declarator "*piStack_7c" * identifier) ;) (declaration "int *piStack_78;" primitive_type (pointer_declarator "*piStack_78" * identifier) ;) (declaration "int local_10;" primitive_type identifier ;) (declaration "int local_c;" primitive_type identifier ;) (expression_statement "puVar19 = PTR___stack_chk_guard_00112630;" (assignment_expression "puVar19 = PTR___stack_chk_guard_00112630" identifier = identifier) ;) (expression_statement "piVar15 = &local_10;" (assignment_expression "piVar15 = &local_10" identifier = (pointer_expression "&local_10" & identifier)) ;) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_00112630;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_00112630" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00112630" * (cast_expression "(int *)PTR___stack_chk_guard_00112630" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_10 = param_2;" (assignment_expression "local_10 = param_2" identifier = identifier) ;) (expression_statement "FUN_0004b364(param_1,piVar15,4);" (call_expression "FUN_0004b364(param_1,piVar15,4)" identifier (argument_list "(param_1,piVar15,4)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (local_c == *(int *)puVar19) {\n    return *(int *)puVar19;\n  }" if (parenthesized_expression "(local_c == *(int *)puVar19)" ( (binary_expression "local_c == *(int *)puVar19" identifier == (pointer_expression "*(int *)puVar19" * (cast_expression "(int *)puVar19" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return *(int *)puVar19;\n  }" { (return_statement "return *(int *)puVar19;" return (pointer_expression "*(int *)puVar19" * (cast_expression "(int *)puVar19" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "puVar19 = PTR___stack_chk_fail_001122c8;" (assignment_expression "puVar19 = PTR___stack_chk_fail_001122c8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_001122c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_001122c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_001122c8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_001122c8" * (cast_expression "(code *)PTR___stack_chk_fail_001122c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar13 = *(int **)(puVar19 + 0xc6f84);" (assignment_expression "piVar13 = *(int **)(puVar19 + 0xc6f84)" identifier = (pointer_expression "*(int **)(puVar19 + 0xc6f84)" * (cast_expression "(int **)(puVar19 + 0xc6f84)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + 0xc6f84)" ( (binary_expression "puVar19 + 0xc6f84" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *piVar13;" (assignment_expression "iVar1 = *piVar13" identifier = (pointer_expression "*piVar13" * identifier)) ;) (expression_statement "FUN_0004b364();" (call_expression "FUN_0004b364()" identifier (argument_list "()" ( ))) ;) (expression_statement "pcVar20 = *(code **)(puVar19 + 0xc6e88);" (assignment_expression "pcVar20 = *(code **)(puVar19 + 0xc6e88)" identifier = (pointer_expression "*(code **)(puVar19 + 0xc6e88)" * (cast_expression "(code **)(puVar19 + 0xc6e88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + 0xc6e88)" ( (binary_expression "puVar19 + 0xc6e88" identifier + number_literal) ))))) ;) (expression_statement "param_1[6] = *param_1;" (assignment_expression "param_1[6] = *param_1" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "puVar2 = (uint *)(*pcVar20)(piVar15);" (assignment_expression "puVar2 = (uint *)(*pcVar20)(piVar15)" identifier = (cast_expression "(uint *)(*pcVar20)(piVar15)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar20)(piVar15)" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "(piVar15)" ( identifier ))))) ;) (expression_statement "piVar17 = param_1;" (assignment_expression "piVar17 = param_1" identifier = identifier) ;) (expression_statement "piVar16 = piVar15;" (assignment_expression "piVar16 = piVar15" identifier = identifier) ;) (expression_statement "FUN_0004b594();" (call_expression "FUN_0004b594()" identifier (argument_list "()" ( ))) ;) (if_statement "if (iVar1 == *piVar13) {\n    return *piVar13;\n  }" if (parenthesized_expression "(iVar1 == *piVar13)" ( (binary_expression "iVar1 == *piVar13" identifier == (pointer_expression "*piVar13" * identifier)) )) (compound_statement "{\n    return *piVar13;\n  }" { (return_statement "return *piVar13;" return (pointer_expression "*piVar13" * identifier) ;) })) (expression_statement "pcVar21 = *(code **)(puVar19 + 0xc6c1c);" (assignment_expression "pcVar21 = *(code **)(puVar19 + 0xc6c1c)" identifier = (pointer_expression "*(code **)(puVar19 + 0xc6c1c)" * (cast_expression "(code **)(puVar19 + 0xc6c1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + 0xc6c1c)" ( (binary_expression "puVar19 + 0xc6c1c" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar21)();" (call_expression "(*pcVar21)()" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar20 = pcVar21 + 0xcdb48;" (assignment_expression "pcVar20 = pcVar21 + 0xcdb48" identifier = (binary_expression "pcVar21 + 0xcdb48" identifier + number_literal)) ;) (expression_statement "piVar18 = *(int **)(pcVar21 + 0xc6ec8);" (assignment_expression "piVar18 = *(int **)(pcVar21 + 0xc6ec8)" identifier = (pointer_expression "*(int **)(pcVar21 + 0xc6ec8)" * (cast_expression "(int **)(pcVar21 + 0xc6ec8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0xc6ec8)" ( (binary_expression "pcVar21 + 0xc6ec8" identifier + number_literal) ))))) ;) (expression_statement "iStack_84 = *piVar18;" (assignment_expression "iStack_84 = *piVar18" identifier = (pointer_expression "*piVar18" * identifier)) ;) (expression_statement "iVar1 = *piVar16;" (assignment_expression "iVar1 = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;) (expression_statement "pcStack_c8 = pcVar20;" (assignment_expression "pcStack_c8 = pcVar20" identifier = identifier) ;) (expression_statement "piStack_80 = param_1;" (assignment_expression "piStack_80 = param_1" identifier = identifier) ;) (expression_statement "piStack_7c = piVar13;" (assignment_expression "piStack_7c = piVar13" identifier = identifier) ;) (expression_statement "piStack_78 = piVar15;" (assignment_expression "piStack_78 = piVar15" identifier = identifier) ;) (if_statement "if (piVar17[6] != 0) {\n    iVar10 = piVar17[0x93];\n    uVar3 = piVar16[2];\n    piVar16[6] = 0;\n    *piVar16 = iVar1 - (piVar16[5] - piVar16[4]);\n    if (iVar10 == 0) {\nLAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);\n      if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;\nLAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }\n      pcVar20 = *(code **)(pcVar20 + -0x7efc);\n      iVar1 = iVar10;\njoined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }\n    }\n    else {\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }\n    FUN_00049aac(*(undefined1 *)(piVar16[4] + 0xc));\n    piStack_e8 = (int *)piVar16[5];\n    piStack_dc = aiStack_b4;\n    uStack_d0 = 0;\n    uStack_d4 = 0;\n    uStack_d8 = 0;\n    uStack_e4 = extraout_v1;\n    iStack_e0 = iVar1;\n    log_packet(piVar17[6],1);\n    pcVar20 = pcStack_c8;\n    iVar1 = (piVar16[5] - piVar16[4]) + *piVar16;\n    *piVar16 = iVar1;\n  }" if (parenthesized_expression "(piVar17[6] != 0)" ( (binary_expression "piVar17[6] != 0" (subscript_expression "piVar17[6]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    iVar10 = piVar17[0x93];\n    uVar3 = piVar16[2];\n    piVar16[6] = 0;\n    *piVar16 = iVar1 - (piVar16[5] - piVar16[4]);\n    if (iVar10 == 0) {\nLAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);\n      if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;\nLAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }\n      pcVar20 = *(code **)(pcVar20 + -0x7efc);\n      iVar1 = iVar10;\njoined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }\n    }\n    else {\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }\n    FUN_00049aac(*(undefined1 *)(piVar16[4] + 0xc));\n    piStack_e8 = (int *)piVar16[5];\n    piStack_dc = aiStack_b4;\n    uStack_d0 = 0;\n    uStack_d4 = 0;\n    uStack_d8 = 0;\n    uStack_e4 = extraout_v1;\n    iStack_e0 = iVar1;\n    log_packet(piVar17[6],1);\n    pcVar20 = pcStack_c8;\n    iVar1 = (piVar16[5] - piVar16[4]) + *piVar16;\n    *piVar16 = iVar1;\n  }" { (expression_statement "iVar10 = piVar17[0x93];" (assignment_expression "iVar10 = piVar17[0x93]" identifier = (subscript_expression "piVar17[0x93]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = piVar16[2];" (assignment_expression "uVar3 = piVar16[2]" identifier = (subscript_expression "piVar16[2]" identifier [ number_literal ])) ;) (expression_statement "piVar16[6] = 0;" (assignment_expression "piVar16[6] = 0" (subscript_expression "piVar16[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar16 = iVar1 - (piVar16[5] - piVar16[4]);" (assignment_expression "*piVar16 = iVar1 - (piVar16[5] - piVar16[4])" (pointer_expression "*piVar16" * identifier) = (binary_expression "iVar1 - (piVar16[5] - piVar16[4])" identifier - (parenthesized_expression "(piVar16[5] - piVar16[4])" ( (binary_expression "piVar16[5] - piVar16[4]" (subscript_expression "piVar16[5]" identifier [ number_literal ]) - (subscript_expression "piVar16[4]" identifier [ number_literal ])) )))) ;) (if_statement "if (iVar10 == 0) {\nLAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);\n      if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;\nLAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }\n      pcVar20 = *(code **)(pcVar20 + -0x7efc);\n      iVar1 = iVar10;\njoined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }\n    }\n    else {\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);\n      if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;\nLAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }\n      pcVar20 = *(code **)(pcVar20 + -0x7efc);\n      iVar1 = iVar10;\njoined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }\n    }" { (labeled_statement "LAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);" statement_identifier : (expression_statement "pcVar21 = *(code **)(pcVar20 + -0x7efc);" (assignment_expression "pcVar21 = *(code **)(pcVar20 + -0x7efc)" identifier = (pointer_expression "*(code **)(pcVar20 + -0x7efc)" * (cast_expression "(code **)(pcVar20 + -0x7efc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + -0x7efc)" ( (binary_expression "pcVar20 + -0x7efc" identifier + number_literal) ))))) ;)) (if_statement "if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;" if (parenthesized_expression "((uVar3 & 0xffffffdf) == 9)" ( (binary_expression "(uVar3 & 0xffffffdf) == 9" (parenthesized_expression "(uVar3 & 0xffffffdf)" ( (binary_expression "uVar3 & 0xffffffdf" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0004ba3c;" goto statement_identifier ;)) (labeled_statement "LAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }" statement_identifier : (if_statement "if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }" if (parenthesized_expression "(uVar3 == 0x48)" ( (binary_expression "uVar3 == 0x48" identifier == number_literal) )) (compound_statement "{\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }" { (expression_statement "pcVar21 = *(code **)(pcVar20 + -0x7efc);" (assignment_expression "pcVar21 = *(code **)(pcVar20 + -0x7efc)" identifier = (pointer_expression "*(code **)(pcVar20 + -0x7efc)" * (cast_expression "(code **)(pcVar20 + -0x7efc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + -0x7efc)" ( (binary_expression "pcVar20 + -0x7efc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0004ba3c;" goto statement_identifier ;) }))) (expression_statement "pcVar20 = *(code **)(pcVar20 + -0x7efc);" (assignment_expression "pcVar20 = *(code **)(pcVar20 + -0x7efc)" identifier = (pointer_expression "*(code **)(pcVar20 + -0x7efc)" * (cast_expression "(code **)(pcVar20 + -0x7efc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + -0x7efc)" ( (binary_expression "pcVar20 + -0x7efc" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = iVar10;" (assignment_expression "iVar1 = iVar10" identifier = identifier) ;) (labeled_statement "joined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }" statement_identifier : (if_statement "if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }" if (parenthesized_expression "((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0))" ( (binary_expression "(uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)" (parenthesized_expression "(uVar3 == 0x22)" ( (binary_expression "uVar3 == 0x22" identifier == number_literal) )) && (parenthesized_expression "(iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)" ( (comma_expression "iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0" (assignment_expression "iVar10 = (*pcVar20)(piVar17[0x92],0x7b)" identifier = (call_expression "(*pcVar20)(piVar17[0x92],0x7b)" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "(piVar17[0x92],0x7b)" ( (subscript_expression "piVar17[0x92]" identifier [ number_literal ]) , number_literal )))) , (binary_expression "iVar10 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }" { (expression_statement "piVar16[6] = 0;" (assignment_expression "piVar16[6] = 0" (subscript_expression "piVar16[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);" (call_expression "FUN_00047b74(piVar16,&iStack_bc,&iStack_b8)" identifier (argument_list "(piVar16,&iStack_bc,&iStack_b8)" ( identifier , (pointer_expression "&iStack_bc" & identifier) , (pointer_expression "&iStack_b8" & identifier) ))) ;) (expression_statement "aiStack_b4[iVar1 * 3] = piVar16[6];" (assignment_expression "aiStack_b4[iVar1 * 3] = piVar16[6]" (subscript_expression "aiStack_b4[iVar1 * 3]" identifier [ (binary_expression "iVar1 * 3" identifier * number_literal) ]) = (subscript_expression "piVar16[6]" identifier [ number_literal ])) ;) (expression_statement "aiStack_b4[iVar1 * 3 + 2] = 1;" (assignment_expression "aiStack_b4[iVar1 * 3 + 2] = 1" (subscript_expression "aiStack_b4[iVar1 * 3 + 2]" identifier [ (binary_expression "iVar1 * 3 + 2" (binary_expression "iVar1 * 3" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);" (call_expression "FUN_00047b74(piVar16,&iStack_bc,&iStack_b8)" identifier (argument_list "(piVar16,&iStack_bc,&iStack_b8)" ( identifier , (pointer_expression "&iStack_bc" & identifier) , (pointer_expression "&iStack_b8" & identifier) ))) ;) (if_statement "if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }" if (parenthesized_expression "(iStack_bc != 0)" ( (binary_expression "iStack_bc != 0" identifier != number_literal) )) (compound_statement "{\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }" { (expression_statement "aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];" (assignment_expression "aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3]" (subscript_expression "aiStack_b4[iVar1 * 3 + 1]" identifier [ (binary_expression "iVar1 * 3 + 1" (binary_expression "iVar1 * 3" identifier * number_literal) + number_literal) ]) = (binary_expression "piVar16[6] - aiStack_b4[iVar1 * 3]" (subscript_expression "piVar16[6]" identifier [ number_literal ]) - (subscript_expression "aiStack_b4[iVar1 * 3]" identifier [ (binary_expression "iVar1 * 3" identifier * number_literal) ]))) ;) (expression_statement "iVar1 = iVar1 + 1;" (assignment_expression "iVar1 = iVar1 + 1" identifier = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) })) }))) }) (else_clause "else {\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }" else (compound_statement "{\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }" { (if_statement "if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }" if (parenthesized_expression "(uVar3 == 0x10)" ( (binary_expression "uVar3 == 0x10" identifier == number_literal) )) (compound_statement "{\n        aiStack_b4[0] = 4;\n      }" { (expression_statement "aiStack_b4[0] = 4;" (assignment_expression "aiStack_b4[0] = 4" (subscript_expression "aiStack_b4[0]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }" else (compound_statement "{\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (if_statement "if (uVar3 != 0x17) goto LAB_0004b804;" if (parenthesized_expression "(uVar3 != 0x17)" ( (binary_expression "uVar3 != 0x17" identifier != number_literal) )) (goto_statement "goto LAB_0004b804;" goto statement_identifier ;)) (expression_statement "FUN_00047058(piVar16);" (call_expression "FUN_00047058(piVar16)" identifier (argument_list "(piVar16)" ( identifier ))) ;) (expression_statement "aiStack_b4[0] = piVar16[6] + 4;" (assignment_expression "aiStack_b4[0] = piVar16[6] + 4" (subscript_expression "aiStack_b4[0]" identifier [ number_literal ]) = (binary_expression "piVar16[6] + 4" (subscript_expression "piVar16[6]" identifier [ number_literal ]) + number_literal)) ;) }))) (expression_statement "aiStack_b4[2] = 2;" (assignment_expression "aiStack_b4[2] = 2" (subscript_expression "aiStack_b4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);" (call_expression "FUN_00047b74(piVar16,&iStack_bc,&iStack_b8)" identifier (argument_list "(piVar16,&iStack_bc,&iStack_b8)" ( identifier , (pointer_expression "&iStack_bc" & identifier) , (pointer_expression "&iStack_b8" & identifier) ))) ;) (expression_statement "pcVar20 = pcStack_c8;" (assignment_expression "pcVar20 = pcStack_c8" identifier = identifier) ;) (if_statement "if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }" if (parenthesized_expression "(iStack_bc == 0)" ( (binary_expression "iStack_bc == 0" identifier == number_literal) )) (compound_statement "{\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }" { (expression_statement "uVar3 = piVar16[2];" (assignment_expression "uVar3 = piVar16[2]" identifier = (subscript_expression "piVar16[2]" identifier [ number_literal ])) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0004b804;" goto statement_identifier ;) })) (expression_statement "uVar3 = piVar16[2];" (assignment_expression "uVar3 = piVar16[2]" identifier = (subscript_expression "piVar16[2]" identifier [ number_literal ])) ;) (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" identifier = number_literal) ;) (if_statement "if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;" if (parenthesized_expression "((uVar3 & 0xffffffdf) != 9)" ( (binary_expression "(uVar3 & 0xffffffdf) != 9" (parenthesized_expression "(uVar3 & 0xffffffdf)" ( (binary_expression "uVar3 & 0xffffffdf" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0004b818;" goto statement_identifier ;)) (expression_statement "pcVar21 = *(code **)(pcStack_c8 + -0x7efc);" (assignment_expression "pcVar21 = *(code **)(pcStack_c8 + -0x7efc)" identifier = (pointer_expression "*(code **)(pcStack_c8 + -0x7efc)" * (cast_expression "(code **)(pcStack_c8 + -0x7efc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcStack_c8 + -0x7efc)" ( (binary_expression "pcStack_c8 + -0x7efc" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);" statement_identifier : (expression_statement "iVar1 = (*pcVar21)(piVar17[0x92],0x7b);" (assignment_expression "iVar1 = (*pcVar21)(piVar17[0x92],0x7b)" identifier = (call_expression "(*pcVar21)(piVar17[0x92],0x7b)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(piVar17[0x92],0x7b)" ( (subscript_expression "piVar17[0x92]" identifier [ number_literal ]) , number_literal )))) ;)) (if_statement "if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }" { (expression_statement "uVar3 = piVar16[2];" (assignment_expression "uVar3 = piVar16[2]" identifier = (subscript_expression "piVar16[2]" identifier [ number_literal ])) ;) (expression_statement "pcVar20 = *(code **)(pcStack_c8 + -0x7efc);" (assignment_expression "pcVar20 = *(code **)(pcStack_c8 + -0x7efc)" identifier = (pointer_expression "*(code **)(pcStack_c8 + -0x7efc)" * (cast_expression "(code **)(pcStack_c8 + -0x7efc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcStack_c8 + -0x7efc)" ( (binary_expression "pcStack_c8 + -0x7efc" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = iVar10;" (assignment_expression "iVar1 = iVar10" identifier = identifier) ;) (goto_statement "goto joined_r0x0004b824;" goto statement_identifier ;) })) (expression_statement "iVar7 = *piVar16;" (assignment_expression "iVar7 = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;) (expression_statement "iVar1 = iVar10 + 1;" (assignment_expression "iVar1 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "aiStack_b4[iVar10 * 3] = 0;" (assignment_expression "aiStack_b4[iVar10 * 3] = 0" (subscript_expression "aiStack_b4[iVar10 * 3]" identifier [ (binary_expression "iVar10 * 3" identifier * number_literal) ]) = number_literal) ;) (expression_statement "aiStack_b4[iVar10 * 3 + 1] = iVar7;" (assignment_expression "aiStack_b4[iVar10 * 3 + 1] = iVar7" (subscript_expression "aiStack_b4[iVar10 * 3 + 1]" identifier [ (binary_expression "iVar10 * 3 + 1" (binary_expression "iVar10 * 3" identifier * number_literal) + number_literal) ]) = identifier) ;) (expression_statement "aiStack_b4[iVar10 * 3 + 2] = 1;" (assignment_expression "aiStack_b4[iVar10 * 3 + 2] = 1" (subscript_expression "aiStack_b4[iVar10 * 3 + 2]" identifier [ (binary_expression "iVar10 * 3 + 2" (binary_expression "iVar10 * 3" identifier * number_literal) + number_literal) ]) = number_literal) ;) }))) (expression_statement "FUN_00049aac(*(undefined1 *)(piVar16[4] + 0xc));" (call_expression "FUN_00049aac(*(undefined1 *)(piVar16[4] + 0xc))" identifier (argument_list "(*(undefined1 *)(piVar16[4] + 0xc))" ( (pointer_expression "*(undefined1 *)(piVar16[4] + 0xc)" * (cast_expression "(undefined1 *)(piVar16[4] + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[4] + 0xc)" ( (binary_expression "piVar16[4] + 0xc" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + number_literal) )))) ))) ;) (expression_statement "piStack_e8 = (int *)piVar16[5];" (assignment_expression "piStack_e8 = (int *)piVar16[5]" identifier = (cast_expression "(int *)piVar16[5]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar16[5]" identifier [ number_literal ]))) ;) (expression_statement "piStack_dc = aiStack_b4;" (assignment_expression "piStack_dc = aiStack_b4" identifier = identifier) ;) (expression_statement "uStack_d0 = 0;" (assignment_expression "uStack_d0 = 0" identifier = number_literal) ;) (expression_statement "uStack_d4 = 0;" (assignment_expression "uStack_d4 = 0" identifier = number_literal) ;) (expression_statement "uStack_d8 = 0;" (assignment_expression "uStack_d8 = 0" identifier = number_literal) ;) (expression_statement "uStack_e4 = extraout_v1;" (assignment_expression "uStack_e4 = extraout_v1" identifier = identifier) ;) (expression_statement "iStack_e0 = iVar1;" (assignment_expression "iStack_e0 = iVar1" identifier = identifier) ;) (expression_statement "log_packet(piVar17[6],1);" (call_expression "log_packet(piVar17[6],1)" identifier (argument_list "(piVar17[6],1)" ( (subscript_expression "piVar17[6]" identifier [ number_literal ]) , number_literal ))) ;) (expression_statement "pcVar20 = pcStack_c8;" (assignment_expression "pcVar20 = pcStack_c8" identifier = identifier) ;) (expression_statement "iVar1 = (piVar16[5] - piVar16[4]) + *piVar16;" (assignment_expression "iVar1 = (piVar16[5] - piVar16[4]) + *piVar16" identifier = (binary_expression "(piVar16[5] - piVar16[4]) + *piVar16" (parenthesized_expression "(piVar16[5] - piVar16[4])" ( (binary_expression "piVar16[5] - piVar16[4]" (subscript_expression "piVar16[5]" identifier [ number_literal ]) - (subscript_expression "piVar16[4]" identifier [ number_literal ])) )) + (pointer_expression "*piVar16" * identifier))) ;) (expression_statement "*piVar16 = iVar1;" (assignment_expression "*piVar16 = iVar1" (pointer_expression "*piVar16" * identifier) = identifier) ;) })) (if_statement "if (piVar17[0xf] != 0) {\n    piStack_e8 = &iStack_b8;\n    (**(code **)(pcVar20 + -0x7af0))(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc);\n    if (piVar16[7] < iStack_b8 + 2) {\n      FUN_0004b2d8(piVar16);\n    }\n    (**(code **)(pcStack_c8 + -0x6d44))(piVar16[4] + 0xc,iStack_bc,iStack_b8);\n    safefree(iStack_bc);\n    pcVar20 = pcStack_c8;\n    iVar1 = iStack_b8 + 0xc;\n    *piVar16 = iVar1;\n  }" if (parenthesized_expression "(piVar17[0xf] != 0)" ( (binary_expression "piVar17[0xf] != 0" (subscript_expression "piVar17[0xf]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    piStack_e8 = &iStack_b8;\n    (**(code **)(pcVar20 + -0x7af0))(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc);\n    if (piVar16[7] < iStack_b8 + 2) {\n      FUN_0004b2d8(piVar16);\n    }\n    (**(code **)(pcStack_c8 + -0x6d44))(piVar16[4] + 0xc,iStack_bc,iStack_b8);\n    safefree(iStack_bc);\n    pcVar20 = pcStack_c8;\n    iVar1 = iStack_b8 + 0xc;\n    *piVar16 = iVar1;\n  }" { (expression_statement "piStack_e8 = &iStack_b8;" (assignment_expression "piStack_e8 = &iStack_b8" identifier = (pointer_expression "&iStack_b8" & identifier)) ;) (expression_statement "(**(code **)(pcVar20 + -0x7af0))(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc);" (call_expression "(**(code **)(pcVar20 + -0x7af0))(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc)" (parenthesized_expression "(**(code **)(pcVar20 + -0x7af0))" ( (pointer_expression "**(code **)(pcVar20 + -0x7af0)" * (pointer_expression "*(code **)(pcVar20 + -0x7af0)" * (cast_expression "(code **)(pcVar20 + -0x7af0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + -0x7af0)" ( (binary_expression "pcVar20 + -0x7af0" identifier + number_literal) ))))) )) (argument_list "(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc)" ( (subscript_expression "piVar17[0x24]" identifier [ number_literal ]) , (binary_expression "piVar16[4] + 0xc" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + number_literal) , (binary_expression "iVar1 + -0xc" identifier + number_literal) , (pointer_expression "&iStack_bc" & identifier) ))) ;) (if_statement "if (piVar16[7] < iStack_b8 + 2) {\n      FUN_0004b2d8(piVar16);\n    }" if (parenthesized_expression "(piVar16[7] < iStack_b8 + 2)" ( (binary_expression "piVar16[7] < iStack_b8 + 2" (subscript_expression "piVar16[7]" identifier [ number_literal ]) < (binary_expression "iStack_b8 + 2" identifier + number_literal)) )) (compound_statement "{\n      FUN_0004b2d8(piVar16);\n    }" { (expression_statement "FUN_0004b2d8(piVar16);" (call_expression "FUN_0004b2d8(piVar16)" identifier (argument_list "(piVar16)" ( identifier ))) ;) })) (expression_statement "(**(code **)(pcStack_c8 + -0x6d44))(piVar16[4] + 0xc,iStack_bc,iStack_b8);" (call_expression "(**(code **)(pcStack_c8 + -0x6d44))(piVar16[4] + 0xc,iStack_bc,iStack_b8)" (parenthesized_expression "(**(code **)(pcStack_c8 + -0x6d44))" ( (pointer_expression "**(code **)(pcStack_c8 + -0x6d44)" * (pointer_expression "*(code **)(pcStack_c8 + -0x6d44)" * (cast_expression "(code **)(pcStack_c8 + -0x6d44)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcStack_c8 + -0x6d44)" ( (binary_expression "pcStack_c8 + -0x6d44" identifier + number_literal) ))))) )) (argument_list "(piVar16[4] + 0xc,iStack_bc,iStack_b8)" ( (binary_expression "piVar16[4] + 0xc" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + number_literal) , identifier , identifier ))) ;) (expression_statement "safefree(iStack_bc);" (call_expression "safefree(iStack_bc)" identifier (argument_list "(iStack_bc)" ( identifier ))) ;) (expression_statement "pcVar20 = pcStack_c8;" (assignment_expression "pcVar20 = pcStack_c8" identifier = identifier) ;) (expression_statement "iVar1 = iStack_b8 + 0xc;" (assignment_expression "iVar1 = iStack_b8 + 0xc" identifier = (binary_expression "iStack_b8 + 0xc" identifier + number_literal)) ;) (expression_statement "*piVar16 = iVar1;" (assignment_expression "*piVar16 = iVar1" (pointer_expression "*piVar16" * identifier) = identifier) ;) })) (expression_statement "iVar10 = iVar1 + 4;" (assignment_expression "iVar10 = iVar1 + 4" identifier = (binary_expression "iVar1 + 4" identifier + number_literal)) ;) (if_statement "if (piVar16[7] < iVar10) {\n    FUN_0004b2d8(piVar16);\n    iVar1 = *piVar16;\n    iVar10 = iVar1 + 4;\n    pcVar20 = pcStack_c8;\n  }" if (parenthesized_expression "(piVar16[7] < iVar10)" ( (binary_expression "piVar16[7] < iVar10" (subscript_expression "piVar16[7]" identifier [ number_literal ]) < identifier) )) (compound_statement "{\n    FUN_0004b2d8(piVar16);\n    iVar1 = *piVar16;\n    iVar10 = iVar1 + 4;\n    pcVar20 = pcStack_c8;\n  }" { (expression_statement "FUN_0004b2d8(piVar16);" (call_expression "FUN_0004b2d8(piVar16)" identifier (argument_list "(piVar16)" ( identifier ))) ;) (expression_statement "iVar1 = *piVar16;" (assignment_expression "iVar1 = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;) (expression_statement "iVar10 = iVar1 + 4;" (assignment_expression "iVar10 = iVar1 + 4" identifier = (binary_expression "iVar1 + 4" identifier + number_literal)) ;) (expression_statement "pcVar20 = pcStack_c8;" (assignment_expression "pcVar20 = pcStack_c8" identifier = identifier) ;) })) (expression_statement "uVar14 = iVar1 - 8;" (assignment_expression "uVar14 = iVar1 - 8" identifier = (binary_expression "iVar1 - 8" identifier - number_literal)) ;) (expression_statement "uVar3 = uVar14 & 0x80000007;" (assignment_expression "uVar3 = uVar14 & 0x80000007" identifier = (binary_expression "uVar14 & 0x80000007" identifier & number_literal)) ;) (expression_statement "*piVar16 = iVar10;" (assignment_expression "*piVar16 = iVar10" (pointer_expression "*piVar16" * identifier) = identifier) ;) (if_statement "if ((int)uVar3 < 0) {\n    uVar3 = (uVar3 - 1 | 0xfffffff8) + 1;\n  }" if (parenthesized_expression "((int)uVar3 < 0)" ( (binary_expression "(int)uVar3 < 0" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar3 = (uVar3 - 1 | 0xfffffff8) + 1;\n  }" { (expression_statement "uVar3 = (uVar3 - 1 | 0xfffffff8) + 1;" (assignment_expression "uVar3 = (uVar3 - 1 | 0xfffffff8) + 1" identifier = (binary_expression "(uVar3 - 1 | 0xfffffff8) + 1" (parenthesized_expression "(uVar3 - 1 | 0xfffffff8)" ( (binary_expression "uVar3 - 1 | 0xfffffff8" (binary_expression "uVar3 - 1" identifier - number_literal) | number_literal) )) + number_literal)) ;) })) (expression_statement "iVar1 = uVar14 - uVar3;" (assignment_expression "iVar1 = uVar14 - uVar3" identifier = (binary_expression "uVar14 - uVar3" identifier - identifier)) ;) (expression_statement "piVar15 = (int *)0xc;" (assignment_expression "piVar15 = (int *)0xc" identifier = (cast_expression "(int *)0xc" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar10 = iVar1 + 8;" (assignment_expression "iVar10 = iVar1 + 8" identifier = (binary_expression "iVar1 + 8" identifier + number_literal)) ;) (expression_statement "uVar11 = uVar3;" (assignment_expression "uVar11 = uVar3" identifier = identifier) ;) (do_statement "do {\n    uVar5 = (**(code **)(pcVar20 + -0x7af8))();\n    puVar6 = (undefined1 *)(piVar16[4] + uVar11);\n    uVar11 = uVar11 + 1;\n    *puVar6 = uVar5;\n    pcVar20 = pcStack_c8;\n  } while (uVar11 != 0xc);" do (compound_statement "{\n    uVar5 = (**(code **)(pcVar20 + -0x7af8))();\n    puVar6 = (undefined1 *)(piVar16[4] + uVar11);\n    uVar11 = uVar11 + 1;\n    *puVar6 = uVar5;\n    pcVar20 = pcStack_c8;\n  }" { (expression_statement "uVar5 = (**(code **)(pcVar20 + -0x7af8))();" (assignment_expression "uVar5 = (**(code **)(pcVar20 + -0x7af8))()" identifier = (call_expression "(**(code **)(pcVar20 + -0x7af8))()" (parenthesized_expression "(**(code **)(pcVar20 + -0x7af8))" ( (pointer_expression "**(code **)(pcVar20 + -0x7af8)" * (pointer_expression "*(code **)(pcVar20 + -0x7af8)" * (cast_expression "(code **)(pcVar20 + -0x7af8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + -0x7af8)" ( (binary_expression "pcVar20 + -0x7af8" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "puVar6 = (undefined1 *)(piVar16[4] + uVar11);" (assignment_expression "puVar6 = (undefined1 *)(piVar16[4] + uVar11)" identifier = (cast_expression "(undefined1 *)(piVar16[4] + uVar11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[4] + uVar11)" ( (binary_expression "piVar16[4] + uVar11" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + identifier) )))) ;) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "*puVar6 = uVar5;" (assignment_expression "*puVar6 = uVar5" (pointer_expression "*puVar6" * identifier) = identifier) ;) (expression_statement "pcVar20 = pcStack_c8;" (assignment_expression "pcVar20 = pcStack_c8" identifier = identifier) ;) }) while (parenthesized_expression "(uVar11 != 0xc)" ( (binary_expression "uVar11 != 0xc" identifier != number_literal) )) ;) (expression_statement "iVar12 = uVar3 + 4;" (assignment_expression "iVar12 = uVar3 + 4" identifier = (binary_expression "uVar3 + 4" identifier + number_literal)) ;) (expression_statement "uVar4 = (**(code **)(pcStack_c8 + -0x7af4))(piVar16[4] + iVar12,iVar1 + 4);" (assignment_expression "uVar4 = (**(code **)(pcStack_c8 + -0x7af4))(piVar16[4] + iVar12,iVar1 + 4)" identifier = (call_expression "(**(code **)(pcStack_c8 + -0x7af4))(piVar16[4] + iVar12,iVar1 + 4)" (parenthesized_expression "(**(code **)(pcStack_c8 + -0x7af4))" ( (pointer_expression "**(code **)(pcStack_c8 + -0x7af4)" * (pointer_expression "*(code **)(pcStack_c8 + -0x7af4)" * (cast_expression "(code **)(pcStack_c8 + -0x7af4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcStack_c8 + -0x7af4)" ( (binary_expression "pcStack_c8 + -0x7af4" identifier + number_literal) ))))) )) (argument_list "(piVar16[4] + iVar12,iVar1 + 4)" ( (binary_expression "piVar16[4] + iVar12" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + identifier) , (binary_expression "iVar1 + 4" identifier + number_literal) )))) ;) (expression_statement "iVar7 = iVar10 + uVar3;" (assignment_expression "iVar7 = iVar10 + uVar3" identifier = (binary_expression "iVar10 + uVar3" identifier + identifier)) ;) (expression_statement "*(char *)(piVar16[4] + iVar7) = (char)((uint)uVar4 >> 0x18);" (assignment_expression "*(char *)(piVar16[4] + iVar7) = (char)((uint)uVar4 >> 0x18)" (pointer_expression "*(char *)(piVar16[4] + iVar7)" * (cast_expression "(char *)(piVar16[4] + iVar7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[4] + iVar7)" ( (binary_expression "piVar16[4] + iVar7" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + identifier) )))) = (cast_expression "(char)((uint)uVar4 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar4 >> 0x18)" ( (binary_expression "(uint)uVar4 >> 0x18" (cast_expression "(uint)uVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar13 = (int *)((int)uVar14 >> 8);" (assignment_expression "piVar13 = (int *)((int)uVar14 >> 8)" identifier = (cast_expression "(int *)((int)uVar14 >> 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)uVar14 >> 8)" ( (binary_expression "(int)uVar14 >> 8" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "*(char *)(piVar16[4] + iVar7 + 1) = (char)((uint)uVar4 >> 0x10);" (assignment_expression "*(char *)(piVar16[4] + iVar7 + 1) = (char)((uint)uVar4 >> 0x10)" (pointer_expression "*(char *)(piVar16[4] + iVar7 + 1)" * (cast_expression "(char *)(piVar16[4] + iVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[4] + iVar7 + 1)" ( (binary_expression "piVar16[4] + iVar7 + 1" (binary_expression "piVar16[4] + iVar7" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + identifier) + number_literal) )))) = (cast_expression "(char)((uint)uVar4 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar4 >> 0x10)" ( (binary_expression "(uint)uVar4 >> 0x10" (cast_expression "(uint)uVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*(char *)(piVar16[4] + iVar7 + 2) = (char)((uint)uVar4 >> 8);" (assignment_expression "*(char *)(piVar16[4] + iVar7 + 2) = (char)((uint)uVar4 >> 8)" (pointer_expression "*(char *)(piVar16[4] + iVar7 + 2)" * (cast_expression "(char *)(piVar16[4] + iVar7 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[4] + iVar7 + 2)" ( (binary_expression "piVar16[4] + iVar7 + 2" (binary_expression "piVar16[4] + iVar7" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + identifier) + number_literal) )))) = (cast_expression "(char)((uint)uVar4 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar4 >> 8)" ( (binary_expression "(uint)uVar4 >> 8" (cast_expression "(uint)uVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*(char *)(piVar16[4] + iVar7 + 3) = (char)uVar4;" (assignment_expression "*(char *)(piVar16[4] + iVar7 + 3) = (char)uVar4" (pointer_expression "*(char *)(piVar16[4] + iVar7 + 3)" * (cast_expression "(char *)(piVar16[4] + iVar7 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[4] + iVar7 + 3)" ( (binary_expression "piVar16[4] + iVar7 + 3" (binary_expression "piVar16[4] + iVar7" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + identifier) + number_literal) )))) = (cast_expression "(char)uVar4" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(piVar16[4] + uVar3) = (char)(uVar14 >> 0x18);" (assignment_expression "*(char *)(piVar16[4] + uVar3) = (char)(uVar14 >> 0x18)" (pointer_expression "*(char *)(piVar16[4] + uVar3)" * (cast_expression "(char *)(piVar16[4] + uVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[4] + uVar3)" ( (binary_expression "piVar16[4] + uVar3" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + identifier) )))) = (cast_expression "(char)(uVar14 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar14 >> 0x18)" ( (binary_expression "uVar14 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "*(char *)(piVar16[4] + uVar3 + 1) = (char)(uVar14 >> 0x10);" (assignment_expression "*(char *)(piVar16[4] + uVar3 + 1) = (char)(uVar14 >> 0x10)" (pointer_expression "*(char *)(piVar16[4] + uVar3 + 1)" * (cast_expression "(char *)(piVar16[4] + uVar3 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[4] + uVar3 + 1)" ( (binary_expression "piVar16[4] + uVar3 + 1" (binary_expression "piVar16[4] + uVar3" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + identifier) + number_literal) )))) = (cast_expression "(char)(uVar14 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar14 >> 0x10)" ( (binary_expression "uVar14 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "*(char *)(piVar16[4] + uVar3 + 2) = (char)(uVar14 >> 8);" (assignment_expression "*(char *)(piVar16[4] + uVar3 + 2) = (char)(uVar14 >> 8)" (pointer_expression "*(char *)(piVar16[4] + uVar3 + 2)" * (cast_expression "(char *)(piVar16[4] + uVar3 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[4] + uVar3 + 2)" ( (binary_expression "piVar16[4] + uVar3 + 2" (binary_expression "piVar16[4] + uVar3" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + identifier) + number_literal) )))) = (cast_expression "(char)(uVar14 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar14 >> 8)" ( (binary_expression "uVar14 >> 8" identifier >> number_literal) )))) ;) (expression_statement "*(char *)(piVar16[4] + uVar3 + 3) = (char)uVar14;" (assignment_expression "*(char *)(piVar16[4] + uVar3 + 3) = (char)uVar14" (pointer_expression "*(char *)(piVar16[4] + uVar3 + 3)" * (cast_expression "(char *)(piVar16[4] + uVar3 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[4] + uVar3 + 3)" ( (binary_expression "piVar16[4] + uVar3 + 3" (binary_expression "piVar16[4] + uVar3" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + identifier) + number_literal) )))) = (cast_expression "(char)uVar14" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (piVar17[0x15] != 0) {\n    piVar13 = (int *)(piVar16[4] + iVar12);\n    (**(code **)(piVar17[0x15] + 0xc))(piVar17[0x16],piVar13,iVar10);\n  }" if (parenthesized_expression "(piVar17[0x15] != 0)" ( (binary_expression "piVar17[0x15] != 0" (subscript_expression "piVar17[0x15]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    piVar13 = (int *)(piVar16[4] + iVar12);\n    (**(code **)(piVar17[0x15] + 0xc))(piVar17[0x16],piVar13,iVar10);\n  }" { (expression_statement "piVar13 = (int *)(piVar16[4] + iVar12);" (assignment_expression "piVar13 = (int *)(piVar16[4] + iVar12)" identifier = (cast_expression "(int *)(piVar16[4] + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[4] + iVar12)" ( (binary_expression "piVar16[4] + iVar12" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + identifier) )))) ;) (expression_statement "(**(code **)(piVar17[0x15] + 0xc))(piVar17[0x16],piVar13,iVar10);" (call_expression "(**(code **)(piVar17[0x15] + 0xc))(piVar17[0x16],piVar13,iVar10)" (parenthesized_expression "(**(code **)(piVar17[0x15] + 0xc))" ( (pointer_expression "**(code **)(piVar17[0x15] + 0xc)" * (pointer_expression "*(code **)(piVar17[0x15] + 0xc)" * (cast_expression "(code **)(piVar17[0x15] + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar17[0x15] + 0xc)" ( (binary_expression "piVar17[0x15] + 0xc" (subscript_expression "piVar17[0x15]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(piVar17[0x16],piVar13,iVar10)" ( (subscript_expression "piVar17[0x16]" identifier [ number_literal ]) , identifier , identifier ))) ;) })) (expression_statement "iVar7 = *piVar18;" (assignment_expression "iVar7 = *piVar18" identifier = (pointer_expression "*piVar18" * identifier)) ;) (expression_statement "*puVar2 = uVar3;" (assignment_expression "*puVar2 = uVar3" (pointer_expression "*puVar2" * identifier) = identifier) ;) (if_statement "if (iStack_84 == iVar7) {\n    return iVar1 + 0xc;\n  }" if (parenthesized_expression "(iStack_84 == iVar7)" ( (binary_expression "iStack_84 == iVar7" identifier == identifier) )) (compound_statement "{\n    return iVar1 + 0xc;\n  }" { (return_statement "return iVar1 + 0xc;" return (binary_expression "iVar1 + 0xc" identifier + number_literal) ;) })) (expression_statement "pcVar20 = *(code **)(pcStack_c8 + -0x6fe8);" (assignment_expression "pcVar20 = *(code **)(pcStack_c8 + -0x6fe8)" identifier = (pointer_expression "*(code **)(pcStack_c8 + -0x6fe8)" * (cast_expression "(code **)(pcStack_c8 + -0x6fe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcStack_c8 + -0x6fe8)" ( (binary_expression "pcStack_c8 + -0x6fe8" identifier + number_literal) ))))) ;) (expression_statement "pcVar21 = FUN_0004bc54;" (assignment_expression "pcVar21 = FUN_0004bc54" identifier = identifier) ;) (expression_statement "iVar1 = iStack_84;" (assignment_expression "iVar1 = iStack_84" identifier = identifier) ;) (expression_statement "(*pcVar20)();" (call_expression "(*pcVar20)()" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar7 = *piVar13;" (assignment_expression "iVar7 = *piVar13" identifier = (pointer_expression "*piVar13" * identifier)) ;) (expression_statement "piVar16 = *(int **)(pcVar20 + 0xc69dc);" (assignment_expression "piVar16 = *(int **)(pcVar20 + 0xc69dc)" identifier = (pointer_expression "*(int **)(pcVar20 + 0xc69dc)" * (cast_expression "(int **)(pcVar20 + 0xc69dc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + 0xc69dc)" ( (binary_expression "pcVar20 + 0xc69dc" identifier + number_literal) ))))) ;) (expression_statement "uStack_110 = 0xc;" (assignment_expression "uStack_110 = 0xc" identifier = number_literal) ;) (expression_statement "iStack_124 = *piVar16;" (assignment_expression "iStack_124 = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;) (expression_statement "aiStack_120[1] = iVar12;" (assignment_expression "aiStack_120[1] = iVar12" (subscript_expression "aiStack_120[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "aiStack_120[2] = uVar3;" (assignment_expression "aiStack_120[2] = uVar3" (subscript_expression "aiStack_120[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "aiStack_120[3] = uVar14;" (assignment_expression "aiStack_120[3] = uVar14" (subscript_expression "aiStack_120[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iStack_10c = iVar10;" (assignment_expression "iStack_10c = iVar10" identifier = identifier) ;) (expression_statement "piStack_108 = piVar17;" (assignment_expression "piStack_108 = piVar17" identifier = identifier) ;) (expression_statement "piStack_104 = piVar18;" (assignment_expression "piStack_104 = piVar18" identifier = identifier) ;) (expression_statement "puStack_100 = puVar2;" (assignment_expression "puStack_100 = puVar2" identifier = identifier) ;) (expression_statement "pcStack_fc = pcVar21;" (assignment_expression "pcStack_fc = pcVar21" identifier = identifier) ;) (if_statement "if (*(int *)(iVar1 + 0x18) == 0) goto LAB_0004bd94;" if (parenthesized_expression "(*(int *)(iVar1 + 0x18) == 0)" ( (binary_expression "*(int *)(iVar1 + 0x18) == 0" (pointer_expression "*(int *)(iVar1 + 0x18)" * (cast_expression "(int *)(iVar1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0004bd94;" goto statement_identifier ;)) (expression_statement "uVar3 = *(uint *)(iVar1 + 0x24c);" (assignment_expression "uVar3 = *(uint *)(iVar1 + 0x24c)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x24c)" * (cast_expression "(uint *)(iVar1 + 0x24c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x24c)" ( (binary_expression "iVar1 + 0x24c" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = piVar13[2];" (assignment_expression "iVar10 = piVar13[2]" identifier = (subscript_expression "piVar13[2]" identifier [ number_literal ])) ;) (expression_statement "piVar13[6] = 0;" (assignment_expression "piVar13[6] = 0" (subscript_expression "piVar13[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar13 = iVar7 - (piVar13[5] - piVar13[4]);" (assignment_expression "*piVar13 = iVar7 - (piVar13[5] - piVar13[4])" (pointer_expression "*piVar13" * identifier) = (binary_expression "iVar7 - (piVar13[5] - piVar13[4])" identifier - (parenthesized_expression "(piVar13[5] - piVar13[4])" ( (binary_expression "piVar13[5] - piVar13[4]" (subscript_expression "piVar13[5]" identifier [ number_literal ]) - (subscript_expression "piVar13[4]" identifier [ number_literal ])) )))) ;) (if_statement "if ((uVar3 != 0) && (uVar3 = 0, iVar10 - 0x5eU < 2)) {\n    FUN_00047058(piVar13);\n    if (piVar13[2] == 0x5f) {\n      FUN_00047058();\n    }\n    aiStack_154[2] = 2;\n    aiStack_154[0] = piVar13[6] + 4;\n    FUN_00047b74(piVar13,&iStack_15c,&iStack_158);\n    if (iStack_15c == 0) {\n      iVar10 = piVar13[2];\n      uVar3 = 0;\n    }\n    else {\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }\n  }" if (parenthesized_expression "((uVar3 != 0) && (uVar3 = 0, iVar10 - 0x5eU < 2))" ( (binary_expression "(uVar3 != 0) && (uVar3 = 0, iVar10 - 0x5eU < 2)" (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar3 = 0, iVar10 - 0x5eU < 2)" ( (comma_expression "uVar3 = 0, iVar10 - 0x5eU < 2" (assignment_expression "uVar3 = 0" identifier = number_literal) , (binary_expression "iVar10 - 0x5eU < 2" (binary_expression "iVar10 - 0x5eU" identifier - number_literal) < number_literal)) ))) )) (compound_statement "{\n    FUN_00047058(piVar13);\n    if (piVar13[2] == 0x5f) {\n      FUN_00047058();\n    }\n    aiStack_154[2] = 2;\n    aiStack_154[0] = piVar13[6] + 4;\n    FUN_00047b74(piVar13,&iStack_15c,&iStack_158);\n    if (iStack_15c == 0) {\n      iVar10 = piVar13[2];\n      uVar3 = 0;\n    }\n    else {\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }\n  }" { (expression_statement "FUN_00047058(piVar13);" (call_expression "FUN_00047058(piVar13)" identifier (argument_list "(piVar13)" ( identifier ))) ;) (if_statement "if (piVar13[2] == 0x5f) {\n      FUN_00047058();\n    }" if (parenthesized_expression "(piVar13[2] == 0x5f)" ( (binary_expression "piVar13[2] == 0x5f" (subscript_expression "piVar13[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      FUN_00047058();\n    }" { (expression_statement "FUN_00047058();" (call_expression "FUN_00047058()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "aiStack_154[2] = 2;" (assignment_expression "aiStack_154[2] = 2" (subscript_expression "aiStack_154[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "aiStack_154[0] = piVar13[6] + 4;" (assignment_expression "aiStack_154[0] = piVar13[6] + 4" (subscript_expression "aiStack_154[0]" identifier [ number_literal ]) = (binary_expression "piVar13[6] + 4" (subscript_expression "piVar13[6]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "FUN_00047b74(piVar13,&iStack_15c,&iStack_158);" (call_expression "FUN_00047b74(piVar13,&iStack_15c,&iStack_158)" identifier (argument_list "(piVar13,&iStack_15c,&iStack_158)" ( identifier , (pointer_expression "&iStack_15c" & identifier) , (pointer_expression "&iStack_158" & identifier) ))) ;) (if_statement "if (iStack_15c == 0) {\n      iVar10 = piVar13[2];\n      uVar3 = 0;\n    }\n    else {\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }" if (parenthesized_expression "(iStack_15c == 0)" ( (binary_expression "iStack_15c == 0" identifier == number_literal) )) (compound_statement "{\n      iVar10 = piVar13[2];\n      uVar3 = 0;\n    }" { (expression_statement "iVar10 = piVar13[2];" (assignment_expression "iVar10 = piVar13[2]" identifier = (subscript_expression "piVar13[2]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }" else (compound_statement "{\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }" { (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (expression_statement "iVar10 = piVar13[2];" (assignment_expression "iVar10 = piVar13[2]" identifier = (subscript_expression "piVar13[2]" identifier [ number_literal ])) ;) }))) })) (if_statement "if (iVar10 == 0x32) {\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar17 = &iStack_158;\n      piVar15 = &iStack_15c;\n      piVar13[6] = 0;\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }" if (parenthesized_expression "(iVar10 == 0x32)" ( (binary_expression "iVar10 == 0x32" identifier == number_literal) )) (compound_statement "{\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar17 = &iStack_158;\n      piVar15 = &iStack_15c;\n      piVar13[6] = 0;\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }" { (expression_statement "iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);" (assignment_expression "iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b)" identifier = (call_expression "(**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b)" (parenthesized_expression "(**(code **)(pcVar20 + 0xc5760))" ( (pointer_expression "**(code **)(pcVar20 + 0xc5760)" * (pointer_expression "*(code **)(pcVar20 + 0xc5760)" * (cast_expression "(code **)(pcVar20 + 0xc5760)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + 0xc5760)" ( (binary_expression "pcVar20 + 0xc5760" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar1 + 0x248),0x7b)" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x248)" * (cast_expression "(undefined4 *)(iVar1 + 0x248)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x248)" ( (binary_expression "iVar1 + 0x248" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (iVar10 != 0) {\n      piVar17 = &iStack_158;\n      piVar15 = &iStack_15c;\n      piVar13[6] = 0;\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_0004bd10;\n    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar17 = &iStack_158;\n      piVar15 = &iStack_15c;\n      piVar13[6] = 0;\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_0004bd10;\n    }" { (expression_statement "piVar17 = &iStack_158;" (assignment_expression "piVar17 = &iStack_158" identifier = (pointer_expression "&iStack_158" & identifier)) ;) (expression_statement "piVar15 = &iStack_15c;" (assignment_expression "piVar15 = &iStack_15c" identifier = (pointer_expression "&iStack_15c" & identifier)) ;) (expression_statement "piVar13[6] = 0;" (assignment_expression "piVar13[6] = 0" (subscript_expression "piVar13[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_00047b74(piVar13,piVar15,piVar17);" (call_expression "FUN_00047b74(piVar13,piVar15,piVar17)" identifier (argument_list "(piVar13,piVar15,piVar17)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_00047b74(piVar13,piVar15,piVar17);" (call_expression "FUN_00047b74(piVar13,piVar15,piVar17)" identifier (argument_list "(piVar13,piVar15,piVar17)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_00047b74(piVar13,piVar15,piVar17);" (call_expression "FUN_00047b74(piVar13,piVar15,piVar17)" identifier (argument_list "(piVar13,piVar15,piVar17)" ( identifier , identifier , identifier ))) ;) (if_statement "if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }" if (parenthesized_expression "(iStack_158 == 8)" ( (binary_expression "iStack_158 == 8" identifier == number_literal) )) (compound_statement "{\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }" { (expression_statement "iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);" (assignment_expression "iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8)" identifier = (call_expression "(**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8)" (parenthesized_expression "(**(code **)(pcVar20 + 0xc67dc))" ( (pointer_expression "**(code **)(pcVar20 + 0xc67dc)" * (pointer_expression "*(code **)(pcVar20 + 0xc67dc)" * (cast_expression "(code **)(pcVar20 + 0xc67dc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + 0xc67dc)" ( (binary_expression "pcVar20 + 0xc67dc" identifier + number_literal) ))))) )) (argument_list "(iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8)" ( identifier , (binary_expression "*(int *)(pcVar20 + 0xc56a4) + -0x469c" (pointer_expression "*(int *)(pcVar20 + 0xc56a4)" * (cast_expression "(int *)(pcVar20 + 0xc56a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar20 + 0xc56a4)" ( (binary_expression "pcVar20 + 0xc56a4" identifier + number_literal) )))) + number_literal) , number_literal )))) ;) (if_statement "if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }" { (expression_statement "iVar10 = piVar13[6];" (assignment_expression "iVar10 = piVar13[6]" identifier = (subscript_expression "piVar13[6]" identifier [ number_literal ])) ;) (if_statement "if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }" if (parenthesized_expression "(0 < *piVar13 - iVar10)" ( (binary_expression "0 < *piVar13 - iVar10" number_literal < (binary_expression "*piVar13 - iVar10" (pointer_expression "*piVar13" * identifier) - identifier)) )) (compound_statement "{\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }" { (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "piVar13[6] = iVar10;" (assignment_expression "piVar13[6] = iVar10" (subscript_expression "piVar13[6]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "aiStack_154[uVar3 * 3] = iVar10;" (assignment_expression "aiStack_154[uVar3 * 3] = iVar10" (subscript_expression "aiStack_154[uVar3 * 3]" identifier [ (binary_expression "uVar3 * 3" identifier * number_literal) ]) = identifier) ;) (expression_statement "aiStack_154[uVar3 * 3 + 2] = 1;" (assignment_expression "aiStack_154[uVar3 * 3 + 2] = 1" (subscript_expression "aiStack_154[uVar3 * 3 + 2]" identifier [ (binary_expression "uVar3 * 3 + 2" (binary_expression "uVar3 * 3" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "FUN_00047b74(piVar13,piVar15,piVar17);" (call_expression "FUN_00047b74(piVar13,piVar15,piVar17)" identifier (argument_list "(piVar13,piVar15,piVar17)" ( identifier , identifier , identifier ))) ;) (if_statement "if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }" if (parenthesized_expression "(iStack_15c != 0)" ( (binary_expression "iStack_15c != 0" identifier != number_literal) )) (compound_statement "{\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }" { (expression_statement "piVar18 = (int *)(uVar3 + 1);" (assignment_expression "piVar18 = (int *)(uVar3 + 1)" identifier = (cast_expression "(int *)(uVar3 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 + 1)" ( (binary_expression "uVar3 + 1" identifier + number_literal) )))) ;) (expression_statement "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];" (assignment_expression "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3]" (subscript_expression "aiStack_154[uVar3 * 3 + 1]" identifier [ (binary_expression "uVar3 * 3 + 1" (binary_expression "uVar3 * 3" identifier * number_literal) + number_literal) ]) = (binary_expression "piVar13[6] - aiStack_154[uVar3 * 3]" (subscript_expression "piVar13[6]" identifier [ number_literal ]) - (subscript_expression "aiStack_154[uVar3 * 3]" identifier [ (binary_expression "uVar3 * 3" identifier * number_literal) ]))) ;) (expression_statement "FUN_00047b74(piVar13,piVar15,piVar17);" (call_expression "FUN_00047b74(piVar13,piVar15,piVar17)" identifier (argument_list "(piVar13,piVar15,piVar17)" ( identifier , identifier , identifier ))) ;) (expression_statement "piVar15 = piVar18;" (assignment_expression "piVar15 = piVar18" identifier = identifier) ;) (if_statement "if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }" if (parenthesized_expression "(iStack_15c != 0)" ( (binary_expression "iStack_15c != 0" identifier != number_literal) )) (compound_statement "{\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }" { (expression_statement "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];" (assignment_expression "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3]" (subscript_expression "aiStack_154[uVar3 * 3 + 1]" identifier [ (binary_expression "uVar3 * 3 + 1" (binary_expression "uVar3 * 3" identifier * number_literal) + number_literal) ]) = (binary_expression "piVar13[6] - aiStack_154[(int)piVar18 * 3]" (subscript_expression "piVar13[6]" identifier [ number_literal ]) - (subscript_expression "aiStack_154[(int)piVar18 * 3]" identifier [ (binary_expression "(int)piVar18 * 3" (cast_expression "(int)piVar18" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ]))) ;) })) })) })) })) (goto_statement "goto LAB_0004bd10;" goto statement_identifier ;) })) (expression_statement "iVar10 = piVar13[2];" (assignment_expression "iVar10 = piVar13[2]" identifier = (subscript_expression "piVar13[2]" identifier [ number_literal ])) ;) })) (if_statement "if ((*(int *)(iVar1 + 0x188) == 4) && (iVar10 == 0x3d)) {\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar13[6] = 0;\n      piVar17 = &iStack_158;\n      FUN_00047058(piVar13);\n      aiStack_154[uVar3 * 3] = piVar13[6];\n      aiStack_154[uVar3 * 3 + 2] = 1;\n      do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n      piVar15 = &iStack_15c;\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }" if (parenthesized_expression "((*(int *)(iVar1 + 0x188) == 4) && (iVar10 == 0x3d))" ( (binary_expression "(*(int *)(iVar1 + 0x188) == 4) && (iVar10 == 0x3d)" (parenthesized_expression "(*(int *)(iVar1 + 0x188) == 4)" ( (binary_expression "*(int *)(iVar1 + 0x188) == 4" (pointer_expression "*(int *)(iVar1 + 0x188)" * (cast_expression "(int *)(iVar1 + 0x188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x188)" ( (binary_expression "iVar1 + 0x188" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "(iVar10 == 0x3d)" ( (binary_expression "iVar10 == 0x3d" identifier == number_literal) ))) )) (compound_statement "{\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar13[6] = 0;\n      piVar17 = &iStack_158;\n      FUN_00047058(piVar13);\n      aiStack_154[uVar3 * 3] = piVar13[6];\n      aiStack_154[uVar3 * 3 + 2] = 1;\n      do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n      piVar15 = &iStack_15c;\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }" { (expression_statement "iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);" (assignment_expression "iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b)" identifier = (call_expression "(**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b)" (parenthesized_expression "(**(code **)(pcVar20 + 0xc5760))" ( (pointer_expression "**(code **)(pcVar20 + 0xc5760)" * (pointer_expression "*(code **)(pcVar20 + 0xc5760)" * (cast_expression "(code **)(pcVar20 + 0xc5760)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + 0xc5760)" ( (binary_expression "pcVar20 + 0xc5760" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar1 + 0x248),0x7b)" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x248)" * (cast_expression "(undefined4 *)(iVar1 + 0x248)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x248)" ( (binary_expression "iVar1 + 0x248" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (iVar10 != 0) {\n      piVar13[6] = 0;\n      piVar17 = &iStack_158;\n      FUN_00047058(piVar13);\n      aiStack_154[uVar3 * 3] = piVar13[6];\n      aiStack_154[uVar3 * 3 + 2] = 1;\n      do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n      piVar15 = &iStack_15c;\n      goto LAB_0004bd10;\n    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar13[6] = 0;\n      piVar17 = &iStack_158;\n      FUN_00047058(piVar13);\n      aiStack_154[uVar3 * 3] = piVar13[6];\n      aiStack_154[uVar3 * 3 + 2] = 1;\n      do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n      piVar15 = &iStack_15c;\n      goto LAB_0004bd10;\n    }" { (expression_statement "piVar13[6] = 0;" (assignment_expression "piVar13[6] = 0" (subscript_expression "piVar13[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar17 = &iStack_158;" (assignment_expression "piVar17 = &iStack_158" identifier = (pointer_expression "&iStack_158" & identifier)) ;) (expression_statement "FUN_00047058(piVar13);" (call_expression "FUN_00047058(piVar13)" identifier (argument_list "(piVar13)" ( identifier ))) ;) (expression_statement "aiStack_154[uVar3 * 3] = piVar13[6];" (assignment_expression "aiStack_154[uVar3 * 3] = piVar13[6]" (subscript_expression "aiStack_154[uVar3 * 3]" identifier [ (binary_expression "uVar3 * 3" identifier * number_literal) ]) = (subscript_expression "piVar13[6]" identifier [ number_literal ])) ;) (expression_statement "aiStack_154[uVar3 * 3 + 2] = 1;" (assignment_expression "aiStack_154[uVar3 * 3 + 2] = 1" (subscript_expression "aiStack_154[uVar3 * 3 + 2]" identifier [ (binary_expression "uVar3 * 3 + 2" (binary_expression "uVar3 * 3" identifier * number_literal) + number_literal) ]) = number_literal) ;) (do_statement "do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);" do (compound_statement "{\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      }" { (expression_statement "FUN_00047b74(piVar13,&iStack_15c,piVar17);" (call_expression "FUN_00047b74(piVar13,&iStack_15c,piVar17)" identifier (argument_list "(piVar13,&iStack_15c,piVar17)" ( identifier , (pointer_expression "&iStack_15c" & identifier) , identifier ))) ;) }) while (parenthesized_expression "(iStack_15c != 0)" ( (binary_expression "iStack_15c != 0" identifier != number_literal) )) ;) (expression_statement "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];" (assignment_expression "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3]" (subscript_expression "aiStack_154[uVar3 * 3 + 1]" identifier [ (binary_expression "uVar3 * 3 + 1" (binary_expression "uVar3 * 3" identifier * number_literal) + number_literal) ]) = (binary_expression "piVar13[6] - aiStack_154[uVar3 * 3]" (subscript_expression "piVar13[6]" identifier [ number_literal ]) - (subscript_expression "aiStack_154[uVar3 * 3]" identifier [ (binary_expression "uVar3 * 3" identifier * number_literal) ]))) ;) (expression_statement "piVar15 = &iStack_15c;" (assignment_expression "piVar15 = &iStack_15c" identifier = (pointer_expression "&iStack_15c" & identifier)) ;) (goto_statement "goto LAB_0004bd10;" goto statement_identifier ;) })) (expression_statement "iVar10 = piVar13[2];" (assignment_expression "iVar10 = piVar13[2]" identifier = (subscript_expression "piVar13[2]" identifier [ number_literal ])) ;) })) (if_statement "if ((iVar10 == 0x62) &&\n     (iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0))\n  {\n    piVar13[6] = 0;\n    piVar17 = &iStack_158;\n    piVar15 = &iStack_15c;\n    FUN_00047058(piVar13);\n    FUN_00047b74();\n    if (iStack_158 == 7) {\n      iVar7 = piVar13[6];\n      iVar10 = iVar7 + 1;\n      piVar18 = piVar15;\n      if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;\n      if (*piVar13 - iVar10 < 1) goto LAB_0004c510;\n      piVar13[6] = iVar7 + 2;\n      goto LAB_0004c1fc;\n    }\n  }" if (parenthesized_expression "((iVar10 == 0x62) &&\n     (iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0))" ( (binary_expression "(iVar10 == 0x62) &&\n     (iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0)" (parenthesized_expression "(iVar10 == 0x62)" ( (binary_expression "iVar10 == 0x62" identifier == number_literal) )) && (parenthesized_expression "(iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0)" ( (comma_expression "iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0" (assignment_expression "iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b)" identifier = (call_expression "(**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b)" (parenthesized_expression "(**(code **)(pcVar20 + 0xc5760))" ( (pointer_expression "**(code **)(pcVar20 + 0xc5760)" * (pointer_expression "*(code **)(pcVar20 + 0xc5760)" * (cast_expression "(code **)(pcVar20 + 0xc5760)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + 0xc5760)" ( (binary_expression "pcVar20 + 0xc5760" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar1 + 0x248),0x7b)" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x248)" * (cast_expression "(undefined4 *)(iVar1 + 0x248)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x248)" ( (binary_expression "iVar1 + 0x248" identifier + number_literal) )))) , number_literal )))) , (binary_expression "iVar10 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    piVar13[6] = 0;\n    piVar17 = &iStack_158;\n    piVar15 = &iStack_15c;\n    FUN_00047058(piVar13);\n    FUN_00047b74();\n    if (iStack_158 == 7) {\n      iVar7 = piVar13[6];\n      iVar10 = iVar7 + 1;\n      piVar18 = piVar15;\n      if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;\n      if (*piVar13 - iVar10 < 1) goto LAB_0004c510;\n      piVar13[6] = iVar7 + 2;\n      goto LAB_0004c1fc;\n    }\n  }" { (expression_statement "piVar13[6] = 0;" (assignment_expression "piVar13[6] = 0" (subscript_expression "piVar13[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar17 = &iStack_158;" (assignment_expression "piVar17 = &iStack_158" identifier = (pointer_expression "&iStack_158" & identifier)) ;) (expression_statement "piVar15 = &iStack_15c;" (assignment_expression "piVar15 = &iStack_15c" identifier = (pointer_expression "&iStack_15c" & identifier)) ;) (expression_statement "FUN_00047058(piVar13);" (call_expression "FUN_00047058(piVar13)" identifier (argument_list "(piVar13)" ( identifier ))) ;) (expression_statement "FUN_00047b74();" (call_expression "FUN_00047b74()" identifier (argument_list "()" ( ))) ;) (if_statement "if (iStack_158 == 7) {\n      iVar7 = piVar13[6];\n      iVar10 = iVar7 + 1;\n      piVar18 = piVar15;\n      if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;\n      if (*piVar13 - iVar10 < 1) goto LAB_0004c510;\n      piVar13[6] = iVar7 + 2;\n      goto LAB_0004c1fc;\n    }" if (parenthesized_expression "(iStack_158 == 7)" ( (binary_expression "iStack_158 == 7" identifier == number_literal) )) (compound_statement "{\n      iVar7 = piVar13[6];\n      iVar10 = iVar7 + 1;\n      piVar18 = piVar15;\n      if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;\n      if (*piVar13 - iVar10 < 1) goto LAB_0004c510;\n      piVar13[6] = iVar7 + 2;\n      goto LAB_0004c1fc;\n    }" { (expression_statement "iVar7 = piVar13[6];" (assignment_expression "iVar7 = piVar13[6]" identifier = (subscript_expression "piVar13[6]" identifier [ number_literal ])) ;) (expression_statement "iVar10 = iVar7 + 1;" (assignment_expression "iVar10 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "piVar18 = piVar15;" (assignment_expression "piVar18 = piVar15" identifier = identifier) ;) (if_statement "if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;" if (parenthesized_expression "(*piVar13 - iVar7 < 1)" ( (binary_expression "*piVar13 - iVar7 < 1" (binary_expression "*piVar13 - iVar7" (pointer_expression "*piVar13" * identifier) - identifier) < number_literal) )) (goto_statement "goto LAB_0004c1fc;" goto statement_identifier ;)) (if_statement "if (*piVar13 - iVar10 < 1) goto LAB_0004c510;" if (parenthesized_expression "(*piVar13 - iVar10 < 1)" ( (binary_expression "*piVar13 - iVar10 < 1" (binary_expression "*piVar13 - iVar10" (pointer_expression "*piVar13" * identifier) - identifier) < number_literal) )) (goto_statement "goto LAB_0004c510;" goto statement_identifier ;)) (expression_statement "piVar13[6] = iVar7 + 2;" (assignment_expression "piVar13[6] = iVar7 + 2" (subscript_expression "piVar13[6]" identifier [ number_literal ]) = (binary_expression "iVar7 + 2" identifier + number_literal)) ;) (goto_statement "goto LAB_0004c1fc;" goto statement_identifier ;) })) })) (labeled_statement "LAB_0004bd10:\n  do {\n    FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5));\n    log_packet(*(undefined4 *)(iVar1 + 0x18),1);\n    iVar7 = (piVar13[5] - piVar13[4]) + *piVar13;\n    *piVar13 = iVar7;\nLAB_0004bd94:\n    uVar3 = *(uint *)(iVar1 + 0xec);\n    if (uVar3 == 0) {\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }\n    else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }\n    if (iStack_124 == *piVar16) {\n      return iVar10;\n    }\n    iVar10 = iStack_124;\n    (**(code **)(pcVar20 + 0xc6674))();\nLAB_0004c510:\n    piVar13[6] = iVar10;\n    piVar18 = piVar15;\nLAB_0004c1fc:\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    iVar10 = piVar13[6];\n    piVar15 = aiStack_120 + uVar3 * 3;\n    aiStack_154[uVar3 * 3 + 2] = 1;\n    aiStack_154[uVar3 * 3] = iVar10;\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    if (iStack_15c != 0) {\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }\n  } while( true );" statement_identifier : (do_statement "do {\n    FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5));\n    log_packet(*(undefined4 *)(iVar1 + 0x18),1);\n    iVar7 = (piVar13[5] - piVar13[4]) + *piVar13;\n    *piVar13 = iVar7;\nLAB_0004bd94:\n    uVar3 = *(uint *)(iVar1 + 0xec);\n    if (uVar3 == 0) {\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }\n    else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }\n    if (iStack_124 == *piVar16) {\n      return iVar10;\n    }\n    iVar10 = iStack_124;\n    (**(code **)(pcVar20 + 0xc6674))();\nLAB_0004c510:\n    piVar13[6] = iVar10;\n    piVar18 = piVar15;\nLAB_0004c1fc:\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    iVar10 = piVar13[6];\n    piVar15 = aiStack_120 + uVar3 * 3;\n    aiStack_154[uVar3 * 3 + 2] = 1;\n    aiStack_154[uVar3 * 3] = iVar10;\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    if (iStack_15c != 0) {\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }\n  } while( true );" do (compound_statement "{\n    FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5));\n    log_packet(*(undefined4 *)(iVar1 + 0x18),1);\n    iVar7 = (piVar13[5] - piVar13[4]) + *piVar13;\n    *piVar13 = iVar7;\nLAB_0004bd94:\n    uVar3 = *(uint *)(iVar1 + 0xec);\n    if (uVar3 == 0) {\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }\n    else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }\n    if (iStack_124 == *piVar16) {\n      return iVar10;\n    }\n    iVar10 = iStack_124;\n    (**(code **)(pcVar20 + 0xc6674))();\nLAB_0004c510:\n    piVar13[6] = iVar10;\n    piVar18 = piVar15;\nLAB_0004c1fc:\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    iVar10 = piVar13[6];\n    piVar15 = aiStack_120 + uVar3 * 3;\n    aiStack_154[uVar3 * 3 + 2] = 1;\n    aiStack_154[uVar3 * 3] = iVar10;\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    if (iStack_15c != 0) {\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }\n  }" { (expression_statement "FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5));" (call_expression "FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5))" identifier (argument_list "(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5))" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x184)" * (cast_expression "(undefined4 *)(iVar1 + 0x184)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x184)" ( (binary_expression "iVar1 + 0x184" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar1 + 0x188)" * (cast_expression "(undefined4 *)(iVar1 + 0x188)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x188)" ( (binary_expression "iVar1 + 0x188" identifier + number_literal) )))) , (pointer_expression "*(undefined1 *)(piVar13[4] + 5)" * (cast_expression "(undefined1 *)(piVar13[4] + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar13[4] + 5)" ( (binary_expression "piVar13[4] + 5" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + number_literal) )))) ))) ;) (expression_statement "log_packet(*(undefined4 *)(iVar1 + 0x18),1);" (call_expression "log_packet(*(undefined4 *)(iVar1 + 0x18),1)" identifier (argument_list "(*(undefined4 *)(iVar1 + 0x18),1)" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" * (cast_expression "(undefined4 *)(iVar1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "iVar7 = (piVar13[5] - piVar13[4]) + *piVar13;" (assignment_expression "iVar7 = (piVar13[5] - piVar13[4]) + *piVar13" identifier = (binary_expression "(piVar13[5] - piVar13[4]) + *piVar13" (parenthesized_expression "(piVar13[5] - piVar13[4])" ( (binary_expression "piVar13[5] - piVar13[4]" (subscript_expression "piVar13[5]" identifier [ number_literal ]) - (subscript_expression "piVar13[4]" identifier [ number_literal ])) )) + (pointer_expression "*piVar13" * identifier))) ;) (expression_statement "*piVar13 = iVar7;" (assignment_expression "*piVar13 = iVar7" (pointer_expression "*piVar13" * identifier) = identifier) ;) (labeled_statement "LAB_0004bd94:\n    uVar3 = *(uint *)(iVar1 + 0xec);" statement_identifier : (expression_statement "uVar3 = *(uint *)(iVar1 + 0xec);" (assignment_expression "uVar3 = *(uint *)(iVar1 + 0xec)" identifier = (pointer_expression "*(uint *)(iVar1 + 0xec)" * (cast_expression "(uint *)(iVar1 + 0xec)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xec)" ( (binary_expression "iVar1 + 0xec" identifier + number_literal) ))))) ;)) (if_statement "if (uVar3 == 0) {\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }\n    else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }" { (if_statement "if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }" if (parenthesized_expression "(*(int *)(iVar1 + 0x88) != 0)" ( (binary_expression "*(int *)(iVar1 + 0x88) != 0" (pointer_expression "*(int *)(iVar1 + 0x88)" * (cast_expression "(int *)(iVar1 + 0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x88)" ( (binary_expression "iVar1 + 0x88" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }" { (expression_statement "iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);" (assignment_expression "iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158)" identifier = (call_expression "(**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158)" (parenthesized_expression "(**(code **)(*(int *)(iVar1 + 0x88) + 0x10))" ( (pointer_expression "**(code **)(*(int *)(iVar1 + 0x88) + 0x10)" * (pointer_expression "*(code **)(*(int *)(iVar1 + 0x88) + 0x10)" * (cast_expression "(code **)(*(int *)(iVar1 + 0x88) + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar1 + 0x88) + 0x10)" ( (binary_expression "*(int *)(iVar1 + 0x88) + 0x10" (pointer_expression "*(int *)(iVar1 + 0x88)" * (cast_expression "(int *)(iVar1 + 0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x88)" ( (binary_expression "iVar1 + 0x88" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158)" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x90)" * (cast_expression "(undefined4 *)(iVar1 + 0x90)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x90)" ( (binary_expression "iVar1 + 0x90" identifier + number_literal) )))) , (binary_expression "piVar13[4] + 5" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + number_literal) , (binary_expression "iVar7 + -5" identifier + number_literal) , (pointer_expression "&iStack_15c" & identifier) , (pointer_expression "&iStack_158" & identifier) )))) ;) (if_statement "if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar7 = *piVar13;\n        }" { (expression_statement "iVar7 = *piVar13;" (assignment_expression "iVar7 = *piVar13" identifier = (pointer_expression "*piVar13" * identifier)) ;) }) (else_clause "else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }" else (compound_statement "{\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }" { (expression_statement "*piVar13 = 5;" (assignment_expression "*piVar13 = 5" (pointer_expression "*piVar13" * identifier) = number_literal) ;) (expression_statement "FUN_0004b364(piVar13,iStack_15c,iStack_158);" (call_expression "FUN_0004b364(piVar13,iStack_15c,iStack_158)" identifier (argument_list "(piVar13,iStack_15c,iStack_158)" ( identifier , identifier , identifier ))) ;) (expression_statement "safefree(iStack_15c);" (call_expression "safefree(iStack_15c)" identifier (argument_list "(iStack_15c)" ( identifier ))) ;) (expression_statement "iVar7 = *piVar13;" (assignment_expression "iVar7 = *piVar13" identifier = (pointer_expression "*piVar13" * identifier)) ;) }))) })) (if_statement "if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }" if (parenthesized_expression "(*(int *)(iVar1 + 0x60) == 0)" ( (binary_expression "*(int *)(iVar1 + 0x60) == 0" (pointer_expression "*(int *)(iVar1 + 0x60)" * (cast_expression "(int *)(iVar1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x60)" ( (binary_expression "iVar1 + 0x60" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        iVar10 = 8;\n      }" { (expression_statement "iVar10 = 8;" (assignment_expression "iVar10 = 8" identifier = number_literal) ;) }) (else_clause "else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }" else (compound_statement "{\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }" { (expression_statement "iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);" (assignment_expression "iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24)" identifier = (pointer_expression "*(int *)(*(int *)(iVar1 + 0x60) + 0x24)" * (cast_expression "(int *)(*(int *)(iVar1 + 0x60) + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 0x60) + 0x24)" ( (binary_expression "*(int *)(iVar1 + 0x60) + 0x24" (pointer_expression "*(int *)(iVar1 + 0x60)" * (cast_expression "(int *)(iVar1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x60)" ( (binary_expression "iVar1 + 0x60" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "iVar10 = 8;" (assignment_expression "iVar10 = 8" identifier = number_literal) ;) (if_statement "if (7 < iVar12) {\n          iVar10 = iVar12;\n        }" if (parenthesized_expression "(7 < iVar12)" ( (binary_expression "7 < iVar12" number_literal < identifier) )) (compound_statement "{\n          iVar10 = iVar12;\n        }" { (expression_statement "iVar10 = iVar12;" (assignment_expression "iVar10 = iVar12" identifier = identifier) ;) })) }))) (expression_statement "iVar12 = *(int *)(iVar1 + 0x70);" (assignment_expression "iVar12 = *(int *)(iVar1 + 0x70)" identifier = (pointer_expression "*(int *)(iVar1 + 0x70)" * (cast_expression "(int *)(iVar1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x70)" ( (binary_expression "iVar1 + 0x70" identifier + number_literal) ))))) ;) (if_statement "if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }" if (parenthesized_expression "((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0))" ( (binary_expression "(iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)" (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(int *)(iVar1 + 0x78) == 0)" ( (binary_expression "*(int *)(iVar1 + 0x78) == 0" (pointer_expression "*(int *)(iVar1 + 0x78)" * (cast_expression "(int *)(iVar1 + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x78)" ( (binary_expression "iVar1 + 0x78" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }" { (expression_statement "iVar8 = piVar13[1];" (assignment_expression "iVar8 = piVar13[1]" identifier = (subscript_expression "piVar13[1]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = iVar7;" (assignment_expression "iVar9 = iVar7" identifier = identifier) ;) (if_statement "if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;" if (parenthesized_expression "(iVar8 <= iVar7 + 4)" ( (binary_expression "iVar8 <= iVar7 + 4" identifier <= (binary_expression "iVar7 + 4" identifier + number_literal)) )) (goto_statement "goto LAB_0004c04c;" goto statement_identifier ;)) (labeled_statement "LAB_0004be1c:\n        iVar8 = iVar8 - iVar7;" statement_identifier : (expression_statement "iVar8 = iVar8 - iVar7;" (assignment_expression "iVar8 = iVar8 - iVar7" identifier = (binary_expression "iVar8 - iVar7" identifier - identifier)) ;)) }) (else_clause "else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }" else (compound_statement "{\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }" { (expression_statement "iVar8 = piVar13[1];" (assignment_expression "iVar8 = piVar13[1]" identifier = (subscript_expression "piVar13[1]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = iVar7 + -4;" (assignment_expression "iVar9 = iVar7 + -4" identifier = (binary_expression "iVar7 + -4" identifier + number_literal)) ;) (if_statement "if (iVar7 + 4 < iVar8) goto LAB_0004be1c;" if (parenthesized_expression "(iVar7 + 4 < iVar8)" ( (binary_expression "iVar7 + 4 < iVar8" (binary_expression "iVar7 + 4" identifier + number_literal) < identifier) )) (goto_statement "goto LAB_0004be1c;" goto statement_identifier ;)) (labeled_statement "LAB_0004c04c:\n        iVar8 = 4;" statement_identifier : (expression_statement "iVar8 = 4;" (assignment_expression "iVar8 = 4" identifier = number_literal) ;)) }))) (if_statement "if (iVar10 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (iVar10 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;" (assignment_expression "uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8" identifier = (binary_expression "(iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8" (binary_expression "(iVar10 - (iVar8 + iVar9) % iVar10) % iVar10" (parenthesized_expression "(iVar10 - (iVar8 + iVar9) % iVar10)" ( (binary_expression "iVar10 - (iVar8 + iVar9) % iVar10" identifier - (binary_expression "(iVar8 + iVar9) % iVar10" (parenthesized_expression "(iVar8 + iVar9)" ( (binary_expression "iVar8 + iVar9" identifier + identifier) )) % identifier)) )) % identifier) + identifier)) ;) (if_statement "if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }" if (parenthesized_expression "(0xff < (int)uVar14)" ( (binary_expression "0xff < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }" { (expression_statement "iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);" (assignment_expression "iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0)" identifier = (call_expression "(**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0)" (parenthesized_expression "(**(code **)(pcVar20 + 0xc62fc))" ( (pointer_expression "**(code **)(pcVar20 + 0xc62fc)" * (pointer_expression "*(code **)(pcVar20 + 0xc62fc)" * (cast_expression "(code **)(pcVar20 + 0xc62fc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + 0xc62fc)" ( (binary_expression "pcVar20 + 0xc62fc" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0)" ( (binary_expression "*(int *)(pcVar20 + 0xc56a4) + -0x54a0" (pointer_expression "*(int *)(pcVar20 + 0xc56a4)" * (cast_expression "(int *)(pcVar20 + 0xc56a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar20 + 0xc56a4)" ( (binary_expression "pcVar20 + 0xc56a4" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(pcVar20 + 0xc56a4) + -0x6580" (pointer_expression "*(int *)(pcVar20 + 0xc56a4)" * (cast_expression "(int *)(pcVar20 + 0xc56a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar20 + 0xc56a4)" ( (binary_expression "pcVar20 + 0xc56a4" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(pcVar20 + 0xc56a4) + -0x1ce0" (pointer_expression "*(int *)(pcVar20 + 0xc56a4)" * (cast_expression "(int *)(pcVar20 + 0xc56a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar20 + 0xc56a4)" ( (binary_expression "pcVar20 + 0xc56a4" identifier + number_literal) )))) + number_literal) )))) ;) (return_statement "return iVar1;" return identifier ;) })) (expression_statement "piVar15 = (int *)0x0;" (assignment_expression "piVar15 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }" { (expression_statement "piVar15 = *(int **)(iVar12 + 0x2c);" (assignment_expression "piVar15 = *(int **)(iVar12 + 0x2c)" identifier = (pointer_expression "*(int **)(iVar12 + 0x2c)" * (cast_expression "(int **)(iVar12 + 0x2c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + 0x2c)" ( (binary_expression "iVar12 + 0x2c" identifier + number_literal) ))))) ;) })) (if_statement "if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }" if (parenthesized_expression "(piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15))" ( (binary_expression "piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)" (subscript_expression "piVar13[7]" identifier [ number_literal ]) < (cast_expression "(int)(uVar14 + iVar7 + (int)piVar15)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar14 + iVar7 + (int)piVar15)" ( (binary_expression "uVar14 + iVar7 + (int)piVar15" (binary_expression "uVar14 + iVar7" identifier + identifier) + (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n        FUN_0004b2d8(piVar13);\n      }" { (expression_statement "FUN_0004b2d8(piVar13);" (call_expression "FUN_0004b2d8(piVar13)" identifier (argument_list "(piVar13)" ( identifier ))) ;) })) (expression_statement "*(char *)(piVar13[4] + 4) = (char)uVar14;" (assignment_expression "*(char *)(piVar13[4] + 4) = (char)uVar14" (pointer_expression "*(char *)(piVar13[4] + 4)" * (cast_expression "(char *)(piVar13[4] + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar13[4] + 4)" ( (binary_expression "piVar13[4] + 4" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)uVar14" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (if_statement "if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }" if (parenthesized_expression "(0 < (int)uVar14)" ( (binary_expression "0 < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }" { (do_statement "do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);" do (compound_statement "{\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        }" { (expression_statement "uVar5 = (**(code **)(pcVar20 + 0xc5b64))();" (assignment_expression "uVar5 = (**(code **)(pcVar20 + 0xc5b64))()" identifier = (call_expression "(**(code **)(pcVar20 + 0xc5b64))()" (parenthesized_expression "(**(code **)(pcVar20 + 0xc5b64))" ( (pointer_expression "**(code **)(pcVar20 + 0xc5b64)" * (pointer_expression "*(code **)(pcVar20 + 0xc5b64)" * (cast_expression "(code **)(pcVar20 + 0xc5b64)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + 0xc5b64)" ( (binary_expression "pcVar20 + 0xc5b64" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "iVar10 = piVar13[4] + uVar11;" (assignment_expression "iVar10 = piVar13[4] + uVar11" identifier = (binary_expression "piVar13[4] + uVar11" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(iVar10 + *piVar13) = uVar5;" (assignment_expression "*(undefined1 *)(iVar10 + *piVar13) = uVar5" (pointer_expression "*(undefined1 *)(iVar10 + *piVar13)" * (cast_expression "(undefined1 *)(iVar10 + *piVar13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + *piVar13)" ( (binary_expression "iVar10 + *piVar13" identifier + (pointer_expression "*piVar13" * identifier)) )))) = identifier) ;) (expression_statement "uVar3 = uVar11;" (assignment_expression "uVar3 = uVar11" identifier = identifier) ;) }) while (parenthesized_expression "(uVar14 != uVar11)" ( (binary_expression "uVar14 != uVar11" identifier != identifier) )) ;) })) (expression_statement "*(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);" (assignment_expression "*(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18)" (pointer_expression "*(char *)piVar13[4]" * (cast_expression "(char *)piVar13[4]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar13[4]" identifier [ number_literal ]))) = (cast_expression "(char)(uVar14 + *piVar13 + -4 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar14 + *piVar13 + -4 >> 0x18)" ( (binary_expression "uVar14 + *piVar13 + -4 >> 0x18" (binary_expression "uVar14 + *piVar13 + -4" (binary_expression "uVar14 + *piVar13" identifier + (pointer_expression "*piVar13" * identifier)) + number_literal) >> number_literal) )))) ;) (expression_statement "*(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);" (assignment_expression "*(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10)" (pointer_expression "*(char *)(piVar13[4] + 1)" * (cast_expression "(char *)(piVar13[4] + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar13[4] + 1)" ( (binary_expression "piVar13[4] + 1" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)(uVar14 + *piVar13 + -4 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar14 + *piVar13 + -4 >> 0x10)" ( (binary_expression "uVar14 + *piVar13 + -4 >> 0x10" (binary_expression "uVar14 + *piVar13 + -4" (binary_expression "uVar14 + *piVar13" identifier + (pointer_expression "*piVar13" * identifier)) + number_literal) >> number_literal) )))) ;) (expression_statement "*(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);" (assignment_expression "*(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8)" (pointer_expression "*(char *)(piVar13[4] + 2)" * (cast_expression "(char *)(piVar13[4] + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar13[4] + 2)" ( (binary_expression "piVar13[4] + 2" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)(uVar14 + *piVar13 + -4 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar14 + *piVar13 + -4 >> 8)" ( (binary_expression "uVar14 + *piVar13 + -4 >> 8" (binary_expression "uVar14 + *piVar13 + -4" (binary_expression "uVar14 + *piVar13" identifier + (pointer_expression "*piVar13" * identifier)) + number_literal) >> number_literal) )))) ;) (expression_statement "piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);" (assignment_expression "piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4)" identifier = (cast_expression "(int *)((uVar14 & 0xff) + *piVar13 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar14 & 0xff) + *piVar13 + -4)" ( (binary_expression "(uVar14 & 0xff) + *piVar13 + -4" (binary_expression "(uVar14 & 0xff) + *piVar13" (parenthesized_expression "(uVar14 & 0xff)" ( (binary_expression "uVar14 & 0xff" identifier & number_literal) )) + (pointer_expression "*piVar13" * identifier)) + number_literal) )))) ;) (expression_statement "*(char *)(piVar13[4] + 3) = (char)piVar17;" (assignment_expression "*(char *)(piVar13[4] + 3) = (char)piVar17" (pointer_expression "*(char *)(piVar13[4] + 3)" * (cast_expression "(char *)(piVar13[4] + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar13[4] + 3)" ( (binary_expression "piVar13[4] + 3" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)piVar17" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar10 = *(int *)(iVar1 + 0x60);" (assignment_expression "iVar10 = *(int *)(iVar1 + 0x60)" identifier = (pointer_expression "*(int *)(iVar1 + 0x60)" * (cast_expression "(int *)(iVar1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x60)" ( (binary_expression "iVar1 + 0x60" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }" { (expression_statement "iVar7 = *(int *)(iVar1 + 0x70);" (assignment_expression "iVar7 = *(int *)(iVar1 + 0x70)" identifier = (pointer_expression "*(int *)(iVar1 + 0x70)" * (cast_expression "(int *)(iVar1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x70)" ( (binary_expression "iVar1 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = piVar13[4];" (assignment_expression "iVar12 = piVar13[4]" identifier = (subscript_expression "piVar13[4]" identifier [ number_literal ])) ;) (if_statement "if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }" { (expression_statement "iVar9 = uVar14 + *piVar13;" (assignment_expression "iVar9 = uVar14 + *piVar13" identifier = (binary_expression "uVar14 + *piVar13" identifier + (pointer_expression "*piVar13" * identifier))) ;) (if_statement "if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;" if (parenthesized_expression "(*(int *)(iVar1 + 0x78) == 0)" ( (binary_expression "*(int *)(iVar1 + 0x78) == 0" (pointer_expression "*(int *)(iVar1 + 0x78)" * (cast_expression "(int *)(iVar1 + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x78)" ( (binary_expression "iVar1 + 0x78" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0004bfa4;" goto statement_identifier ;)) (labeled_statement "LAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);" statement_identifier : (expression_statement "pcVar21 = *(code **)(iVar7 + 0xc);" (assignment_expression "pcVar21 = *(code **)(iVar7 + 0xc)" identifier = (pointer_expression "*(code **)(iVar7 + 0xc)" * (cast_expression "(code **)(iVar7 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));" statement_identifier : (expression_statement "(*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));" (call_expression "(*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac))" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac))" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x80)" * (cast_expression "(undefined4 *)(iVar1 + 0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x80)" ( (binary_expression "iVar1 + 0x80" identifier + number_literal) )))) , identifier , identifier , (pointer_expression "*(undefined4 *)(iVar1 + 0x1ac)" * (cast_expression "(undefined4 *)(iVar1 + 0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1ac)" ( (binary_expression "iVar1 + 0x1ac" identifier + number_literal) )))) ))) ;)) (expression_statement "iVar12 = piVar13[4];" (assignment_expression "iVar12 = piVar13[4]" identifier = (subscript_expression "piVar13[4]" identifier [ number_literal ])) ;) })) }) (else_clause "else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }" else (compound_statement "{\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }" { (expression_statement "iVar12 = piVar13[4];" (assignment_expression "iVar12 = piVar13[4]" identifier = (subscript_expression "piVar13[4]" identifier [ number_literal ])) ;) (if_statement "if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }" if (parenthesized_expression "((*(uint *)(iVar10 + 0x30) & 2) == 0)" ( (binary_expression "(*(uint *)(iVar10 + 0x30) & 2) == 0" (parenthesized_expression "(*(uint *)(iVar10 + 0x30) & 2)" ( (binary_expression "*(uint *)(iVar10 + 0x30) & 2" (pointer_expression "*(uint *)(iVar10 + 0x30)" * (cast_expression "(uint *)(iVar10 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x30)" ( (binary_expression "iVar10 + 0x30" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }" { (expression_statement "iVar7 = *(int *)(iVar1 + 0x70);" (assignment_expression "iVar7 = *(int *)(iVar1 + 0x70)" identifier = (pointer_expression "*(int *)(iVar1 + 0x70)" * (cast_expression "(int *)(iVar1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x70)" ( (binary_expression "iVar1 + 0x70" identifier + number_literal) ))))) ;) (if_statement "if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }" { (expression_statement "iVar9 = uVar14 + *piVar13;" (assignment_expression "iVar9 = uVar14 + *piVar13" identifier = (binary_expression "uVar14 + *piVar13" identifier + (pointer_expression "*piVar13" * identifier))) ;) (if_statement "if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }" if (parenthesized_expression "(*(int *)(iVar1 + 0x78) != 0)" ( (binary_expression "*(int *)(iVar1 + 0x78) != 0" (pointer_expression "*(int *)(iVar1 + 0x78)" * (cast_expression "(int *)(iVar1 + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x78)" ( (binary_expression "iVar1 + 0x78" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }" { (labeled_statement "LAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);" statement_identifier : (expression_statement "(**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);" (call_expression "(**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4)" (parenthesized_expression "(**(code **)(iVar10 + 0x10))" ( (pointer_expression "**(code **)(iVar10 + 0x10)" * (pointer_expression "*(code **)(iVar10 + 0x10)" * (cast_expression "(code **)(iVar10 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + 0x10)" ( (binary_expression "iVar10 + 0x10" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4)" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x68)" * (cast_expression "(undefined4 *)(iVar1 + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x68)" ( (binary_expression "iVar1 + 0x68" identifier + number_literal) )))) , (binary_expression "iVar12 + 4" identifier + number_literal) , (binary_expression "iVar9 + -4" identifier + number_literal) ))) ;)) (expression_statement "iVar12 = piVar13[4];" (assignment_expression "iVar12 = piVar13[4]" identifier = (subscript_expression "piVar13[4]" identifier [ number_literal ])) ;) (expression_statement "iVar7 = *(int *)(iVar1 + 0x70);" (assignment_expression "iVar7 = *(int *)(iVar1 + 0x70)" identifier = (pointer_expression "*(int *)(iVar1 + 0x70)" * (cast_expression "(int *)(iVar1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x70)" ( (binary_expression "iVar1 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = uVar14 + *piVar13;" (assignment_expression "iVar9 = uVar14 + *piVar13" identifier = (binary_expression "uVar14 + *piVar13" identifier + (pointer_expression "*piVar13" * identifier))) ;) (goto_statement "goto LAB_0004c100;" goto statement_identifier ;) })) (goto_statement "goto LAB_0004bfa4;" goto statement_identifier ;) })) }) (else_clause "else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }" else (compound_statement "{\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }" { (expression_statement "(**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));" (call_expression "(**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac))" (parenthesized_expression "(**(code **)(iVar10 + 0x18))" ( (pointer_expression "**(code **)(iVar10 + 0x18)" * (pointer_expression "*(code **)(iVar10 + 0x18)" * (cast_expression "(code **)(iVar10 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + 0x18)" ( (binary_expression "iVar10 + 0x18" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac))" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x68)" * (cast_expression "(undefined4 *)(iVar1 + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x68)" ( (binary_expression "iVar1 + 0x68" identifier + number_literal) )))) , identifier , number_literal , (pointer_expression "*(undefined4 *)(iVar1 + 0x1ac)" * (cast_expression "(undefined4 *)(iVar1 + 0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1ac)" ( (binary_expression "iVar1 + 0x1ac" identifier + number_literal) )))) ))) ;) (expression_statement "iVar7 = *(int *)(iVar1 + 0x70);" (assignment_expression "iVar7 = *(int *)(iVar1 + 0x70)" identifier = (pointer_expression "*(int *)(iVar1 + 0x70)" * (cast_expression "(int *)(iVar1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x70)" ( (binary_expression "iVar1 + 0x70" identifier + number_literal) ))))) ;) (if_statement "if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }" { (expression_statement "iVar12 = piVar13[4];" (assignment_expression "iVar12 = piVar13[4]" identifier = (subscript_expression "piVar13[4]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = uVar14 + *piVar13;" (assignment_expression "iVar9 = uVar14 + *piVar13" identifier = (binary_expression "uVar14 + *piVar13" identifier + (pointer_expression "*piVar13" * identifier))) ;) (if_statement "if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }" if (parenthesized_expression "(*(int *)(iVar1 + 0x78) != 0)" ( (binary_expression "*(int *)(iVar1 + 0x78) != 0" (pointer_expression "*(int *)(iVar1 + 0x78)" * (cast_expression "(int *)(iVar1 + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x78)" ( (binary_expression "iVar1 + 0x78" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }" { (expression_statement "iVar10 = *(int *)(iVar1 + 0x60);" (assignment_expression "iVar10 = *(int *)(iVar1 + 0x60)" identifier = (pointer_expression "*(int *)(iVar1 + 0x60)" * (cast_expression "(int *)(iVar1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x60)" ( (binary_expression "iVar1 + 0x60" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 != 0) goto LAB_0004c0dc;" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004c0dc;" goto statement_identifier ;)) (expression_statement "pcVar21 = *(code **)(iVar7 + 0xc);" (assignment_expression "pcVar21 = *(code **)(iVar7 + 0xc)" identifier = (pointer_expression "*(code **)(iVar7 + 0xc)" * (cast_expression "(code **)(iVar7 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0004c104;" goto statement_identifier ;) })) (labeled_statement "LAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));" statement_identifier : (expression_statement "(**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));" (call_expression "(**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac))" (parenthesized_expression "(**(code **)(iVar7 + 0xc))" ( (pointer_expression "**(code **)(iVar7 + 0xc)" * (pointer_expression "*(code **)(iVar7 + 0xc)" * (cast_expression "(code **)(iVar7 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac))" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x80)" * (cast_expression "(undefined4 *)(iVar1 + 0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x80)" ( (binary_expression "iVar1 + 0x80" identifier + number_literal) )))) , identifier , identifier , (pointer_expression "*(undefined4 *)(iVar1 + 0x1ac)" * (cast_expression "(undefined4 *)(iVar1 + 0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1ac)" ( (binary_expression "iVar1 + 0x1ac" identifier + number_literal) )))) ))) ;)) })) (expression_statement "iVar10 = *(int *)(iVar1 + 0x60);" (assignment_expression "iVar10 = *(int *)(iVar1 + 0x60)" identifier = (pointer_expression "*(int *)(iVar1 + 0x60)" * (cast_expression "(int *)(iVar1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x60)" ( (binary_expression "iVar1 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = piVar13[4];" (assignment_expression "iVar12 = piVar13[4]" identifier = (subscript_expression "piVar13[4]" identifier [ number_literal ])) ;) (if_statement "if (iVar10 == 0) goto LAB_0004bfe0;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004bfe0;" goto statement_identifier ;)) }))) (expression_statement "(**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);" (call_expression "(**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13)" (parenthesized_expression "(**(code **)(iVar10 + 0x10))" ( (pointer_expression "**(code **)(iVar10 + 0x10)" * (pointer_expression "*(code **)(iVar10 + 0x10)" * (cast_expression "(code **)(iVar10 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + 0x10)" ( (binary_expression "iVar10 + 0x10" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13)" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x68)" * (cast_expression "(undefined4 *)(iVar1 + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x68)" ( (binary_expression "iVar1 + 0x68" identifier + number_literal) )))) , identifier , (binary_expression "uVar14 + *piVar13" identifier + (pointer_expression "*piVar13" * identifier)) ))) ;) (expression_statement "iVar12 = piVar13[4];" (assignment_expression "iVar12 = piVar13[4]" identifier = (subscript_expression "piVar13[4]" identifier [ number_literal ])) ;) }))) (labeled_statement "LAB_0004bfe0:\n      iVar7 = *piVar13;" statement_identifier : (expression_statement "iVar7 = *piVar13;" (assignment_expression "iVar7 = *piVar13" identifier = (pointer_expression "*piVar13" * identifier)) ;)) (expression_statement "iVar10 = uVar14 + iVar7 + (int)piVar15;" (assignment_expression "iVar10 = uVar14 + iVar7 + (int)piVar15" identifier = (binary_expression "uVar14 + iVar7 + (int)piVar15" (binary_expression "uVar14 + iVar7" identifier + identifier) + (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;" (assignment_expression "*(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1" (pointer_expression "*(int *)(iVar1 + 0x1ac)" * (cast_expression "(int *)(iVar1 + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1ac)" ( (binary_expression "iVar1 + 0x1ac" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar1 + 0x1ac) + 1" (pointer_expression "*(int *)(iVar1 + 0x1ac)" * (cast_expression "(int *)(iVar1 + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1ac)" ( (binary_expression "iVar1 + 0x1ac" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "piVar13[8] = uVar14 + iVar7;" (assignment_expression "piVar13[8] = uVar14 + iVar7" (subscript_expression "piVar13[8]" identifier [ number_literal ]) = (binary_expression "uVar14 + iVar7" identifier + identifier)) ;) (expression_statement "piVar13[5] = iVar12;" (assignment_expression "piVar13[5] = iVar12" (subscript_expression "piVar13[5]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }" else (compound_statement "{\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }" { (expression_statement "*(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);" (assignment_expression "*(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18)" (pointer_expression "*(char *)(piVar13[4] + 1)" * (cast_expression "(char *)(piVar13[4] + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar13[4] + 1)" ( (binary_expression "piVar13[4] + 1" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)((uint)(iVar7 + -5) >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)(iVar7 + -5) >> 0x18)" ( (binary_expression "(uint)(iVar7 + -5) >> 0x18" (call_expression "(uint)(iVar7 + -5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar7 + -5)" ( (binary_expression "iVar7 + -5" identifier + number_literal) ))) >> number_literal) )))) ;) (expression_statement "*(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);" (assignment_expression "*(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10)" (pointer_expression "*(char *)(piVar13[4] + 2)" * (cast_expression "(char *)(piVar13[4] + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar13[4] + 2)" ( (binary_expression "piVar13[4] + 2" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)((uint)(*piVar13 + -5) >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)(*piVar13 + -5) >> 0x10)" ( (binary_expression "(uint)(*piVar13 + -5) >> 0x10" (call_expression "(uint)(*piVar13 + -5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*piVar13 + -5)" ( (binary_expression "*piVar13 + -5" (pointer_expression "*piVar13" * identifier) + number_literal) ))) >> number_literal) )))) ;) (expression_statement "*(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);" (assignment_expression "*(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8)" (pointer_expression "*(char *)(piVar13[4] + 3)" * (cast_expression "(char *)(piVar13[4] + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar13[4] + 3)" ( (binary_expression "piVar13[4] + 3" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)((uint)(*piVar13 + -5) >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)(*piVar13 + -5) >> 8)" ( (binary_expression "(uint)(*piVar13 + -5) >> 8" (call_expression "(uint)(*piVar13 + -5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*piVar13 + -5)" ( (binary_expression "*piVar13 + -5" (pointer_expression "*piVar13" * identifier) + number_literal) ))) >> number_literal) )))) ;) (expression_statement "*(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;" (assignment_expression "*(char *)(piVar13[4] + 4) = (char)*piVar13 + -5" (pointer_expression "*(char *)(piVar13[4] + 4)" * (cast_expression "(char *)(piVar13[4] + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar13[4] + 4)" ( (binary_expression "piVar13[4] + 4" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + number_literal) )))) = (binary_expression "(char)*piVar13 + -5" (cast_expression "(char)*piVar13" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*piVar13" * identifier)) + number_literal)) ;) (expression_statement "iVar7 = *(int *)(iVar1 + 0x1ac);" (assignment_expression "iVar7 = *(int *)(iVar1 + 0x1ac)" identifier = (pointer_expression "*(int *)(iVar1 + 0x1ac)" * (cast_expression "(int *)(iVar1 + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1ac)" ( (binary_expression "iVar1 + 0x1ac" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = *piVar13 + -1;" (assignment_expression "iVar10 = *piVar13 + -1" identifier = (binary_expression "*piVar13 + -1" (pointer_expression "*piVar13" * identifier) + number_literal)) ;) (expression_statement "piVar13[5] = piVar13[4] + 1;" (assignment_expression "piVar13[5] = piVar13[4] + 1" (subscript_expression "piVar13[5]" identifier [ number_literal ]) = (binary_expression "piVar13[4] + 1" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "*(int *)(iVar1 + 0x1ac) = iVar7 + 1;" (assignment_expression "*(int *)(iVar1 + 0x1ac) = iVar7 + 1" (pointer_expression "*(int *)(iVar1 + 0x1ac)" * (cast_expression "(int *)(iVar1 + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1ac)" ( (binary_expression "iVar1 + 0x1ac" identifier + number_literal) )))) = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) }))) (if_statement "if (iStack_124 == *piVar16) {\n      return iVar10;\n    }" if (parenthesized_expression "(iStack_124 == *piVar16)" ( (binary_expression "iStack_124 == *piVar16" identifier == (pointer_expression "*piVar16" * identifier)) )) (compound_statement "{\n      return iVar10;\n    }" { (return_statement "return iVar10;" return identifier ;) })) (expression_statement "iVar10 = iStack_124;" (assignment_expression "iVar10 = iStack_124" identifier = identifier) ;) (expression_statement "(**(code **)(pcVar20 + 0xc6674))();" (call_expression "(**(code **)(pcVar20 + 0xc6674))()" (parenthesized_expression "(**(code **)(pcVar20 + 0xc6674))" ( (pointer_expression "**(code **)(pcVar20 + 0xc6674)" * (pointer_expression "*(code **)(pcVar20 + 0xc6674)" * (cast_expression "(code **)(pcVar20 + 0xc6674)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + 0xc6674)" ( (binary_expression "pcVar20 + 0xc6674" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_0004c510:\n    piVar13[6] = iVar10;" statement_identifier : (expression_statement "piVar13[6] = iVar10;" (assignment_expression "piVar13[6] = iVar10" (subscript_expression "piVar13[6]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "piVar18 = piVar15;" (assignment_expression "piVar18 = piVar15" identifier = identifier) ;) (labeled_statement "LAB_0004c1fc:\n    FUN_00047b74(piVar13,piVar18,piVar17);" statement_identifier : (expression_statement "FUN_00047b74(piVar13,piVar18,piVar17);" (call_expression "FUN_00047b74(piVar13,piVar18,piVar17)" identifier (argument_list "(piVar13,piVar18,piVar17)" ( identifier , identifier , identifier ))) ;)) (expression_statement "iVar10 = piVar13[6];" (assignment_expression "iVar10 = piVar13[6]" identifier = (subscript_expression "piVar13[6]" identifier [ number_literal ])) ;) (expression_statement "piVar15 = aiStack_120 + uVar3 * 3;" (assignment_expression "piVar15 = aiStack_120 + uVar3 * 3" identifier = (binary_expression "aiStack_120 + uVar3 * 3" identifier + (binary_expression "uVar3 * 3" identifier * number_literal))) ;) (expression_statement "aiStack_154[uVar3 * 3 + 2] = 1;" (assignment_expression "aiStack_154[uVar3 * 3 + 2] = 1" (subscript_expression "aiStack_154[uVar3 * 3 + 2]" identifier [ (binary_expression "uVar3 * 3 + 2" (binary_expression "uVar3 * 3" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "aiStack_154[uVar3 * 3] = iVar10;" (assignment_expression "aiStack_154[uVar3 * 3] = iVar10" (subscript_expression "aiStack_154[uVar3 * 3]" identifier [ (binary_expression "uVar3 * 3" identifier * number_literal) ]) = identifier) ;) (expression_statement "FUN_00047b74(piVar13,piVar18,piVar17);" (call_expression "FUN_00047b74(piVar13,piVar18,piVar17)" identifier (argument_list "(piVar13,piVar18,piVar17)" ( identifier , identifier , identifier ))) ;) (if_statement "if (iStack_15c != 0) {\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }" if (parenthesized_expression "(iStack_15c != 0)" ( (binary_expression "iStack_15c != 0" identifier != number_literal) )) (compound_statement "{\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }" { (expression_statement "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];" (assignment_expression "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3]" (subscript_expression "aiStack_154[uVar3 * 3 + 1]" identifier [ (binary_expression "uVar3 * 3 + 1" (binary_expression "uVar3 * 3" identifier * number_literal) + number_literal) ]) = (binary_expression "piVar13[6] - aiStack_154[uVar3 * 3]" (subscript_expression "piVar13[6]" identifier [ number_literal ]) - (subscript_expression "aiStack_154[uVar3 * 3]" identifier [ (binary_expression "uVar3 * 3" identifier * number_literal) ]))) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit "void ssh_pkt_adduint32(Packet *pkt,ulong value)\n\n{\n  uchar x [4];\n  \n  x = (uchar  [4])value;\n                    /* WARNING: Subroutine does not return */\n  ssh_pkt_adddata(pkt,x,4);\n}\n\n" (function_definition "void ssh_pkt_adduint32(Packet *pkt,ulong value)\n\n{\n  uchar x [4];\n  \n  x = (uchar  [4])value;\n                    /* WARNING: Subroutine does not return */\n  ssh_pkt_adddata(pkt,x,4);\n}" primitive_type (function_declarator "ssh_pkt_adduint32(Packet *pkt,ulong value)" identifier (parameter_list "(Packet *pkt,ulong value)" ( (parameter_declaration "Packet *pkt" type_identifier (pointer_declarator "*pkt" * identifier)) , (parameter_declaration "ulong value" type_identifier identifier) ))) (compound_statement "{\n  uchar x [4];\n  \n  x = (uchar  [4])value;\n                    /* WARNING: Subroutine does not return */\n  ssh_pkt_adddata(pkt,x,4);\n}" { (declaration "uchar x [4];" type_identifier (array_declarator "x [4]" identifier [ number_literal ]) ;) (expression_statement "x = (uchar  [4])value;" (assignment_expression "x = (uchar  [4])value" identifier = (cast_expression "(uchar  [4])value" ( (type_descriptor "uchar  [4]" type_identifier (abstract_array_declarator "[4]" [ number_literal ])) ) identifier)) ;) comment (expression_statement "ssh_pkt_adddata(pkt,x,4);" (call_expression "ssh_pkt_adddata(pkt,x,4)" identifier (argument_list "(pkt,x,4)" ( identifier , identifier , number_literal ))) ;) })))
(translation_unit "int FUN_0004b63c(int *param_1,int param_2)\n\n{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined1 uVar5;\n  undefined4 uVar4;\n  undefined4 extraout_v1;\n  undefined1 *puVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int iVar12;\n  int *piVar13;\n  uint uVar14;\n  int *piVar15;\n  int *piVar16;\n  int *piVar17;\n  int *piVar18;\n  undefined *puVar19;\n  code *pcVar20;\n  code *pcVar21;\n  int iStack_15c;\n  int iStack_158;\n  int aiStack_154 [12];\n  int iStack_124;\n  int aiStack_120 [4];\n  undefined4 uStack_110;\n  int iStack_10c;\n  int *piStack_108;\n  int *piStack_104;\n  uint *puStack_100;\n  code *pcStack_fc;\n  int *piStack_e8;\n  undefined4 uStack_e4;\n  int iStack_e0;\n  int *piStack_dc;\n  undefined4 uStack_d8;\n  undefined4 uStack_d4;\n  undefined4 uStack_d0;\n  code *pcStack_c8;\n  int iStack_bc;\n  int iStack_b8;\n  int aiStack_b4 [12];\n  int iStack_84;\n  int *piStack_80;\n  int *piStack_7c;\n  int *piStack_78;\n  int local_10;\n  int local_c;\n  \n  puVar19 = PTR___stack_chk_guard_00112630;\n  piVar15 = &local_10;\n  local_c = *(int *)PTR___stack_chk_guard_00112630;\n  local_10 = param_2;\n  FUN_0004b364(param_1,piVar15,4);\n  if (local_c == *(int *)puVar19) {\n    return *(int *)puVar19;\n  }\n  puVar19 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  piVar13 = *(int **)(puVar19 + 0xc6f84);\n  iVar1 = *piVar13;\n  FUN_0004b364();\n  pcVar20 = *(code **)(puVar19 + 0xc6e88);\n  param_1[6] = *param_1;\n  puVar2 = (uint *)(*pcVar20)(piVar15);\n  piVar17 = param_1;\n  piVar16 = piVar15;\n  FUN_0004b594();\n  if (iVar1 == *piVar13) {\n    return *piVar13;\n  }\n  pcVar21 = *(code **)(puVar19 + 0xc6c1c);\n  (*pcVar21)();\n  pcVar20 = pcVar21 + 0xcdb48;\n  piVar18 = *(int **)(pcVar21 + 0xc6ec8);\n  iStack_84 = *piVar18;\n  iVar1 = *piVar16;\n  pcStack_c8 = pcVar20;\n  piStack_80 = param_1;\n  piStack_7c = piVar13;\n  piStack_78 = piVar15;\n  if (piVar17[6] != 0) {\n    iVar10 = piVar17[0x93];\n    uVar3 = piVar16[2];\n    piVar16[6] = 0;\n    *piVar16 = iVar1 - (piVar16[5] - piVar16[4]);\n    if (iVar10 == 0) {\nLAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);\n      if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;\nLAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }\n      pcVar20 = *(code **)(pcVar20 + -0x7efc);\n      iVar1 = iVar10;\njoined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }\n    }\n    else {\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }\n    FUN_00049aac(*(undefined1 *)(piVar16[4] + 0xc));\n    piStack_e8 = (int *)piVar16[5];\n    piStack_dc = aiStack_b4;\n    uStack_d0 = 0;\n    uStack_d4 = 0;\n    uStack_d8 = 0;\n    uStack_e4 = extraout_v1;\n    iStack_e0 = iVar1;\n    log_packet(piVar17[6],1);\n    pcVar20 = pcStack_c8;\n    iVar1 = (piVar16[5] - piVar16[4]) + *piVar16;\n    *piVar16 = iVar1;\n  }\n  if (piVar17[0xf] != 0) {\n    piStack_e8 = &iStack_b8;\n    (**(code **)(pcVar20 + -0x7af0))(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc);\n    if (piVar16[7] < iStack_b8 + 2) {\n      FUN_0004b2d8(piVar16);\n    }\n    (**(code **)(pcStack_c8 + -0x6d44))(piVar16[4] + 0xc,iStack_bc,iStack_b8);\n    safefree(iStack_bc);\n    pcVar20 = pcStack_c8;\n    iVar1 = iStack_b8 + 0xc;\n    *piVar16 = iVar1;\n  }\n  iVar10 = iVar1 + 4;\n  if (piVar16[7] < iVar10) {\n    FUN_0004b2d8(piVar16);\n    iVar1 = *piVar16;\n    iVar10 = iVar1 + 4;\n    pcVar20 = pcStack_c8;\n  }\n  uVar14 = iVar1 - 8;\n  uVar3 = uVar14 & 0x80000007;\n  *piVar16 = iVar10;\n  if ((int)uVar3 < 0) {\n    uVar3 = (uVar3 - 1 | 0xfffffff8) + 1;\n  }\n  iVar1 = uVar14 - uVar3;\n  piVar15 = (int *)0xc;\n  iVar10 = iVar1 + 8;\n  uVar11 = uVar3;\n  do {\n    uVar5 = (**(code **)(pcVar20 + -0x7af8))();\n    puVar6 = (undefined1 *)(piVar16[4] + uVar11);\n    uVar11 = uVar11 + 1;\n    *puVar6 = uVar5;\n    pcVar20 = pcStack_c8;\n  } while (uVar11 != 0xc);\n  iVar12 = uVar3 + 4;\n  uVar4 = (**(code **)(pcStack_c8 + -0x7af4))(piVar16[4] + iVar12,iVar1 + 4);\n  iVar7 = iVar10 + uVar3;\n  *(char *)(piVar16[4] + iVar7) = (char)((uint)uVar4 >> 0x18);\n  piVar13 = (int *)((int)uVar14 >> 8);\n  *(char *)(piVar16[4] + iVar7 + 1) = (char)((uint)uVar4 >> 0x10);\n  *(char *)(piVar16[4] + iVar7 + 2) = (char)((uint)uVar4 >> 8);\n  *(char *)(piVar16[4] + iVar7 + 3) = (char)uVar4;\n  *(char *)(piVar16[4] + uVar3) = (char)(uVar14 >> 0x18);\n  *(char *)(piVar16[4] + uVar3 + 1) = (char)(uVar14 >> 0x10);\n  *(char *)(piVar16[4] + uVar3 + 2) = (char)(uVar14 >> 8);\n  *(char *)(piVar16[4] + uVar3 + 3) = (char)uVar14;\n  if (piVar17[0x15] != 0) {\n    piVar13 = (int *)(piVar16[4] + iVar12);\n    (**(code **)(piVar17[0x15] + 0xc))(piVar17[0x16],piVar13,iVar10);\n  }\n  iVar7 = *piVar18;\n  *puVar2 = uVar3;\n  if (iStack_84 == iVar7) {\n    return iVar1 + 0xc;\n  }\n  pcVar20 = *(code **)(pcStack_c8 + -0x6fe8);\n  pcVar21 = FUN_0004bc54;\n  iVar1 = iStack_84;\n  (*pcVar20)();\n  iVar7 = *piVar13;\n  piVar16 = *(int **)(pcVar20 + 0xc69dc);\n  uStack_110 = 0xc;\n  iStack_124 = *piVar16;\n  aiStack_120[1] = iVar12;\n  aiStack_120[2] = uVar3;\n  aiStack_120[3] = uVar14;\n  iStack_10c = iVar10;\n  piStack_108 = piVar17;\n  piStack_104 = piVar18;\n  puStack_100 = puVar2;\n  pcStack_fc = pcVar21;\n  if (*(int *)(iVar1 + 0x18) == 0) goto LAB_0004bd94;\n  uVar3 = *(uint *)(iVar1 + 0x24c);\n  iVar10 = piVar13[2];\n  piVar13[6] = 0;\n  *piVar13 = iVar7 - (piVar13[5] - piVar13[4]);\n  if ((uVar3 != 0) && (uVar3 = 0, iVar10 - 0x5eU < 2)) {\n    FUN_00047058(piVar13);\n    if (piVar13[2] == 0x5f) {\n      FUN_00047058();\n    }\n    aiStack_154[2] = 2;\n    aiStack_154[0] = piVar13[6] + 4;\n    FUN_00047b74(piVar13,&iStack_15c,&iStack_158);\n    if (iStack_15c == 0) {\n      iVar10 = piVar13[2];\n      uVar3 = 0;\n    }\n    else {\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }\n  }\n  if (iVar10 == 0x32) {\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar17 = &iStack_158;\n      piVar15 = &iStack_15c;\n      piVar13[6] = 0;\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }\n  if ((*(int *)(iVar1 + 0x188) == 4) && (iVar10 == 0x3d)) {\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar13[6] = 0;\n      piVar17 = &iStack_158;\n      FUN_00047058(piVar13);\n      aiStack_154[uVar3 * 3] = piVar13[6];\n      aiStack_154[uVar3 * 3 + 2] = 1;\n      do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n      piVar15 = &iStack_15c;\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }\n  if ((iVar10 == 0x62) &&\n     (iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0))\n  {\n    piVar13[6] = 0;\n    piVar17 = &iStack_158;\n    piVar15 = &iStack_15c;\n    FUN_00047058(piVar13);\n    FUN_00047b74();\n    if (iStack_158 == 7) {\n      iVar7 = piVar13[6];\n      iVar10 = iVar7 + 1;\n      piVar18 = piVar15;\n      if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;\n      if (*piVar13 - iVar10 < 1) goto LAB_0004c510;\n      piVar13[6] = iVar7 + 2;\n      goto LAB_0004c1fc;\n    }\n  }\nLAB_0004bd10:\n  do {\n    FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5));\n    log_packet(*(undefined4 *)(iVar1 + 0x18),1);\n    iVar7 = (piVar13[5] - piVar13[4]) + *piVar13;\n    *piVar13 = iVar7;\nLAB_0004bd94:\n    uVar3 = *(uint *)(iVar1 + 0xec);\n    if (uVar3 == 0) {\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }\n    else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }\n    if (iStack_124 == *piVar16) {\n      return iVar10;\n    }\n    iVar10 = iStack_124;\n    (**(code **)(pcVar20 + 0xc6674))();\nLAB_0004c510:\n    piVar13[6] = iVar10;\n    piVar18 = piVar15;\nLAB_0004c1fc:\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    iVar10 = piVar13[6];\n    piVar15 = aiStack_120 + uVar3 * 3;\n    aiStack_154[uVar3 * 3 + 2] = 1;\n    aiStack_154[uVar3 * 3] = iVar10;\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    if (iStack_15c != 0) {\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }\n  } while( true );\n}\n\n" (function_definition "int FUN_0004b63c(int *param_1,int param_2)\n\n{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined1 uVar5;\n  undefined4 uVar4;\n  undefined4 extraout_v1;\n  undefined1 *puVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int iVar12;\n  int *piVar13;\n  uint uVar14;\n  int *piVar15;\n  int *piVar16;\n  int *piVar17;\n  int *piVar18;\n  undefined *puVar19;\n  code *pcVar20;\n  code *pcVar21;\n  int iStack_15c;\n  int iStack_158;\n  int aiStack_154 [12];\n  int iStack_124;\n  int aiStack_120 [4];\n  undefined4 uStack_110;\n  int iStack_10c;\n  int *piStack_108;\n  int *piStack_104;\n  uint *puStack_100;\n  code *pcStack_fc;\n  int *piStack_e8;\n  undefined4 uStack_e4;\n  int iStack_e0;\n  int *piStack_dc;\n  undefined4 uStack_d8;\n  undefined4 uStack_d4;\n  undefined4 uStack_d0;\n  code *pcStack_c8;\n  int iStack_bc;\n  int iStack_b8;\n  int aiStack_b4 [12];\n  int iStack_84;\n  int *piStack_80;\n  int *piStack_7c;\n  int *piStack_78;\n  int local_10;\n  int local_c;\n  \n  puVar19 = PTR___stack_chk_guard_00112630;\n  piVar15 = &local_10;\n  local_c = *(int *)PTR___stack_chk_guard_00112630;\n  local_10 = param_2;\n  FUN_0004b364(param_1,piVar15,4);\n  if (local_c == *(int *)puVar19) {\n    return *(int *)puVar19;\n  }\n  puVar19 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  piVar13 = *(int **)(puVar19 + 0xc6f84);\n  iVar1 = *piVar13;\n  FUN_0004b364();\n  pcVar20 = *(code **)(puVar19 + 0xc6e88);\n  param_1[6] = *param_1;\n  puVar2 = (uint *)(*pcVar20)(piVar15);\n  piVar17 = param_1;\n  piVar16 = piVar15;\n  FUN_0004b594();\n  if (iVar1 == *piVar13) {\n    return *piVar13;\n  }\n  pcVar21 = *(code **)(puVar19 + 0xc6c1c);\n  (*pcVar21)();\n  pcVar20 = pcVar21 + 0xcdb48;\n  piVar18 = *(int **)(pcVar21 + 0xc6ec8);\n  iStack_84 = *piVar18;\n  iVar1 = *piVar16;\n  pcStack_c8 = pcVar20;\n  piStack_80 = param_1;\n  piStack_7c = piVar13;\n  piStack_78 = piVar15;\n  if (piVar17[6] != 0) {\n    iVar10 = piVar17[0x93];\n    uVar3 = piVar16[2];\n    piVar16[6] = 0;\n    *piVar16 = iVar1 - (piVar16[5] - piVar16[4]);\n    if (iVar10 == 0) {\nLAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);\n      if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;\nLAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }\n      pcVar20 = *(code **)(pcVar20 + -0x7efc);\n      iVar1 = iVar10;\njoined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }\n    }\n    else {\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }\n    FUN_00049aac(*(undefined1 *)(piVar16[4] + 0xc));\n    piStack_e8 = (int *)piVar16[5];\n    piStack_dc = aiStack_b4;\n    uStack_d0 = 0;\n    uStack_d4 = 0;\n    uStack_d8 = 0;\n    uStack_e4 = extraout_v1;\n    iStack_e0 = iVar1;\n    log_packet(piVar17[6],1);\n    pcVar20 = pcStack_c8;\n    iVar1 = (piVar16[5] - piVar16[4]) + *piVar16;\n    *piVar16 = iVar1;\n  }\n  if (piVar17[0xf] != 0) {\n    piStack_e8 = &iStack_b8;\n    (**(code **)(pcVar20 + -0x7af0))(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc);\n    if (piVar16[7] < iStack_b8 + 2) {\n      FUN_0004b2d8(piVar16);\n    }\n    (**(code **)(pcStack_c8 + -0x6d44))(piVar16[4] + 0xc,iStack_bc,iStack_b8);\n    safefree(iStack_bc);\n    pcVar20 = pcStack_c8;\n    iVar1 = iStack_b8 + 0xc;\n    *piVar16 = iVar1;\n  }\n  iVar10 = iVar1 + 4;\n  if (piVar16[7] < iVar10) {\n    FUN_0004b2d8(piVar16);\n    iVar1 = *piVar16;\n    iVar10 = iVar1 + 4;\n    pcVar20 = pcStack_c8;\n  }\n  uVar14 = iVar1 - 8;\n  uVar3 = uVar14 & 0x80000007;\n  *piVar16 = iVar10;\n  if ((int)uVar3 < 0) {\n    uVar3 = (uVar3 - 1 | 0xfffffff8) + 1;\n  }\n  iVar1 = uVar14 - uVar3;\n  piVar15 = (int *)0xc;\n  iVar10 = iVar1 + 8;\n  uVar11 = uVar3;\n  do {\n    uVar5 = (**(code **)(pcVar20 + -0x7af8))();\n    puVar6 = (undefined1 *)(piVar16[4] + uVar11);\n    uVar11 = uVar11 + 1;\n    *puVar6 = uVar5;\n    pcVar20 = pcStack_c8;\n  } while (uVar11 != 0xc);\n  iVar12 = uVar3 + 4;\n  uVar4 = (**(code **)(pcStack_c8 + -0x7af4))(piVar16[4] + iVar12,iVar1 + 4);\n  iVar7 = iVar10 + uVar3;\n  *(char *)(piVar16[4] + iVar7) = (char)((uint)uVar4 >> 0x18);\n  piVar13 = (int *)((int)uVar14 >> 8);\n  *(char *)(piVar16[4] + iVar7 + 1) = (char)((uint)uVar4 >> 0x10);\n  *(char *)(piVar16[4] + iVar7 + 2) = (char)((uint)uVar4 >> 8);\n  *(char *)(piVar16[4] + iVar7 + 3) = (char)uVar4;\n  *(char *)(piVar16[4] + uVar3) = (char)(uVar14 >> 0x18);\n  *(char *)(piVar16[4] + uVar3 + 1) = (char)(uVar14 >> 0x10);\n  *(char *)(piVar16[4] + uVar3 + 2) = (char)(uVar14 >> 8);\n  *(char *)(piVar16[4] + uVar3 + 3) = (char)uVar14;\n  if (piVar17[0x15] != 0) {\n    piVar13 = (int *)(piVar16[4] + iVar12);\n    (**(code **)(piVar17[0x15] + 0xc))(piVar17[0x16],piVar13,iVar10);\n  }\n  iVar7 = *piVar18;\n  *puVar2 = uVar3;\n  if (iStack_84 == iVar7) {\n    return iVar1 + 0xc;\n  }\n  pcVar20 = *(code **)(pcStack_c8 + -0x6fe8);\n  pcVar21 = FUN_0004bc54;\n  iVar1 = iStack_84;\n  (*pcVar20)();\n  iVar7 = *piVar13;\n  piVar16 = *(int **)(pcVar20 + 0xc69dc);\n  uStack_110 = 0xc;\n  iStack_124 = *piVar16;\n  aiStack_120[1] = iVar12;\n  aiStack_120[2] = uVar3;\n  aiStack_120[3] = uVar14;\n  iStack_10c = iVar10;\n  piStack_108 = piVar17;\n  piStack_104 = piVar18;\n  puStack_100 = puVar2;\n  pcStack_fc = pcVar21;\n  if (*(int *)(iVar1 + 0x18) == 0) goto LAB_0004bd94;\n  uVar3 = *(uint *)(iVar1 + 0x24c);\n  iVar10 = piVar13[2];\n  piVar13[6] = 0;\n  *piVar13 = iVar7 - (piVar13[5] - piVar13[4]);\n  if ((uVar3 != 0) && (uVar3 = 0, iVar10 - 0x5eU < 2)) {\n    FUN_00047058(piVar13);\n    if (piVar13[2] == 0x5f) {\n      FUN_00047058();\n    }\n    aiStack_154[2] = 2;\n    aiStack_154[0] = piVar13[6] + 4;\n    FUN_00047b74(piVar13,&iStack_15c,&iStack_158);\n    if (iStack_15c == 0) {\n      iVar10 = piVar13[2];\n      uVar3 = 0;\n    }\n    else {\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }\n  }\n  if (iVar10 == 0x32) {\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar17 = &iStack_158;\n      piVar15 = &iStack_15c;\n      piVar13[6] = 0;\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }\n  if ((*(int *)(iVar1 + 0x188) == 4) && (iVar10 == 0x3d)) {\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar13[6] = 0;\n      piVar17 = &iStack_158;\n      FUN_00047058(piVar13);\n      aiStack_154[uVar3 * 3] = piVar13[6];\n      aiStack_154[uVar3 * 3 + 2] = 1;\n      do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n      piVar15 = &iStack_15c;\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }\n  if ((iVar10 == 0x62) &&\n     (iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0))\n  {\n    piVar13[6] = 0;\n    piVar17 = &iStack_158;\n    piVar15 = &iStack_15c;\n    FUN_00047058(piVar13);\n    FUN_00047b74();\n    if (iStack_158 == 7) {\n      iVar7 = piVar13[6];\n      iVar10 = iVar7 + 1;\n      piVar18 = piVar15;\n      if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;\n      if (*piVar13 - iVar10 < 1) goto LAB_0004c510;\n      piVar13[6] = iVar7 + 2;\n      goto LAB_0004c1fc;\n    }\n  }\nLAB_0004bd10:\n  do {\n    FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5));\n    log_packet(*(undefined4 *)(iVar1 + 0x18),1);\n    iVar7 = (piVar13[5] - piVar13[4]) + *piVar13;\n    *piVar13 = iVar7;\nLAB_0004bd94:\n    uVar3 = *(uint *)(iVar1 + 0xec);\n    if (uVar3 == 0) {\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }\n    else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }\n    if (iStack_124 == *piVar16) {\n      return iVar10;\n    }\n    iVar10 = iStack_124;\n    (**(code **)(pcVar20 + 0xc6674))();\nLAB_0004c510:\n    piVar13[6] = iVar10;\n    piVar18 = piVar15;\nLAB_0004c1fc:\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    iVar10 = piVar13[6];\n    piVar15 = aiStack_120 + uVar3 * 3;\n    aiStack_154[uVar3 * 3 + 2] = 1;\n    aiStack_154[uVar3 * 3] = iVar10;\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    if (iStack_15c != 0) {\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_0004b63c(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined1 uVar5;\n  undefined4 uVar4;\n  undefined4 extraout_v1;\n  undefined1 *puVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int iVar12;\n  int *piVar13;\n  uint uVar14;\n  int *piVar15;\n  int *piVar16;\n  int *piVar17;\n  int *piVar18;\n  undefined *puVar19;\n  code *pcVar20;\n  code *pcVar21;\n  int iStack_15c;\n  int iStack_158;\n  int aiStack_154 [12];\n  int iStack_124;\n  int aiStack_120 [4];\n  undefined4 uStack_110;\n  int iStack_10c;\n  int *piStack_108;\n  int *piStack_104;\n  uint *puStack_100;\n  code *pcStack_fc;\n  int *piStack_e8;\n  undefined4 uStack_e4;\n  int iStack_e0;\n  int *piStack_dc;\n  undefined4 uStack_d8;\n  undefined4 uStack_d4;\n  undefined4 uStack_d0;\n  code *pcStack_c8;\n  int iStack_bc;\n  int iStack_b8;\n  int aiStack_b4 [12];\n  int iStack_84;\n  int *piStack_80;\n  int *piStack_7c;\n  int *piStack_78;\n  int local_10;\n  int local_c;\n  \n  puVar19 = PTR___stack_chk_guard_00112630;\n  piVar15 = &local_10;\n  local_c = *(int *)PTR___stack_chk_guard_00112630;\n  local_10 = param_2;\n  FUN_0004b364(param_1,piVar15,4);\n  if (local_c == *(int *)puVar19) {\n    return *(int *)puVar19;\n  }\n  puVar19 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  piVar13 = *(int **)(puVar19 + 0xc6f84);\n  iVar1 = *piVar13;\n  FUN_0004b364();\n  pcVar20 = *(code **)(puVar19 + 0xc6e88);\n  param_1[6] = *param_1;\n  puVar2 = (uint *)(*pcVar20)(piVar15);\n  piVar17 = param_1;\n  piVar16 = piVar15;\n  FUN_0004b594();\n  if (iVar1 == *piVar13) {\n    return *piVar13;\n  }\n  pcVar21 = *(code **)(puVar19 + 0xc6c1c);\n  (*pcVar21)();\n  pcVar20 = pcVar21 + 0xcdb48;\n  piVar18 = *(int **)(pcVar21 + 0xc6ec8);\n  iStack_84 = *piVar18;\n  iVar1 = *piVar16;\n  pcStack_c8 = pcVar20;\n  piStack_80 = param_1;\n  piStack_7c = piVar13;\n  piStack_78 = piVar15;\n  if (piVar17[6] != 0) {\n    iVar10 = piVar17[0x93];\n    uVar3 = piVar16[2];\n    piVar16[6] = 0;\n    *piVar16 = iVar1 - (piVar16[5] - piVar16[4]);\n    if (iVar10 == 0) {\nLAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);\n      if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;\nLAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }\n      pcVar20 = *(code **)(pcVar20 + -0x7efc);\n      iVar1 = iVar10;\njoined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }\n    }\n    else {\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }\n    FUN_00049aac(*(undefined1 *)(piVar16[4] + 0xc));\n    piStack_e8 = (int *)piVar16[5];\n    piStack_dc = aiStack_b4;\n    uStack_d0 = 0;\n    uStack_d4 = 0;\n    uStack_d8 = 0;\n    uStack_e4 = extraout_v1;\n    iStack_e0 = iVar1;\n    log_packet(piVar17[6],1);\n    pcVar20 = pcStack_c8;\n    iVar1 = (piVar16[5] - piVar16[4]) + *piVar16;\n    *piVar16 = iVar1;\n  }\n  if (piVar17[0xf] != 0) {\n    piStack_e8 = &iStack_b8;\n    (**(code **)(pcVar20 + -0x7af0))(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc);\n    if (piVar16[7] < iStack_b8 + 2) {\n      FUN_0004b2d8(piVar16);\n    }\n    (**(code **)(pcStack_c8 + -0x6d44))(piVar16[4] + 0xc,iStack_bc,iStack_b8);\n    safefree(iStack_bc);\n    pcVar20 = pcStack_c8;\n    iVar1 = iStack_b8 + 0xc;\n    *piVar16 = iVar1;\n  }\n  iVar10 = iVar1 + 4;\n  if (piVar16[7] < iVar10) {\n    FUN_0004b2d8(piVar16);\n    iVar1 = *piVar16;\n    iVar10 = iVar1 + 4;\n    pcVar20 = pcStack_c8;\n  }\n  uVar14 = iVar1 - 8;\n  uVar3 = uVar14 & 0x80000007;\n  *piVar16 = iVar10;\n  if ((int)uVar3 < 0) {\n    uVar3 = (uVar3 - 1 | 0xfffffff8) + 1;\n  }\n  iVar1 = uVar14 - uVar3;\n  piVar15 = (int *)0xc;\n  iVar10 = iVar1 + 8;\n  uVar11 = uVar3;\n  do {\n    uVar5 = (**(code **)(pcVar20 + -0x7af8))();\n    puVar6 = (undefined1 *)(piVar16[4] + uVar11);\n    uVar11 = uVar11 + 1;\n    *puVar6 = uVar5;\n    pcVar20 = pcStack_c8;\n  } while (uVar11 != 0xc);\n  iVar12 = uVar3 + 4;\n  uVar4 = (**(code **)(pcStack_c8 + -0x7af4))(piVar16[4] + iVar12,iVar1 + 4);\n  iVar7 = iVar10 + uVar3;\n  *(char *)(piVar16[4] + iVar7) = (char)((uint)uVar4 >> 0x18);\n  piVar13 = (int *)((int)uVar14 >> 8);\n  *(char *)(piVar16[4] + iVar7 + 1) = (char)((uint)uVar4 >> 0x10);\n  *(char *)(piVar16[4] + iVar7 + 2) = (char)((uint)uVar4 >> 8);\n  *(char *)(piVar16[4] + iVar7 + 3) = (char)uVar4;\n  *(char *)(piVar16[4] + uVar3) = (char)(uVar14 >> 0x18);\n  *(char *)(piVar16[4] + uVar3 + 1) = (char)(uVar14 >> 0x10);\n  *(char *)(piVar16[4] + uVar3 + 2) = (char)(uVar14 >> 8);\n  *(char *)(piVar16[4] + uVar3 + 3) = (char)uVar14;\n  if (piVar17[0x15] != 0) {\n    piVar13 = (int *)(piVar16[4] + iVar12);\n    (**(code **)(piVar17[0x15] + 0xc))(piVar17[0x16],piVar13,iVar10);\n  }\n  iVar7 = *piVar18;\n  *puVar2 = uVar3;\n  if (iStack_84 == iVar7) {\n    return iVar1 + 0xc;\n  }\n  pcVar20 = *(code **)(pcStack_c8 + -0x6fe8);\n  pcVar21 = FUN_0004bc54;\n  iVar1 = iStack_84;\n  (*pcVar20)();\n  iVar7 = *piVar13;\n  piVar16 = *(int **)(pcVar20 + 0xc69dc);\n  uStack_110 = 0xc;\n  iStack_124 = *piVar16;\n  aiStack_120[1] = iVar12;\n  aiStack_120[2] = uVar3;\n  aiStack_120[3] = uVar14;\n  iStack_10c = iVar10;\n  piStack_108 = piVar17;\n  piStack_104 = piVar18;\n  puStack_100 = puVar2;\n  pcStack_fc = pcVar21;\n  if (*(int *)(iVar1 + 0x18) == 0) goto LAB_0004bd94;\n  uVar3 = *(uint *)(iVar1 + 0x24c);\n  iVar10 = piVar13[2];\n  piVar13[6] = 0;\n  *piVar13 = iVar7 - (piVar13[5] - piVar13[4]);\n  if ((uVar3 != 0) && (uVar3 = 0, iVar10 - 0x5eU < 2)) {\n    FUN_00047058(piVar13);\n    if (piVar13[2] == 0x5f) {\n      FUN_00047058();\n    }\n    aiStack_154[2] = 2;\n    aiStack_154[0] = piVar13[6] + 4;\n    FUN_00047b74(piVar13,&iStack_15c,&iStack_158);\n    if (iStack_15c == 0) {\n      iVar10 = piVar13[2];\n      uVar3 = 0;\n    }\n    else {\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }\n  }\n  if (iVar10 == 0x32) {\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar17 = &iStack_158;\n      piVar15 = &iStack_15c;\n      piVar13[6] = 0;\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }\n  if ((*(int *)(iVar1 + 0x188) == 4) && (iVar10 == 0x3d)) {\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar13[6] = 0;\n      piVar17 = &iStack_158;\n      FUN_00047058(piVar13);\n      aiStack_154[uVar3 * 3] = piVar13[6];\n      aiStack_154[uVar3 * 3 + 2] = 1;\n      do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n      piVar15 = &iStack_15c;\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }\n  if ((iVar10 == 0x62) &&\n     (iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0))\n  {\n    piVar13[6] = 0;\n    piVar17 = &iStack_158;\n    piVar15 = &iStack_15c;\n    FUN_00047058(piVar13);\n    FUN_00047b74();\n    if (iStack_158 == 7) {\n      iVar7 = piVar13[6];\n      iVar10 = iVar7 + 1;\n      piVar18 = piVar15;\n      if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;\n      if (*piVar13 - iVar10 < 1) goto LAB_0004c510;\n      piVar13[6] = iVar7 + 2;\n      goto LAB_0004c1fc;\n    }\n  }\nLAB_0004bd10:\n  do {\n    FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5));\n    log_packet(*(undefined4 *)(iVar1 + 0x18),1);\n    iVar7 = (piVar13[5] - piVar13[4]) + *piVar13;\n    *piVar13 = iVar7;\nLAB_0004bd94:\n    uVar3 = *(uint *)(iVar1 + 0xec);\n    if (uVar3 == 0) {\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }\n    else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }\n    if (iStack_124 == *piVar16) {\n      return iVar10;\n    }\n    iVar10 = iStack_124;\n    (**(code **)(pcVar20 + 0xc6674))();\nLAB_0004c510:\n    piVar13[6] = iVar10;\n    piVar18 = piVar15;\nLAB_0004c1fc:\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    iVar10 = piVar13[6];\n    piVar15 = aiStack_120 + uVar3 * 3;\n    aiStack_154[uVar3 * 3 + 2] = 1;\n    aiStack_154[uVar3 * 3] = iVar10;\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    if (iStack_15c != 0) {\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined1 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 extraout_v1;" type_identifier identifier ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "int *piVar18;" primitive_type (pointer_declarator "*piVar18" * identifier) ;) (declaration "undefined *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "code *pcVar20;" type_identifier (pointer_declarator "*pcVar20" * identifier) ;) (declaration "code *pcVar21;" type_identifier (pointer_declarator "*pcVar21" * identifier) ;) (declaration "int iStack_15c;" primitive_type identifier ;) (declaration "int iStack_158;" primitive_type identifier ;) (declaration "int aiStack_154 [12];" primitive_type (array_declarator "aiStack_154 [12]" identifier [ number_literal ]) ;) (declaration "int iStack_124;" primitive_type identifier ;) (declaration "int aiStack_120 [4];" primitive_type (array_declarator "aiStack_120 [4]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_110;" type_identifier identifier ;) (declaration "int iStack_10c;" primitive_type identifier ;) (declaration "int *piStack_108;" primitive_type (pointer_declarator "*piStack_108" * identifier) ;) (declaration "int *piStack_104;" primitive_type (pointer_declarator "*piStack_104" * identifier) ;) (declaration "uint *puStack_100;" type_identifier (pointer_declarator "*puStack_100" * identifier) ;) (declaration "code *pcStack_fc;" type_identifier (pointer_declarator "*pcStack_fc" * identifier) ;) (declaration "int *piStack_e8;" primitive_type (pointer_declarator "*piStack_e8" * identifier) ;) (declaration "undefined4 uStack_e4;" type_identifier identifier ;) (declaration "int iStack_e0;" primitive_type identifier ;) (declaration "int *piStack_dc;" primitive_type (pointer_declarator "*piStack_dc" * identifier) ;) (declaration "undefined4 uStack_d8;" type_identifier identifier ;) (declaration "undefined4 uStack_d4;" type_identifier identifier ;) (declaration "undefined4 uStack_d0;" type_identifier identifier ;) (declaration "code *pcStack_c8;" type_identifier (pointer_declarator "*pcStack_c8" * identifier) ;) (declaration "int iStack_bc;" primitive_type identifier ;) (declaration "int iStack_b8;" primitive_type identifier ;) (declaration "int aiStack_b4 [12];" primitive_type (array_declarator "aiStack_b4 [12]" identifier [ number_literal ]) ;) (declaration "int iStack_84;" primitive_type identifier ;) (declaration "int *piStack_80;" primitive_type (pointer_declarator "*piStack_80" * identifier) ;) (declaration "int *piStack_7c;" primitive_type (pointer_declarator "*piStack_7c" * identifier) ;) (declaration "int *piStack_78;" primitive_type (pointer_declarator "*piStack_78" * identifier) ;) (declaration "int local_10;" primitive_type identifier ;) (declaration "int local_c;" primitive_type identifier ;) (expression_statement "puVar19 = PTR___stack_chk_guard_00112630;" (assignment_expression "puVar19 = PTR___stack_chk_guard_00112630" identifier = identifier) ;) (expression_statement "piVar15 = &local_10;" (assignment_expression "piVar15 = &local_10" identifier = (pointer_expression "&local_10" & identifier)) ;) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_00112630;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_00112630" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00112630" * (cast_expression "(int *)PTR___stack_chk_guard_00112630" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_10 = param_2;" (assignment_expression "local_10 = param_2" identifier = identifier) ;) (expression_statement "FUN_0004b364(param_1,piVar15,4);" (call_expression "FUN_0004b364(param_1,piVar15,4)" identifier (argument_list "(param_1,piVar15,4)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (local_c == *(int *)puVar19) {\n    return *(int *)puVar19;\n  }" if (parenthesized_expression "(local_c == *(int *)puVar19)" ( (binary_expression "local_c == *(int *)puVar19" identifier == (pointer_expression "*(int *)puVar19" * (cast_expression "(int *)puVar19" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return *(int *)puVar19;\n  }" { (return_statement "return *(int *)puVar19;" return (pointer_expression "*(int *)puVar19" * (cast_expression "(int *)puVar19" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "puVar19 = PTR___stack_chk_fail_001122c8;" (assignment_expression "puVar19 = PTR___stack_chk_fail_001122c8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_001122c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_001122c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_001122c8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_001122c8" * (cast_expression "(code *)PTR___stack_chk_fail_001122c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar13 = *(int **)(puVar19 + 0xc6f84);" (assignment_expression "piVar13 = *(int **)(puVar19 + 0xc6f84)" identifier = (pointer_expression "*(int **)(puVar19 + 0xc6f84)" * (cast_expression "(int **)(puVar19 + 0xc6f84)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + 0xc6f84)" ( (binary_expression "puVar19 + 0xc6f84" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *piVar13;" (assignment_expression "iVar1 = *piVar13" identifier = (pointer_expression "*piVar13" * identifier)) ;) (expression_statement "FUN_0004b364();" (call_expression "FUN_0004b364()" identifier (argument_list "()" ( ))) ;) (expression_statement "pcVar20 = *(code **)(puVar19 + 0xc6e88);" (assignment_expression "pcVar20 = *(code **)(puVar19 + 0xc6e88)" identifier = (pointer_expression "*(code **)(puVar19 + 0xc6e88)" * (cast_expression "(code **)(puVar19 + 0xc6e88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + 0xc6e88)" ( (binary_expression "puVar19 + 0xc6e88" identifier + number_literal) ))))) ;) (expression_statement "param_1[6] = *param_1;" (assignment_expression "param_1[6] = *param_1" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "puVar2 = (uint *)(*pcVar20)(piVar15);" (assignment_expression "puVar2 = (uint *)(*pcVar20)(piVar15)" identifier = (cast_expression "(uint *)(*pcVar20)(piVar15)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar20)(piVar15)" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "(piVar15)" ( identifier ))))) ;) (expression_statement "piVar17 = param_1;" (assignment_expression "piVar17 = param_1" identifier = identifier) ;) (expression_statement "piVar16 = piVar15;" (assignment_expression "piVar16 = piVar15" identifier = identifier) ;) (expression_statement "FUN_0004b594();" (call_expression "FUN_0004b594()" identifier (argument_list "()" ( ))) ;) (if_statement "if (iVar1 == *piVar13) {\n    return *piVar13;\n  }" if (parenthesized_expression "(iVar1 == *piVar13)" ( (binary_expression "iVar1 == *piVar13" identifier == (pointer_expression "*piVar13" * identifier)) )) (compound_statement "{\n    return *piVar13;\n  }" { (return_statement "return *piVar13;" return (pointer_expression "*piVar13" * identifier) ;) })) (expression_statement "pcVar21 = *(code **)(puVar19 + 0xc6c1c);" (assignment_expression "pcVar21 = *(code **)(puVar19 + 0xc6c1c)" identifier = (pointer_expression "*(code **)(puVar19 + 0xc6c1c)" * (cast_expression "(code **)(puVar19 + 0xc6c1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + 0xc6c1c)" ( (binary_expression "puVar19 + 0xc6c1c" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar21)();" (call_expression "(*pcVar21)()" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar20 = pcVar21 + 0xcdb48;" (assignment_expression "pcVar20 = pcVar21 + 0xcdb48" identifier = (binary_expression "pcVar21 + 0xcdb48" identifier + number_literal)) ;) (expression_statement "piVar18 = *(int **)(pcVar21 + 0xc6ec8);" (assignment_expression "piVar18 = *(int **)(pcVar21 + 0xc6ec8)" identifier = (pointer_expression "*(int **)(pcVar21 + 0xc6ec8)" * (cast_expression "(int **)(pcVar21 + 0xc6ec8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0xc6ec8)" ( (binary_expression "pcVar21 + 0xc6ec8" identifier + number_literal) ))))) ;) (expression_statement "iStack_84 = *piVar18;" (assignment_expression "iStack_84 = *piVar18" identifier = (pointer_expression "*piVar18" * identifier)) ;) (expression_statement "iVar1 = *piVar16;" (assignment_expression "iVar1 = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;) (expression_statement "pcStack_c8 = pcVar20;" (assignment_expression "pcStack_c8 = pcVar20" identifier = identifier) ;) (expression_statement "piStack_80 = param_1;" (assignment_expression "piStack_80 = param_1" identifier = identifier) ;) (expression_statement "piStack_7c = piVar13;" (assignment_expression "piStack_7c = piVar13" identifier = identifier) ;) (expression_statement "piStack_78 = piVar15;" (assignment_expression "piStack_78 = piVar15" identifier = identifier) ;) (if_statement "if (piVar17[6] != 0) {\n    iVar10 = piVar17[0x93];\n    uVar3 = piVar16[2];\n    piVar16[6] = 0;\n    *piVar16 = iVar1 - (piVar16[5] - piVar16[4]);\n    if (iVar10 == 0) {\nLAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);\n      if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;\nLAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }\n      pcVar20 = *(code **)(pcVar20 + -0x7efc);\n      iVar1 = iVar10;\njoined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }\n    }\n    else {\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }\n    FUN_00049aac(*(undefined1 *)(piVar16[4] + 0xc));\n    piStack_e8 = (int *)piVar16[5];\n    piStack_dc = aiStack_b4;\n    uStack_d0 = 0;\n    uStack_d4 = 0;\n    uStack_d8 = 0;\n    uStack_e4 = extraout_v1;\n    iStack_e0 = iVar1;\n    log_packet(piVar17[6],1);\n    pcVar20 = pcStack_c8;\n    iVar1 = (piVar16[5] - piVar16[4]) + *piVar16;\n    *piVar16 = iVar1;\n  }" if (parenthesized_expression "(piVar17[6] != 0)" ( (binary_expression "piVar17[6] != 0" (subscript_expression "piVar17[6]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    iVar10 = piVar17[0x93];\n    uVar3 = piVar16[2];\n    piVar16[6] = 0;\n    *piVar16 = iVar1 - (piVar16[5] - piVar16[4]);\n    if (iVar10 == 0) {\nLAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);\n      if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;\nLAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }\n      pcVar20 = *(code **)(pcVar20 + -0x7efc);\n      iVar1 = iVar10;\njoined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }\n    }\n    else {\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }\n    FUN_00049aac(*(undefined1 *)(piVar16[4] + 0xc));\n    piStack_e8 = (int *)piVar16[5];\n    piStack_dc = aiStack_b4;\n    uStack_d0 = 0;\n    uStack_d4 = 0;\n    uStack_d8 = 0;\n    uStack_e4 = extraout_v1;\n    iStack_e0 = iVar1;\n    log_packet(piVar17[6],1);\n    pcVar20 = pcStack_c8;\n    iVar1 = (piVar16[5] - piVar16[4]) + *piVar16;\n    *piVar16 = iVar1;\n  }" { (expression_statement "iVar10 = piVar17[0x93];" (assignment_expression "iVar10 = piVar17[0x93]" identifier = (subscript_expression "piVar17[0x93]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = piVar16[2];" (assignment_expression "uVar3 = piVar16[2]" identifier = (subscript_expression "piVar16[2]" identifier [ number_literal ])) ;) (expression_statement "piVar16[6] = 0;" (assignment_expression "piVar16[6] = 0" (subscript_expression "piVar16[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar16 = iVar1 - (piVar16[5] - piVar16[4]);" (assignment_expression "*piVar16 = iVar1 - (piVar16[5] - piVar16[4])" (pointer_expression "*piVar16" * identifier) = (binary_expression "iVar1 - (piVar16[5] - piVar16[4])" identifier - (parenthesized_expression "(piVar16[5] - piVar16[4])" ( (binary_expression "piVar16[5] - piVar16[4]" (subscript_expression "piVar16[5]" identifier [ number_literal ]) - (subscript_expression "piVar16[4]" identifier [ number_literal ])) )))) ;) (if_statement "if (iVar10 == 0) {\nLAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);\n      if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;\nLAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }\n      pcVar20 = *(code **)(pcVar20 + -0x7efc);\n      iVar1 = iVar10;\njoined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }\n    }\n    else {\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);\n      if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;\nLAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }\n      pcVar20 = *(code **)(pcVar20 + -0x7efc);\n      iVar1 = iVar10;\njoined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }\n    }" { (labeled_statement "LAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);" statement_identifier : (expression_statement "pcVar21 = *(code **)(pcVar20 + -0x7efc);" (assignment_expression "pcVar21 = *(code **)(pcVar20 + -0x7efc)" identifier = (pointer_expression "*(code **)(pcVar20 + -0x7efc)" * (cast_expression "(code **)(pcVar20 + -0x7efc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + -0x7efc)" ( (binary_expression "pcVar20 + -0x7efc" identifier + number_literal) ))))) ;)) (if_statement "if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;" if (parenthesized_expression "((uVar3 & 0xffffffdf) == 9)" ( (binary_expression "(uVar3 & 0xffffffdf) == 9" (parenthesized_expression "(uVar3 & 0xffffffdf)" ( (binary_expression "uVar3 & 0xffffffdf" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0004ba3c;" goto statement_identifier ;)) (labeled_statement "LAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }" statement_identifier : (if_statement "if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }" if (parenthesized_expression "(uVar3 == 0x48)" ( (binary_expression "uVar3 == 0x48" identifier == number_literal) )) (compound_statement "{\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }" { (expression_statement "pcVar21 = *(code **)(pcVar20 + -0x7efc);" (assignment_expression "pcVar21 = *(code **)(pcVar20 + -0x7efc)" identifier = (pointer_expression "*(code **)(pcVar20 + -0x7efc)" * (cast_expression "(code **)(pcVar20 + -0x7efc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + -0x7efc)" ( (binary_expression "pcVar20 + -0x7efc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0004ba3c;" goto statement_identifier ;) }))) (expression_statement "pcVar20 = *(code **)(pcVar20 + -0x7efc);" (assignment_expression "pcVar20 = *(code **)(pcVar20 + -0x7efc)" identifier = (pointer_expression "*(code **)(pcVar20 + -0x7efc)" * (cast_expression "(code **)(pcVar20 + -0x7efc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + -0x7efc)" ( (binary_expression "pcVar20 + -0x7efc" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = iVar10;" (assignment_expression "iVar1 = iVar10" identifier = identifier) ;) (labeled_statement "joined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }" statement_identifier : (if_statement "if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }" if (parenthesized_expression "((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0))" ( (binary_expression "(uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)" (parenthesized_expression "(uVar3 == 0x22)" ( (binary_expression "uVar3 == 0x22" identifier == number_literal) )) && (parenthesized_expression "(iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)" ( (comma_expression "iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0" (assignment_expression "iVar10 = (*pcVar20)(piVar17[0x92],0x7b)" identifier = (call_expression "(*pcVar20)(piVar17[0x92],0x7b)" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "(piVar17[0x92],0x7b)" ( (subscript_expression "piVar17[0x92]" identifier [ number_literal ]) , number_literal )))) , (binary_expression "iVar10 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }" { (expression_statement "piVar16[6] = 0;" (assignment_expression "piVar16[6] = 0" (subscript_expression "piVar16[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);" (call_expression "FUN_00047b74(piVar16,&iStack_bc,&iStack_b8)" identifier (argument_list "(piVar16,&iStack_bc,&iStack_b8)" ( identifier , (pointer_expression "&iStack_bc" & identifier) , (pointer_expression "&iStack_b8" & identifier) ))) ;) (expression_statement "aiStack_b4[iVar1 * 3] = piVar16[6];" (assignment_expression "aiStack_b4[iVar1 * 3] = piVar16[6]" (subscript_expression "aiStack_b4[iVar1 * 3]" identifier [ (binary_expression "iVar1 * 3" identifier * number_literal) ]) = (subscript_expression "piVar16[6]" identifier [ number_literal ])) ;) (expression_statement "aiStack_b4[iVar1 * 3 + 2] = 1;" (assignment_expression "aiStack_b4[iVar1 * 3 + 2] = 1" (subscript_expression "aiStack_b4[iVar1 * 3 + 2]" identifier [ (binary_expression "iVar1 * 3 + 2" (binary_expression "iVar1 * 3" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);" (call_expression "FUN_00047b74(piVar16,&iStack_bc,&iStack_b8)" identifier (argument_list "(piVar16,&iStack_bc,&iStack_b8)" ( identifier , (pointer_expression "&iStack_bc" & identifier) , (pointer_expression "&iStack_b8" & identifier) ))) ;) (if_statement "if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }" if (parenthesized_expression "(iStack_bc != 0)" ( (binary_expression "iStack_bc != 0" identifier != number_literal) )) (compound_statement "{\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }" { (expression_statement "aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];" (assignment_expression "aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3]" (subscript_expression "aiStack_b4[iVar1 * 3 + 1]" identifier [ (binary_expression "iVar1 * 3 + 1" (binary_expression "iVar1 * 3" identifier * number_literal) + number_literal) ]) = (binary_expression "piVar16[6] - aiStack_b4[iVar1 * 3]" (subscript_expression "piVar16[6]" identifier [ number_literal ]) - (subscript_expression "aiStack_b4[iVar1 * 3]" identifier [ (binary_expression "iVar1 * 3" identifier * number_literal) ]))) ;) (expression_statement "iVar1 = iVar1 + 1;" (assignment_expression "iVar1 = iVar1 + 1" identifier = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) })) }))) }) (else_clause "else {\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }" else (compound_statement "{\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }" { (if_statement "if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }" if (parenthesized_expression "(uVar3 == 0x10)" ( (binary_expression "uVar3 == 0x10" identifier == number_literal) )) (compound_statement "{\n        aiStack_b4[0] = 4;\n      }" { (expression_statement "aiStack_b4[0] = 4;" (assignment_expression "aiStack_b4[0] = 4" (subscript_expression "aiStack_b4[0]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }" else (compound_statement "{\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (if_statement "if (uVar3 != 0x17) goto LAB_0004b804;" if (parenthesized_expression "(uVar3 != 0x17)" ( (binary_expression "uVar3 != 0x17" identifier != number_literal) )) (goto_statement "goto LAB_0004b804;" goto statement_identifier ;)) (expression_statement "FUN_00047058(piVar16);" (call_expression "FUN_00047058(piVar16)" identifier (argument_list "(piVar16)" ( identifier ))) ;) (expression_statement "aiStack_b4[0] = piVar16[6] + 4;" (assignment_expression "aiStack_b4[0] = piVar16[6] + 4" (subscript_expression "aiStack_b4[0]" identifier [ number_literal ]) = (binary_expression "piVar16[6] + 4" (subscript_expression "piVar16[6]" identifier [ number_literal ]) + number_literal)) ;) }))) (expression_statement "aiStack_b4[2] = 2;" (assignment_expression "aiStack_b4[2] = 2" (subscript_expression "aiStack_b4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);" (call_expression "FUN_00047b74(piVar16,&iStack_bc,&iStack_b8)" identifier (argument_list "(piVar16,&iStack_bc,&iStack_b8)" ( identifier , (pointer_expression "&iStack_bc" & identifier) , (pointer_expression "&iStack_b8" & identifier) ))) ;) (expression_statement "pcVar20 = pcStack_c8;" (assignment_expression "pcVar20 = pcStack_c8" identifier = identifier) ;) (if_statement "if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }" if (parenthesized_expression "(iStack_bc == 0)" ( (binary_expression "iStack_bc == 0" identifier == number_literal) )) (compound_statement "{\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }" { (expression_statement "uVar3 = piVar16[2];" (assignment_expression "uVar3 = piVar16[2]" identifier = (subscript_expression "piVar16[2]" identifier [ number_literal ])) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0004b804;" goto statement_identifier ;) })) (expression_statement "uVar3 = piVar16[2];" (assignment_expression "uVar3 = piVar16[2]" identifier = (subscript_expression "piVar16[2]" identifier [ number_literal ])) ;) (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" identifier = number_literal) ;) (if_statement "if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;" if (parenthesized_expression "((uVar3 & 0xffffffdf) != 9)" ( (binary_expression "(uVar3 & 0xffffffdf) != 9" (parenthesized_expression "(uVar3 & 0xffffffdf)" ( (binary_expression "uVar3 & 0xffffffdf" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0004b818;" goto statement_identifier ;)) (expression_statement "pcVar21 = *(code **)(pcStack_c8 + -0x7efc);" (assignment_expression "pcVar21 = *(code **)(pcStack_c8 + -0x7efc)" identifier = (pointer_expression "*(code **)(pcStack_c8 + -0x7efc)" * (cast_expression "(code **)(pcStack_c8 + -0x7efc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcStack_c8 + -0x7efc)" ( (binary_expression "pcStack_c8 + -0x7efc" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);" statement_identifier : (expression_statement "iVar1 = (*pcVar21)(piVar17[0x92],0x7b);" (assignment_expression "iVar1 = (*pcVar21)(piVar17[0x92],0x7b)" identifier = (call_expression "(*pcVar21)(piVar17[0x92],0x7b)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(piVar17[0x92],0x7b)" ( (subscript_expression "piVar17[0x92]" identifier [ number_literal ]) , number_literal )))) ;)) (if_statement "if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }" { (expression_statement "uVar3 = piVar16[2];" (assignment_expression "uVar3 = piVar16[2]" identifier = (subscript_expression "piVar16[2]" identifier [ number_literal ])) ;) (expression_statement "pcVar20 = *(code **)(pcStack_c8 + -0x7efc);" (assignment_expression "pcVar20 = *(code **)(pcStack_c8 + -0x7efc)" identifier = (pointer_expression "*(code **)(pcStack_c8 + -0x7efc)" * (cast_expression "(code **)(pcStack_c8 + -0x7efc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcStack_c8 + -0x7efc)" ( (binary_expression "pcStack_c8 + -0x7efc" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = iVar10;" (assignment_expression "iVar1 = iVar10" identifier = identifier) ;) (goto_statement "goto joined_r0x0004b824;" goto statement_identifier ;) })) (expression_statement "iVar7 = *piVar16;" (assignment_expression "iVar7 = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;) (expression_statement "iVar1 = iVar10 + 1;" (assignment_expression "iVar1 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "aiStack_b4[iVar10 * 3] = 0;" (assignment_expression "aiStack_b4[iVar10 * 3] = 0" (subscript_expression "aiStack_b4[iVar10 * 3]" identifier [ (binary_expression "iVar10 * 3" identifier * number_literal) ]) = number_literal) ;) (expression_statement "aiStack_b4[iVar10 * 3 + 1] = iVar7;" (assignment_expression "aiStack_b4[iVar10 * 3 + 1] = iVar7" (subscript_expression "aiStack_b4[iVar10 * 3 + 1]" identifier [ (binary_expression "iVar10 * 3 + 1" (binary_expression "iVar10 * 3" identifier * number_literal) + number_literal) ]) = identifier) ;) (expression_statement "aiStack_b4[iVar10 * 3 + 2] = 1;" (assignment_expression "aiStack_b4[iVar10 * 3 + 2] = 1" (subscript_expression "aiStack_b4[iVar10 * 3 + 2]" identifier [ (binary_expression "iVar10 * 3 + 2" (binary_expression "iVar10 * 3" identifier * number_literal) + number_literal) ]) = number_literal) ;) }))) (expression_statement "FUN_00049aac(*(undefined1 *)(piVar16[4] + 0xc));" (call_expression "FUN_00049aac(*(undefined1 *)(piVar16[4] + 0xc))" identifier (argument_list "(*(undefined1 *)(piVar16[4] + 0xc))" ( (pointer_expression "*(undefined1 *)(piVar16[4] + 0xc)" * (cast_expression "(undefined1 *)(piVar16[4] + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[4] + 0xc)" ( (binary_expression "piVar16[4] + 0xc" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + number_literal) )))) ))) ;) (expression_statement "piStack_e8 = (int *)piVar16[5];" (assignment_expression "piStack_e8 = (int *)piVar16[5]" identifier = (cast_expression "(int *)piVar16[5]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar16[5]" identifier [ number_literal ]))) ;) (expression_statement "piStack_dc = aiStack_b4;" (assignment_expression "piStack_dc = aiStack_b4" identifier = identifier) ;) (expression_statement "uStack_d0 = 0;" (assignment_expression "uStack_d0 = 0" identifier = number_literal) ;) (expression_statement "uStack_d4 = 0;" (assignment_expression "uStack_d4 = 0" identifier = number_literal) ;) (expression_statement "uStack_d8 = 0;" (assignment_expression "uStack_d8 = 0" identifier = number_literal) ;) (expression_statement "uStack_e4 = extraout_v1;" (assignment_expression "uStack_e4 = extraout_v1" identifier = identifier) ;) (expression_statement "iStack_e0 = iVar1;" (assignment_expression "iStack_e0 = iVar1" identifier = identifier) ;) (expression_statement "log_packet(piVar17[6],1);" (call_expression "log_packet(piVar17[6],1)" identifier (argument_list "(piVar17[6],1)" ( (subscript_expression "piVar17[6]" identifier [ number_literal ]) , number_literal ))) ;) (expression_statement "pcVar20 = pcStack_c8;" (assignment_expression "pcVar20 = pcStack_c8" identifier = identifier) ;) (expression_statement "iVar1 = (piVar16[5] - piVar16[4]) + *piVar16;" (assignment_expression "iVar1 = (piVar16[5] - piVar16[4]) + *piVar16" identifier = (binary_expression "(piVar16[5] - piVar16[4]) + *piVar16" (parenthesized_expression "(piVar16[5] - piVar16[4])" ( (binary_expression "piVar16[5] - piVar16[4]" (subscript_expression "piVar16[5]" identifier [ number_literal ]) - (subscript_expression "piVar16[4]" identifier [ number_literal ])) )) + (pointer_expression "*piVar16" * identifier))) ;) (expression_statement "*piVar16 = iVar1;" (assignment_expression "*piVar16 = iVar1" (pointer_expression "*piVar16" * identifier) = identifier) ;) })) (if_statement "if (piVar17[0xf] != 0) {\n    piStack_e8 = &iStack_b8;\n    (**(code **)(pcVar20 + -0x7af0))(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc);\n    if (piVar16[7] < iStack_b8 + 2) {\n      FUN_0004b2d8(piVar16);\n    }\n    (**(code **)(pcStack_c8 + -0x6d44))(piVar16[4] + 0xc,iStack_bc,iStack_b8);\n    safefree(iStack_bc);\n    pcVar20 = pcStack_c8;\n    iVar1 = iStack_b8 + 0xc;\n    *piVar16 = iVar1;\n  }" if (parenthesized_expression "(piVar17[0xf] != 0)" ( (binary_expression "piVar17[0xf] != 0" (subscript_expression "piVar17[0xf]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    piStack_e8 = &iStack_b8;\n    (**(code **)(pcVar20 + -0x7af0))(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc);\n    if (piVar16[7] < iStack_b8 + 2) {\n      FUN_0004b2d8(piVar16);\n    }\n    (**(code **)(pcStack_c8 + -0x6d44))(piVar16[4] + 0xc,iStack_bc,iStack_b8);\n    safefree(iStack_bc);\n    pcVar20 = pcStack_c8;\n    iVar1 = iStack_b8 + 0xc;\n    *piVar16 = iVar1;\n  }" { (expression_statement "piStack_e8 = &iStack_b8;" (assignment_expression "piStack_e8 = &iStack_b8" identifier = (pointer_expression "&iStack_b8" & identifier)) ;) (expression_statement "(**(code **)(pcVar20 + -0x7af0))(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc);" (call_expression "(**(code **)(pcVar20 + -0x7af0))(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc)" (parenthesized_expression "(**(code **)(pcVar20 + -0x7af0))" ( (pointer_expression "**(code **)(pcVar20 + -0x7af0)" * (pointer_expression "*(code **)(pcVar20 + -0x7af0)" * (cast_expression "(code **)(pcVar20 + -0x7af0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + -0x7af0)" ( (binary_expression "pcVar20 + -0x7af0" identifier + number_literal) ))))) )) (argument_list "(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc)" ( (subscript_expression "piVar17[0x24]" identifier [ number_literal ]) , (binary_expression "piVar16[4] + 0xc" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + number_literal) , (binary_expression "iVar1 + -0xc" identifier + number_literal) , (pointer_expression "&iStack_bc" & identifier) ))) ;) (if_statement "if (piVar16[7] < iStack_b8 + 2) {\n      FUN_0004b2d8(piVar16);\n    }" if (parenthesized_expression "(piVar16[7] < iStack_b8 + 2)" ( (binary_expression "piVar16[7] < iStack_b8 + 2" (subscript_expression "piVar16[7]" identifier [ number_literal ]) < (binary_expression "iStack_b8 + 2" identifier + number_literal)) )) (compound_statement "{\n      FUN_0004b2d8(piVar16);\n    }" { (expression_statement "FUN_0004b2d8(piVar16);" (call_expression "FUN_0004b2d8(piVar16)" identifier (argument_list "(piVar16)" ( identifier ))) ;) })) (expression_statement "(**(code **)(pcStack_c8 + -0x6d44))(piVar16[4] + 0xc,iStack_bc,iStack_b8);" (call_expression "(**(code **)(pcStack_c8 + -0x6d44))(piVar16[4] + 0xc,iStack_bc,iStack_b8)" (parenthesized_expression "(**(code **)(pcStack_c8 + -0x6d44))" ( (pointer_expression "**(code **)(pcStack_c8 + -0x6d44)" * (pointer_expression "*(code **)(pcStack_c8 + -0x6d44)" * (cast_expression "(code **)(pcStack_c8 + -0x6d44)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcStack_c8 + -0x6d44)" ( (binary_expression "pcStack_c8 + -0x6d44" identifier + number_literal) ))))) )) (argument_list "(piVar16[4] + 0xc,iStack_bc,iStack_b8)" ( (binary_expression "piVar16[4] + 0xc" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + number_literal) , identifier , identifier ))) ;) (expression_statement "safefree(iStack_bc);" (call_expression "safefree(iStack_bc)" identifier (argument_list "(iStack_bc)" ( identifier ))) ;) (expression_statement "pcVar20 = pcStack_c8;" (assignment_expression "pcVar20 = pcStack_c8" identifier = identifier) ;) (expression_statement "iVar1 = iStack_b8 + 0xc;" (assignment_expression "iVar1 = iStack_b8 + 0xc" identifier = (binary_expression "iStack_b8 + 0xc" identifier + number_literal)) ;) (expression_statement "*piVar16 = iVar1;" (assignment_expression "*piVar16 = iVar1" (pointer_expression "*piVar16" * identifier) = identifier) ;) })) (expression_statement "iVar10 = iVar1 + 4;" (assignment_expression "iVar10 = iVar1 + 4" identifier = (binary_expression "iVar1 + 4" identifier + number_literal)) ;) (if_statement "if (piVar16[7] < iVar10) {\n    FUN_0004b2d8(piVar16);\n    iVar1 = *piVar16;\n    iVar10 = iVar1 + 4;\n    pcVar20 = pcStack_c8;\n  }" if (parenthesized_expression "(piVar16[7] < iVar10)" ( (binary_expression "piVar16[7] < iVar10" (subscript_expression "piVar16[7]" identifier [ number_literal ]) < identifier) )) (compound_statement "{\n    FUN_0004b2d8(piVar16);\n    iVar1 = *piVar16;\n    iVar10 = iVar1 + 4;\n    pcVar20 = pcStack_c8;\n  }" { (expression_statement "FUN_0004b2d8(piVar16);" (call_expression "FUN_0004b2d8(piVar16)" identifier (argument_list "(piVar16)" ( identifier ))) ;) (expression_statement "iVar1 = *piVar16;" (assignment_expression "iVar1 = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;) (expression_statement "iVar10 = iVar1 + 4;" (assignment_expression "iVar10 = iVar1 + 4" identifier = (binary_expression "iVar1 + 4" identifier + number_literal)) ;) (expression_statement "pcVar20 = pcStack_c8;" (assignment_expression "pcVar20 = pcStack_c8" identifier = identifier) ;) })) (expression_statement "uVar14 = iVar1 - 8;" (assignment_expression "uVar14 = iVar1 - 8" identifier = (binary_expression "iVar1 - 8" identifier - number_literal)) ;) (expression_statement "uVar3 = uVar14 & 0x80000007;" (assignment_expression "uVar3 = uVar14 & 0x80000007" identifier = (binary_expression "uVar14 & 0x80000007" identifier & number_literal)) ;) (expression_statement "*piVar16 = iVar10;" (assignment_expression "*piVar16 = iVar10" (pointer_expression "*piVar16" * identifier) = identifier) ;) (if_statement "if ((int)uVar3 < 0) {\n    uVar3 = (uVar3 - 1 | 0xfffffff8) + 1;\n  }" if (parenthesized_expression "((int)uVar3 < 0)" ( (binary_expression "(int)uVar3 < 0" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar3 = (uVar3 - 1 | 0xfffffff8) + 1;\n  }" { (expression_statement "uVar3 = (uVar3 - 1 | 0xfffffff8) + 1;" (assignment_expression "uVar3 = (uVar3 - 1 | 0xfffffff8) + 1" identifier = (binary_expression "(uVar3 - 1 | 0xfffffff8) + 1" (parenthesized_expression "(uVar3 - 1 | 0xfffffff8)" ( (binary_expression "uVar3 - 1 | 0xfffffff8" (binary_expression "uVar3 - 1" identifier - number_literal) | number_literal) )) + number_literal)) ;) })) (expression_statement "iVar1 = uVar14 - uVar3;" (assignment_expression "iVar1 = uVar14 - uVar3" identifier = (binary_expression "uVar14 - uVar3" identifier - identifier)) ;) (expression_statement "piVar15 = (int *)0xc;" (assignment_expression "piVar15 = (int *)0xc" identifier = (cast_expression "(int *)0xc" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar10 = iVar1 + 8;" (assignment_expression "iVar10 = iVar1 + 8" identifier = (binary_expression "iVar1 + 8" identifier + number_literal)) ;) (expression_statement "uVar11 = uVar3;" (assignment_expression "uVar11 = uVar3" identifier = identifier) ;) (do_statement "do {\n    uVar5 = (**(code **)(pcVar20 + -0x7af8))();\n    puVar6 = (undefined1 *)(piVar16[4] + uVar11);\n    uVar11 = uVar11 + 1;\n    *puVar6 = uVar5;\n    pcVar20 = pcStack_c8;\n  } while (uVar11 != 0xc);" do (compound_statement "{\n    uVar5 = (**(code **)(pcVar20 + -0x7af8))();\n    puVar6 = (undefined1 *)(piVar16[4] + uVar11);\n    uVar11 = uVar11 + 1;\n    *puVar6 = uVar5;\n    pcVar20 = pcStack_c8;\n  }" { (expression_statement "uVar5 = (**(code **)(pcVar20 + -0x7af8))();" (assignment_expression "uVar5 = (**(code **)(pcVar20 + -0x7af8))()" identifier = (call_expression "(**(code **)(pcVar20 + -0x7af8))()" (parenthesized_expression "(**(code **)(pcVar20 + -0x7af8))" ( (pointer_expression "**(code **)(pcVar20 + -0x7af8)" * (pointer_expression "*(code **)(pcVar20 + -0x7af8)" * (cast_expression "(code **)(pcVar20 + -0x7af8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + -0x7af8)" ( (binary_expression "pcVar20 + -0x7af8" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "puVar6 = (undefined1 *)(piVar16[4] + uVar11);" (assignment_expression "puVar6 = (undefined1 *)(piVar16[4] + uVar11)" identifier = (cast_expression "(undefined1 *)(piVar16[4] + uVar11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[4] + uVar11)" ( (binary_expression "piVar16[4] + uVar11" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + identifier) )))) ;) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "*puVar6 = uVar5;" (assignment_expression "*puVar6 = uVar5" (pointer_expression "*puVar6" * identifier) = identifier) ;) (expression_statement "pcVar20 = pcStack_c8;" (assignment_expression "pcVar20 = pcStack_c8" identifier = identifier) ;) }) while (parenthesized_expression "(uVar11 != 0xc)" ( (binary_expression "uVar11 != 0xc" identifier != number_literal) )) ;) (expression_statement "iVar12 = uVar3 + 4;" (assignment_expression "iVar12 = uVar3 + 4" identifier = (binary_expression "uVar3 + 4" identifier + number_literal)) ;) (expression_statement "uVar4 = (**(code **)(pcStack_c8 + -0x7af4))(piVar16[4] + iVar12,iVar1 + 4);" (assignment_expression "uVar4 = (**(code **)(pcStack_c8 + -0x7af4))(piVar16[4] + iVar12,iVar1 + 4)" identifier = (call_expression "(**(code **)(pcStack_c8 + -0x7af4))(piVar16[4] + iVar12,iVar1 + 4)" (parenthesized_expression "(**(code **)(pcStack_c8 + -0x7af4))" ( (pointer_expression "**(code **)(pcStack_c8 + -0x7af4)" * (pointer_expression "*(code **)(pcStack_c8 + -0x7af4)" * (cast_expression "(code **)(pcStack_c8 + -0x7af4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcStack_c8 + -0x7af4)" ( (binary_expression "pcStack_c8 + -0x7af4" identifier + number_literal) ))))) )) (argument_list "(piVar16[4] + iVar12,iVar1 + 4)" ( (binary_expression "piVar16[4] + iVar12" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + identifier) , (binary_expression "iVar1 + 4" identifier + number_literal) )))) ;) (expression_statement "iVar7 = iVar10 + uVar3;" (assignment_expression "iVar7 = iVar10 + uVar3" identifier = (binary_expression "iVar10 + uVar3" identifier + identifier)) ;) (expression_statement "*(char *)(piVar16[4] + iVar7) = (char)((uint)uVar4 >> 0x18);" (assignment_expression "*(char *)(piVar16[4] + iVar7) = (char)((uint)uVar4 >> 0x18)" (pointer_expression "*(char *)(piVar16[4] + iVar7)" * (cast_expression "(char *)(piVar16[4] + iVar7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[4] + iVar7)" ( (binary_expression "piVar16[4] + iVar7" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + identifier) )))) = (cast_expression "(char)((uint)uVar4 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar4 >> 0x18)" ( (binary_expression "(uint)uVar4 >> 0x18" (cast_expression "(uint)uVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar13 = (int *)((int)uVar14 >> 8);" (assignment_expression "piVar13 = (int *)((int)uVar14 >> 8)" identifier = (cast_expression "(int *)((int)uVar14 >> 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)uVar14 >> 8)" ( (binary_expression "(int)uVar14 >> 8" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "*(char *)(piVar16[4] + iVar7 + 1) = (char)((uint)uVar4 >> 0x10);" (assignment_expression "*(char *)(piVar16[4] + iVar7 + 1) = (char)((uint)uVar4 >> 0x10)" (pointer_expression "*(char *)(piVar16[4] + iVar7 + 1)" * (cast_expression "(char *)(piVar16[4] + iVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[4] + iVar7 + 1)" ( (binary_expression "piVar16[4] + iVar7 + 1" (binary_expression "piVar16[4] + iVar7" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + identifier) + number_literal) )))) = (cast_expression "(char)((uint)uVar4 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar4 >> 0x10)" ( (binary_expression "(uint)uVar4 >> 0x10" (cast_expression "(uint)uVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*(char *)(piVar16[4] + iVar7 + 2) = (char)((uint)uVar4 >> 8);" (assignment_expression "*(char *)(piVar16[4] + iVar7 + 2) = (char)((uint)uVar4 >> 8)" (pointer_expression "*(char *)(piVar16[4] + iVar7 + 2)" * (cast_expression "(char *)(piVar16[4] + iVar7 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[4] + iVar7 + 2)" ( (binary_expression "piVar16[4] + iVar7 + 2" (binary_expression "piVar16[4] + iVar7" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + identifier) + number_literal) )))) = (cast_expression "(char)((uint)uVar4 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar4 >> 8)" ( (binary_expression "(uint)uVar4 >> 8" (cast_expression "(uint)uVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*(char *)(piVar16[4] + iVar7 + 3) = (char)uVar4;" (assignment_expression "*(char *)(piVar16[4] + iVar7 + 3) = (char)uVar4" (pointer_expression "*(char *)(piVar16[4] + iVar7 + 3)" * (cast_expression "(char *)(piVar16[4] + iVar7 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[4] + iVar7 + 3)" ( (binary_expression "piVar16[4] + iVar7 + 3" (binary_expression "piVar16[4] + iVar7" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + identifier) + number_literal) )))) = (cast_expression "(char)uVar4" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(piVar16[4] + uVar3) = (char)(uVar14 >> 0x18);" (assignment_expression "*(char *)(piVar16[4] + uVar3) = (char)(uVar14 >> 0x18)" (pointer_expression "*(char *)(piVar16[4] + uVar3)" * (cast_expression "(char *)(piVar16[4] + uVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[4] + uVar3)" ( (binary_expression "piVar16[4] + uVar3" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + identifier) )))) = (cast_expression "(char)(uVar14 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar14 >> 0x18)" ( (binary_expression "uVar14 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "*(char *)(piVar16[4] + uVar3 + 1) = (char)(uVar14 >> 0x10);" (assignment_expression "*(char *)(piVar16[4] + uVar3 + 1) = (char)(uVar14 >> 0x10)" (pointer_expression "*(char *)(piVar16[4] + uVar3 + 1)" * (cast_expression "(char *)(piVar16[4] + uVar3 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[4] + uVar3 + 1)" ( (binary_expression "piVar16[4] + uVar3 + 1" (binary_expression "piVar16[4] + uVar3" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + identifier) + number_literal) )))) = (cast_expression "(char)(uVar14 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar14 >> 0x10)" ( (binary_expression "uVar14 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "*(char *)(piVar16[4] + uVar3 + 2) = (char)(uVar14 >> 8);" (assignment_expression "*(char *)(piVar16[4] + uVar3 + 2) = (char)(uVar14 >> 8)" (pointer_expression "*(char *)(piVar16[4] + uVar3 + 2)" * (cast_expression "(char *)(piVar16[4] + uVar3 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[4] + uVar3 + 2)" ( (binary_expression "piVar16[4] + uVar3 + 2" (binary_expression "piVar16[4] + uVar3" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + identifier) + number_literal) )))) = (cast_expression "(char)(uVar14 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar14 >> 8)" ( (binary_expression "uVar14 >> 8" identifier >> number_literal) )))) ;) (expression_statement "*(char *)(piVar16[4] + uVar3 + 3) = (char)uVar14;" (assignment_expression "*(char *)(piVar16[4] + uVar3 + 3) = (char)uVar14" (pointer_expression "*(char *)(piVar16[4] + uVar3 + 3)" * (cast_expression "(char *)(piVar16[4] + uVar3 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[4] + uVar3 + 3)" ( (binary_expression "piVar16[4] + uVar3 + 3" (binary_expression "piVar16[4] + uVar3" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + identifier) + number_literal) )))) = (cast_expression "(char)uVar14" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (piVar17[0x15] != 0) {\n    piVar13 = (int *)(piVar16[4] + iVar12);\n    (**(code **)(piVar17[0x15] + 0xc))(piVar17[0x16],piVar13,iVar10);\n  }" if (parenthesized_expression "(piVar17[0x15] != 0)" ( (binary_expression "piVar17[0x15] != 0" (subscript_expression "piVar17[0x15]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    piVar13 = (int *)(piVar16[4] + iVar12);\n    (**(code **)(piVar17[0x15] + 0xc))(piVar17[0x16],piVar13,iVar10);\n  }" { (expression_statement "piVar13 = (int *)(piVar16[4] + iVar12);" (assignment_expression "piVar13 = (int *)(piVar16[4] + iVar12)" identifier = (cast_expression "(int *)(piVar16[4] + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[4] + iVar12)" ( (binary_expression "piVar16[4] + iVar12" (subscript_expression "piVar16[4]" identifier [ number_literal ]) + identifier) )))) ;) (expression_statement "(**(code **)(piVar17[0x15] + 0xc))(piVar17[0x16],piVar13,iVar10);" (call_expression "(**(code **)(piVar17[0x15] + 0xc))(piVar17[0x16],piVar13,iVar10)" (parenthesized_expression "(**(code **)(piVar17[0x15] + 0xc))" ( (pointer_expression "**(code **)(piVar17[0x15] + 0xc)" * (pointer_expression "*(code **)(piVar17[0x15] + 0xc)" * (cast_expression "(code **)(piVar17[0x15] + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar17[0x15] + 0xc)" ( (binary_expression "piVar17[0x15] + 0xc" (subscript_expression "piVar17[0x15]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(piVar17[0x16],piVar13,iVar10)" ( (subscript_expression "piVar17[0x16]" identifier [ number_literal ]) , identifier , identifier ))) ;) })) (expression_statement "iVar7 = *piVar18;" (assignment_expression "iVar7 = *piVar18" identifier = (pointer_expression "*piVar18" * identifier)) ;) (expression_statement "*puVar2 = uVar3;" (assignment_expression "*puVar2 = uVar3" (pointer_expression "*puVar2" * identifier) = identifier) ;) (if_statement "if (iStack_84 == iVar7) {\n    return iVar1 + 0xc;\n  }" if (parenthesized_expression "(iStack_84 == iVar7)" ( (binary_expression "iStack_84 == iVar7" identifier == identifier) )) (compound_statement "{\n    return iVar1 + 0xc;\n  }" { (return_statement "return iVar1 + 0xc;" return (binary_expression "iVar1 + 0xc" identifier + number_literal) ;) })) (expression_statement "pcVar20 = *(code **)(pcStack_c8 + -0x6fe8);" (assignment_expression "pcVar20 = *(code **)(pcStack_c8 + -0x6fe8)" identifier = (pointer_expression "*(code **)(pcStack_c8 + -0x6fe8)" * (cast_expression "(code **)(pcStack_c8 + -0x6fe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcStack_c8 + -0x6fe8)" ( (binary_expression "pcStack_c8 + -0x6fe8" identifier + number_literal) ))))) ;) (expression_statement "pcVar21 = FUN_0004bc54;" (assignment_expression "pcVar21 = FUN_0004bc54" identifier = identifier) ;) (expression_statement "iVar1 = iStack_84;" (assignment_expression "iVar1 = iStack_84" identifier = identifier) ;) (expression_statement "(*pcVar20)();" (call_expression "(*pcVar20)()" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar7 = *piVar13;" (assignment_expression "iVar7 = *piVar13" identifier = (pointer_expression "*piVar13" * identifier)) ;) (expression_statement "piVar16 = *(int **)(pcVar20 + 0xc69dc);" (assignment_expression "piVar16 = *(int **)(pcVar20 + 0xc69dc)" identifier = (pointer_expression "*(int **)(pcVar20 + 0xc69dc)" * (cast_expression "(int **)(pcVar20 + 0xc69dc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + 0xc69dc)" ( (binary_expression "pcVar20 + 0xc69dc" identifier + number_literal) ))))) ;) (expression_statement "uStack_110 = 0xc;" (assignment_expression "uStack_110 = 0xc" identifier = number_literal) ;) (expression_statement "iStack_124 = *piVar16;" (assignment_expression "iStack_124 = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;) (expression_statement "aiStack_120[1] = iVar12;" (assignment_expression "aiStack_120[1] = iVar12" (subscript_expression "aiStack_120[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "aiStack_120[2] = uVar3;" (assignment_expression "aiStack_120[2] = uVar3" (subscript_expression "aiStack_120[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "aiStack_120[3] = uVar14;" (assignment_expression "aiStack_120[3] = uVar14" (subscript_expression "aiStack_120[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iStack_10c = iVar10;" (assignment_expression "iStack_10c = iVar10" identifier = identifier) ;) (expression_statement "piStack_108 = piVar17;" (assignment_expression "piStack_108 = piVar17" identifier = identifier) ;) (expression_statement "piStack_104 = piVar18;" (assignment_expression "piStack_104 = piVar18" identifier = identifier) ;) (expression_statement "puStack_100 = puVar2;" (assignment_expression "puStack_100 = puVar2" identifier = identifier) ;) (expression_statement "pcStack_fc = pcVar21;" (assignment_expression "pcStack_fc = pcVar21" identifier = identifier) ;) (if_statement "if (*(int *)(iVar1 + 0x18) == 0) goto LAB_0004bd94;" if (parenthesized_expression "(*(int *)(iVar1 + 0x18) == 0)" ( (binary_expression "*(int *)(iVar1 + 0x18) == 0" (pointer_expression "*(int *)(iVar1 + 0x18)" * (cast_expression "(int *)(iVar1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0004bd94;" goto statement_identifier ;)) (expression_statement "uVar3 = *(uint *)(iVar1 + 0x24c);" (assignment_expression "uVar3 = *(uint *)(iVar1 + 0x24c)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x24c)" * (cast_expression "(uint *)(iVar1 + 0x24c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x24c)" ( (binary_expression "iVar1 + 0x24c" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = piVar13[2];" (assignment_expression "iVar10 = piVar13[2]" identifier = (subscript_expression "piVar13[2]" identifier [ number_literal ])) ;) (expression_statement "piVar13[6] = 0;" (assignment_expression "piVar13[6] = 0" (subscript_expression "piVar13[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar13 = iVar7 - (piVar13[5] - piVar13[4]);" (assignment_expression "*piVar13 = iVar7 - (piVar13[5] - piVar13[4])" (pointer_expression "*piVar13" * identifier) = (binary_expression "iVar7 - (piVar13[5] - piVar13[4])" identifier - (parenthesized_expression "(piVar13[5] - piVar13[4])" ( (binary_expression "piVar13[5] - piVar13[4]" (subscript_expression "piVar13[5]" identifier [ number_literal ]) - (subscript_expression "piVar13[4]" identifier [ number_literal ])) )))) ;) (if_statement "if ((uVar3 != 0) && (uVar3 = 0, iVar10 - 0x5eU < 2)) {\n    FUN_00047058(piVar13);\n    if (piVar13[2] == 0x5f) {\n      FUN_00047058();\n    }\n    aiStack_154[2] = 2;\n    aiStack_154[0] = piVar13[6] + 4;\n    FUN_00047b74(piVar13,&iStack_15c,&iStack_158);\n    if (iStack_15c == 0) {\n      iVar10 = piVar13[2];\n      uVar3 = 0;\n    }\n    else {\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }\n  }" if (parenthesized_expression "((uVar3 != 0) && (uVar3 = 0, iVar10 - 0x5eU < 2))" ( (binary_expression "(uVar3 != 0) && (uVar3 = 0, iVar10 - 0x5eU < 2)" (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar3 = 0, iVar10 - 0x5eU < 2)" ( (comma_expression "uVar3 = 0, iVar10 - 0x5eU < 2" (assignment_expression "uVar3 = 0" identifier = number_literal) , (binary_expression "iVar10 - 0x5eU < 2" (binary_expression "iVar10 - 0x5eU" identifier - number_literal) < number_literal)) ))) )) (compound_statement "{\n    FUN_00047058(piVar13);\n    if (piVar13[2] == 0x5f) {\n      FUN_00047058();\n    }\n    aiStack_154[2] = 2;\n    aiStack_154[0] = piVar13[6] + 4;\n    FUN_00047b74(piVar13,&iStack_15c,&iStack_158);\n    if (iStack_15c == 0) {\n      iVar10 = piVar13[2];\n      uVar3 = 0;\n    }\n    else {\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }\n  }" { (expression_statement "FUN_00047058(piVar13);" (call_expression "FUN_00047058(piVar13)" identifier (argument_list "(piVar13)" ( identifier ))) ;) (if_statement "if (piVar13[2] == 0x5f) {\n      FUN_00047058();\n    }" if (parenthesized_expression "(piVar13[2] == 0x5f)" ( (binary_expression "piVar13[2] == 0x5f" (subscript_expression "piVar13[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      FUN_00047058();\n    }" { (expression_statement "FUN_00047058();" (call_expression "FUN_00047058()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "aiStack_154[2] = 2;" (assignment_expression "aiStack_154[2] = 2" (subscript_expression "aiStack_154[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "aiStack_154[0] = piVar13[6] + 4;" (assignment_expression "aiStack_154[0] = piVar13[6] + 4" (subscript_expression "aiStack_154[0]" identifier [ number_literal ]) = (binary_expression "piVar13[6] + 4" (subscript_expression "piVar13[6]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "FUN_00047b74(piVar13,&iStack_15c,&iStack_158);" (call_expression "FUN_00047b74(piVar13,&iStack_15c,&iStack_158)" identifier (argument_list "(piVar13,&iStack_15c,&iStack_158)" ( identifier , (pointer_expression "&iStack_15c" & identifier) , (pointer_expression "&iStack_158" & identifier) ))) ;) (if_statement "if (iStack_15c == 0) {\n      iVar10 = piVar13[2];\n      uVar3 = 0;\n    }\n    else {\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }" if (parenthesized_expression "(iStack_15c == 0)" ( (binary_expression "iStack_15c == 0" identifier == number_literal) )) (compound_statement "{\n      iVar10 = piVar13[2];\n      uVar3 = 0;\n    }" { (expression_statement "iVar10 = piVar13[2];" (assignment_expression "iVar10 = piVar13[2]" identifier = (subscript_expression "piVar13[2]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }" else (compound_statement "{\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }" { (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (expression_statement "iVar10 = piVar13[2];" (assignment_expression "iVar10 = piVar13[2]" identifier = (subscript_expression "piVar13[2]" identifier [ number_literal ])) ;) }))) })) (if_statement "if (iVar10 == 0x32) {\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar17 = &iStack_158;\n      piVar15 = &iStack_15c;\n      piVar13[6] = 0;\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }" if (parenthesized_expression "(iVar10 == 0x32)" ( (binary_expression "iVar10 == 0x32" identifier == number_literal) )) (compound_statement "{\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar17 = &iStack_158;\n      piVar15 = &iStack_15c;\n      piVar13[6] = 0;\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }" { (expression_statement "iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);" (assignment_expression "iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b)" identifier = (call_expression "(**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b)" (parenthesized_expression "(**(code **)(pcVar20 + 0xc5760))" ( (pointer_expression "**(code **)(pcVar20 + 0xc5760)" * (pointer_expression "*(code **)(pcVar20 + 0xc5760)" * (cast_expression "(code **)(pcVar20 + 0xc5760)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + 0xc5760)" ( (binary_expression "pcVar20 + 0xc5760" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar1 + 0x248),0x7b)" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x248)" * (cast_expression "(undefined4 *)(iVar1 + 0x248)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x248)" ( (binary_expression "iVar1 + 0x248" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (iVar10 != 0) {\n      piVar17 = &iStack_158;\n      piVar15 = &iStack_15c;\n      piVar13[6] = 0;\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_0004bd10;\n    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar17 = &iStack_158;\n      piVar15 = &iStack_15c;\n      piVar13[6] = 0;\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_0004bd10;\n    }" { (expression_statement "piVar17 = &iStack_158;" (assignment_expression "piVar17 = &iStack_158" identifier = (pointer_expression "&iStack_158" & identifier)) ;) (expression_statement "piVar15 = &iStack_15c;" (assignment_expression "piVar15 = &iStack_15c" identifier = (pointer_expression "&iStack_15c" & identifier)) ;) (expression_statement "piVar13[6] = 0;" (assignment_expression "piVar13[6] = 0" (subscript_expression "piVar13[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_00047b74(piVar13,piVar15,piVar17);" (call_expression "FUN_00047b74(piVar13,piVar15,piVar17)" identifier (argument_list "(piVar13,piVar15,piVar17)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_00047b74(piVar13,piVar15,piVar17);" (call_expression "FUN_00047b74(piVar13,piVar15,piVar17)" identifier (argument_list "(piVar13,piVar15,piVar17)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_00047b74(piVar13,piVar15,piVar17);" (call_expression "FUN_00047b74(piVar13,piVar15,piVar17)" identifier (argument_list "(piVar13,piVar15,piVar17)" ( identifier , identifier , identifier ))) ;) (if_statement "if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }" if (parenthesized_expression "(iStack_158 == 8)" ( (binary_expression "iStack_158 == 8" identifier == number_literal) )) (compound_statement "{\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }" { (expression_statement "iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);" (assignment_expression "iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8)" identifier = (call_expression "(**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8)" (parenthesized_expression "(**(code **)(pcVar20 + 0xc67dc))" ( (pointer_expression "**(code **)(pcVar20 + 0xc67dc)" * (pointer_expression "*(code **)(pcVar20 + 0xc67dc)" * (cast_expression "(code **)(pcVar20 + 0xc67dc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + 0xc67dc)" ( (binary_expression "pcVar20 + 0xc67dc" identifier + number_literal) ))))) )) (argument_list "(iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8)" ( identifier , (binary_expression "*(int *)(pcVar20 + 0xc56a4) + -0x469c" (pointer_expression "*(int *)(pcVar20 + 0xc56a4)" * (cast_expression "(int *)(pcVar20 + 0xc56a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar20 + 0xc56a4)" ( (binary_expression "pcVar20 + 0xc56a4" identifier + number_literal) )))) + number_literal) , number_literal )))) ;) (if_statement "if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }" { (expression_statement "iVar10 = piVar13[6];" (assignment_expression "iVar10 = piVar13[6]" identifier = (subscript_expression "piVar13[6]" identifier [ number_literal ])) ;) (if_statement "if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }" if (parenthesized_expression "(0 < *piVar13 - iVar10)" ( (binary_expression "0 < *piVar13 - iVar10" number_literal < (binary_expression "*piVar13 - iVar10" (pointer_expression "*piVar13" * identifier) - identifier)) )) (compound_statement "{\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }" { (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "piVar13[6] = iVar10;" (assignment_expression "piVar13[6] = iVar10" (subscript_expression "piVar13[6]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "aiStack_154[uVar3 * 3] = iVar10;" (assignment_expression "aiStack_154[uVar3 * 3] = iVar10" (subscript_expression "aiStack_154[uVar3 * 3]" identifier [ (binary_expression "uVar3 * 3" identifier * number_literal) ]) = identifier) ;) (expression_statement "aiStack_154[uVar3 * 3 + 2] = 1;" (assignment_expression "aiStack_154[uVar3 * 3 + 2] = 1" (subscript_expression "aiStack_154[uVar3 * 3 + 2]" identifier [ (binary_expression "uVar3 * 3 + 2" (binary_expression "uVar3 * 3" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "FUN_00047b74(piVar13,piVar15,piVar17);" (call_expression "FUN_00047b74(piVar13,piVar15,piVar17)" identifier (argument_list "(piVar13,piVar15,piVar17)" ( identifier , identifier , identifier ))) ;) (if_statement "if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }" if (parenthesized_expression "(iStack_15c != 0)" ( (binary_expression "iStack_15c != 0" identifier != number_literal) )) (compound_statement "{\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }" { (expression_statement "piVar18 = (int *)(uVar3 + 1);" (assignment_expression "piVar18 = (int *)(uVar3 + 1)" identifier = (cast_expression "(int *)(uVar3 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 + 1)" ( (binary_expression "uVar3 + 1" identifier + number_literal) )))) ;) (expression_statement "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];" (assignment_expression "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3]" (subscript_expression "aiStack_154[uVar3 * 3 + 1]" identifier [ (binary_expression "uVar3 * 3 + 1" (binary_expression "uVar3 * 3" identifier * number_literal) + number_literal) ]) = (binary_expression "piVar13[6] - aiStack_154[uVar3 * 3]" (subscript_expression "piVar13[6]" identifier [ number_literal ]) - (subscript_expression "aiStack_154[uVar3 * 3]" identifier [ (binary_expression "uVar3 * 3" identifier * number_literal) ]))) ;) (expression_statement "FUN_00047b74(piVar13,piVar15,piVar17);" (call_expression "FUN_00047b74(piVar13,piVar15,piVar17)" identifier (argument_list "(piVar13,piVar15,piVar17)" ( identifier , identifier , identifier ))) ;) (expression_statement "piVar15 = piVar18;" (assignment_expression "piVar15 = piVar18" identifier = identifier) ;) (if_statement "if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }" if (parenthesized_expression "(iStack_15c != 0)" ( (binary_expression "iStack_15c != 0" identifier != number_literal) )) (compound_statement "{\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }" { (expression_statement "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];" (assignment_expression "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3]" (subscript_expression "aiStack_154[uVar3 * 3 + 1]" identifier [ (binary_expression "uVar3 * 3 + 1" (binary_expression "uVar3 * 3" identifier * number_literal) + number_literal) ]) = (binary_expression "piVar13[6] - aiStack_154[(int)piVar18 * 3]" (subscript_expression "piVar13[6]" identifier [ number_literal ]) - (subscript_expression "aiStack_154[(int)piVar18 * 3]" identifier [ (binary_expression "(int)piVar18 * 3" (cast_expression "(int)piVar18" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ]))) ;) })) })) })) })) (goto_statement "goto LAB_0004bd10;" goto statement_identifier ;) })) (expression_statement "iVar10 = piVar13[2];" (assignment_expression "iVar10 = piVar13[2]" identifier = (subscript_expression "piVar13[2]" identifier [ number_literal ])) ;) })) (if_statement "if ((*(int *)(iVar1 + 0x188) == 4) && (iVar10 == 0x3d)) {\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar13[6] = 0;\n      piVar17 = &iStack_158;\n      FUN_00047058(piVar13);\n      aiStack_154[uVar3 * 3] = piVar13[6];\n      aiStack_154[uVar3 * 3 + 2] = 1;\n      do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n      piVar15 = &iStack_15c;\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }" if (parenthesized_expression "((*(int *)(iVar1 + 0x188) == 4) && (iVar10 == 0x3d))" ( (binary_expression "(*(int *)(iVar1 + 0x188) == 4) && (iVar10 == 0x3d)" (parenthesized_expression "(*(int *)(iVar1 + 0x188) == 4)" ( (binary_expression "*(int *)(iVar1 + 0x188) == 4" (pointer_expression "*(int *)(iVar1 + 0x188)" * (cast_expression "(int *)(iVar1 + 0x188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x188)" ( (binary_expression "iVar1 + 0x188" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "(iVar10 == 0x3d)" ( (binary_expression "iVar10 == 0x3d" identifier == number_literal) ))) )) (compound_statement "{\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar13[6] = 0;\n      piVar17 = &iStack_158;\n      FUN_00047058(piVar13);\n      aiStack_154[uVar3 * 3] = piVar13[6];\n      aiStack_154[uVar3 * 3 + 2] = 1;\n      do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n      piVar15 = &iStack_15c;\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }" { (expression_statement "iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);" (assignment_expression "iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b)" identifier = (call_expression "(**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b)" (parenthesized_expression "(**(code **)(pcVar20 + 0xc5760))" ( (pointer_expression "**(code **)(pcVar20 + 0xc5760)" * (pointer_expression "*(code **)(pcVar20 + 0xc5760)" * (cast_expression "(code **)(pcVar20 + 0xc5760)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + 0xc5760)" ( (binary_expression "pcVar20 + 0xc5760" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar1 + 0x248),0x7b)" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x248)" * (cast_expression "(undefined4 *)(iVar1 + 0x248)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x248)" ( (binary_expression "iVar1 + 0x248" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (iVar10 != 0) {\n      piVar13[6] = 0;\n      piVar17 = &iStack_158;\n      FUN_00047058(piVar13);\n      aiStack_154[uVar3 * 3] = piVar13[6];\n      aiStack_154[uVar3 * 3 + 2] = 1;\n      do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n      piVar15 = &iStack_15c;\n      goto LAB_0004bd10;\n    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar13[6] = 0;\n      piVar17 = &iStack_158;\n      FUN_00047058(piVar13);\n      aiStack_154[uVar3 * 3] = piVar13[6];\n      aiStack_154[uVar3 * 3 + 2] = 1;\n      do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n      piVar15 = &iStack_15c;\n      goto LAB_0004bd10;\n    }" { (expression_statement "piVar13[6] = 0;" (assignment_expression "piVar13[6] = 0" (subscript_expression "piVar13[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar17 = &iStack_158;" (assignment_expression "piVar17 = &iStack_158" identifier = (pointer_expression "&iStack_158" & identifier)) ;) (expression_statement "FUN_00047058(piVar13);" (call_expression "FUN_00047058(piVar13)" identifier (argument_list "(piVar13)" ( identifier ))) ;) (expression_statement "aiStack_154[uVar3 * 3] = piVar13[6];" (assignment_expression "aiStack_154[uVar3 * 3] = piVar13[6]" (subscript_expression "aiStack_154[uVar3 * 3]" identifier [ (binary_expression "uVar3 * 3" identifier * number_literal) ]) = (subscript_expression "piVar13[6]" identifier [ number_literal ])) ;) (expression_statement "aiStack_154[uVar3 * 3 + 2] = 1;" (assignment_expression "aiStack_154[uVar3 * 3 + 2] = 1" (subscript_expression "aiStack_154[uVar3 * 3 + 2]" identifier [ (binary_expression "uVar3 * 3 + 2" (binary_expression "uVar3 * 3" identifier * number_literal) + number_literal) ]) = number_literal) ;) (do_statement "do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);" do (compound_statement "{\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      }" { (expression_statement "FUN_00047b74(piVar13,&iStack_15c,piVar17);" (call_expression "FUN_00047b74(piVar13,&iStack_15c,piVar17)" identifier (argument_list "(piVar13,&iStack_15c,piVar17)" ( identifier , (pointer_expression "&iStack_15c" & identifier) , identifier ))) ;) }) while (parenthesized_expression "(iStack_15c != 0)" ( (binary_expression "iStack_15c != 0" identifier != number_literal) )) ;) (expression_statement "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];" (assignment_expression "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3]" (subscript_expression "aiStack_154[uVar3 * 3 + 1]" identifier [ (binary_expression "uVar3 * 3 + 1" (binary_expression "uVar3 * 3" identifier * number_literal) + number_literal) ]) = (binary_expression "piVar13[6] - aiStack_154[uVar3 * 3]" (subscript_expression "piVar13[6]" identifier [ number_literal ]) - (subscript_expression "aiStack_154[uVar3 * 3]" identifier [ (binary_expression "uVar3 * 3" identifier * number_literal) ]))) ;) (expression_statement "piVar15 = &iStack_15c;" (assignment_expression "piVar15 = &iStack_15c" identifier = (pointer_expression "&iStack_15c" & identifier)) ;) (goto_statement "goto LAB_0004bd10;" goto statement_identifier ;) })) (expression_statement "iVar10 = piVar13[2];" (assignment_expression "iVar10 = piVar13[2]" identifier = (subscript_expression "piVar13[2]" identifier [ number_literal ])) ;) })) (if_statement "if ((iVar10 == 0x62) &&\n     (iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0))\n  {\n    piVar13[6] = 0;\n    piVar17 = &iStack_158;\n    piVar15 = &iStack_15c;\n    FUN_00047058(piVar13);\n    FUN_00047b74();\n    if (iStack_158 == 7) {\n      iVar7 = piVar13[6];\n      iVar10 = iVar7 + 1;\n      piVar18 = piVar15;\n      if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;\n      if (*piVar13 - iVar10 < 1) goto LAB_0004c510;\n      piVar13[6] = iVar7 + 2;\n      goto LAB_0004c1fc;\n    }\n  }" if (parenthesized_expression "((iVar10 == 0x62) &&\n     (iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0))" ( (binary_expression "(iVar10 == 0x62) &&\n     (iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0)" (parenthesized_expression "(iVar10 == 0x62)" ( (binary_expression "iVar10 == 0x62" identifier == number_literal) )) && (parenthesized_expression "(iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0)" ( (comma_expression "iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0" (assignment_expression "iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b)" identifier = (call_expression "(**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b)" (parenthesized_expression "(**(code **)(pcVar20 + 0xc5760))" ( (pointer_expression "**(code **)(pcVar20 + 0xc5760)" * (pointer_expression "*(code **)(pcVar20 + 0xc5760)" * (cast_expression "(code **)(pcVar20 + 0xc5760)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + 0xc5760)" ( (binary_expression "pcVar20 + 0xc5760" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar1 + 0x248),0x7b)" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x248)" * (cast_expression "(undefined4 *)(iVar1 + 0x248)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x248)" ( (binary_expression "iVar1 + 0x248" identifier + number_literal) )))) , number_literal )))) , (binary_expression "iVar10 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    piVar13[6] = 0;\n    piVar17 = &iStack_158;\n    piVar15 = &iStack_15c;\n    FUN_00047058(piVar13);\n    FUN_00047b74();\n    if (iStack_158 == 7) {\n      iVar7 = piVar13[6];\n      iVar10 = iVar7 + 1;\n      piVar18 = piVar15;\n      if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;\n      if (*piVar13 - iVar10 < 1) goto LAB_0004c510;\n      piVar13[6] = iVar7 + 2;\n      goto LAB_0004c1fc;\n    }\n  }" { (expression_statement "piVar13[6] = 0;" (assignment_expression "piVar13[6] = 0" (subscript_expression "piVar13[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar17 = &iStack_158;" (assignment_expression "piVar17 = &iStack_158" identifier = (pointer_expression "&iStack_158" & identifier)) ;) (expression_statement "piVar15 = &iStack_15c;" (assignment_expression "piVar15 = &iStack_15c" identifier = (pointer_expression "&iStack_15c" & identifier)) ;) (expression_statement "FUN_00047058(piVar13);" (call_expression "FUN_00047058(piVar13)" identifier (argument_list "(piVar13)" ( identifier ))) ;) (expression_statement "FUN_00047b74();" (call_expression "FUN_00047b74()" identifier (argument_list "()" ( ))) ;) (if_statement "if (iStack_158 == 7) {\n      iVar7 = piVar13[6];\n      iVar10 = iVar7 + 1;\n      piVar18 = piVar15;\n      if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;\n      if (*piVar13 - iVar10 < 1) goto LAB_0004c510;\n      piVar13[6] = iVar7 + 2;\n      goto LAB_0004c1fc;\n    }" if (parenthesized_expression "(iStack_158 == 7)" ( (binary_expression "iStack_158 == 7" identifier == number_literal) )) (compound_statement "{\n      iVar7 = piVar13[6];\n      iVar10 = iVar7 + 1;\n      piVar18 = piVar15;\n      if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;\n      if (*piVar13 - iVar10 < 1) goto LAB_0004c510;\n      piVar13[6] = iVar7 + 2;\n      goto LAB_0004c1fc;\n    }" { (expression_statement "iVar7 = piVar13[6];" (assignment_expression "iVar7 = piVar13[6]" identifier = (subscript_expression "piVar13[6]" identifier [ number_literal ])) ;) (expression_statement "iVar10 = iVar7 + 1;" (assignment_expression "iVar10 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "piVar18 = piVar15;" (assignment_expression "piVar18 = piVar15" identifier = identifier) ;) (if_statement "if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;" if (parenthesized_expression "(*piVar13 - iVar7 < 1)" ( (binary_expression "*piVar13 - iVar7 < 1" (binary_expression "*piVar13 - iVar7" (pointer_expression "*piVar13" * identifier) - identifier) < number_literal) )) (goto_statement "goto LAB_0004c1fc;" goto statement_identifier ;)) (if_statement "if (*piVar13 - iVar10 < 1) goto LAB_0004c510;" if (parenthesized_expression "(*piVar13 - iVar10 < 1)" ( (binary_expression "*piVar13 - iVar10 < 1" (binary_expression "*piVar13 - iVar10" (pointer_expression "*piVar13" * identifier) - identifier) < number_literal) )) (goto_statement "goto LAB_0004c510;" goto statement_identifier ;)) (expression_statement "piVar13[6] = iVar7 + 2;" (assignment_expression "piVar13[6] = iVar7 + 2" (subscript_expression "piVar13[6]" identifier [ number_literal ]) = (binary_expression "iVar7 + 2" identifier + number_literal)) ;) (goto_statement "goto LAB_0004c1fc;" goto statement_identifier ;) })) })) (labeled_statement "LAB_0004bd10:\n  do {\n    FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5));\n    log_packet(*(undefined4 *)(iVar1 + 0x18),1);\n    iVar7 = (piVar13[5] - piVar13[4]) + *piVar13;\n    *piVar13 = iVar7;\nLAB_0004bd94:\n    uVar3 = *(uint *)(iVar1 + 0xec);\n    if (uVar3 == 0) {\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }\n    else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }\n    if (iStack_124 == *piVar16) {\n      return iVar10;\n    }\n    iVar10 = iStack_124;\n    (**(code **)(pcVar20 + 0xc6674))();\nLAB_0004c510:\n    piVar13[6] = iVar10;\n    piVar18 = piVar15;\nLAB_0004c1fc:\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    iVar10 = piVar13[6];\n    piVar15 = aiStack_120 + uVar3 * 3;\n    aiStack_154[uVar3 * 3 + 2] = 1;\n    aiStack_154[uVar3 * 3] = iVar10;\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    if (iStack_15c != 0) {\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }\n  } while( true );" statement_identifier : (do_statement "do {\n    FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5));\n    log_packet(*(undefined4 *)(iVar1 + 0x18),1);\n    iVar7 = (piVar13[5] - piVar13[4]) + *piVar13;\n    *piVar13 = iVar7;\nLAB_0004bd94:\n    uVar3 = *(uint *)(iVar1 + 0xec);\n    if (uVar3 == 0) {\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }\n    else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }\n    if (iStack_124 == *piVar16) {\n      return iVar10;\n    }\n    iVar10 = iStack_124;\n    (**(code **)(pcVar20 + 0xc6674))();\nLAB_0004c510:\n    piVar13[6] = iVar10;\n    piVar18 = piVar15;\nLAB_0004c1fc:\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    iVar10 = piVar13[6];\n    piVar15 = aiStack_120 + uVar3 * 3;\n    aiStack_154[uVar3 * 3 + 2] = 1;\n    aiStack_154[uVar3 * 3] = iVar10;\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    if (iStack_15c != 0) {\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }\n  } while( true );" do (compound_statement "{\n    FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5));\n    log_packet(*(undefined4 *)(iVar1 + 0x18),1);\n    iVar7 = (piVar13[5] - piVar13[4]) + *piVar13;\n    *piVar13 = iVar7;\nLAB_0004bd94:\n    uVar3 = *(uint *)(iVar1 + 0xec);\n    if (uVar3 == 0) {\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }\n    else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }\n    if (iStack_124 == *piVar16) {\n      return iVar10;\n    }\n    iVar10 = iStack_124;\n    (**(code **)(pcVar20 + 0xc6674))();\nLAB_0004c510:\n    piVar13[6] = iVar10;\n    piVar18 = piVar15;\nLAB_0004c1fc:\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    iVar10 = piVar13[6];\n    piVar15 = aiStack_120 + uVar3 * 3;\n    aiStack_154[uVar3 * 3 + 2] = 1;\n    aiStack_154[uVar3 * 3] = iVar10;\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    if (iStack_15c != 0) {\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }\n  }" { (expression_statement "FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5));" (call_expression "FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5))" identifier (argument_list "(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5))" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x184)" * (cast_expression "(undefined4 *)(iVar1 + 0x184)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x184)" ( (binary_expression "iVar1 + 0x184" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar1 + 0x188)" * (cast_expression "(undefined4 *)(iVar1 + 0x188)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x188)" ( (binary_expression "iVar1 + 0x188" identifier + number_literal) )))) , (pointer_expression "*(undefined1 *)(piVar13[4] + 5)" * (cast_expression "(undefined1 *)(piVar13[4] + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar13[4] + 5)" ( (binary_expression "piVar13[4] + 5" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + number_literal) )))) ))) ;) (expression_statement "log_packet(*(undefined4 *)(iVar1 + 0x18),1);" (call_expression "log_packet(*(undefined4 *)(iVar1 + 0x18),1)" identifier (argument_list "(*(undefined4 *)(iVar1 + 0x18),1)" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" * (cast_expression "(undefined4 *)(iVar1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "iVar7 = (piVar13[5] - piVar13[4]) + *piVar13;" (assignment_expression "iVar7 = (piVar13[5] - piVar13[4]) + *piVar13" identifier = (binary_expression "(piVar13[5] - piVar13[4]) + *piVar13" (parenthesized_expression "(piVar13[5] - piVar13[4])" ( (binary_expression "piVar13[5] - piVar13[4]" (subscript_expression "piVar13[5]" identifier [ number_literal ]) - (subscript_expression "piVar13[4]" identifier [ number_literal ])) )) + (pointer_expression "*piVar13" * identifier))) ;) (expression_statement "*piVar13 = iVar7;" (assignment_expression "*piVar13 = iVar7" (pointer_expression "*piVar13" * identifier) = identifier) ;) (labeled_statement "LAB_0004bd94:\n    uVar3 = *(uint *)(iVar1 + 0xec);" statement_identifier : (expression_statement "uVar3 = *(uint *)(iVar1 + 0xec);" (assignment_expression "uVar3 = *(uint *)(iVar1 + 0xec)" identifier = (pointer_expression "*(uint *)(iVar1 + 0xec)" * (cast_expression "(uint *)(iVar1 + 0xec)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xec)" ( (binary_expression "iVar1 + 0xec" identifier + number_literal) ))))) ;)) (if_statement "if (uVar3 == 0) {\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }\n    else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }" { (if_statement "if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }" if (parenthesized_expression "(*(int *)(iVar1 + 0x88) != 0)" ( (binary_expression "*(int *)(iVar1 + 0x88) != 0" (pointer_expression "*(int *)(iVar1 + 0x88)" * (cast_expression "(int *)(iVar1 + 0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x88)" ( (binary_expression "iVar1 + 0x88" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }" { (expression_statement "iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);" (assignment_expression "iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158)" identifier = (call_expression "(**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158)" (parenthesized_expression "(**(code **)(*(int *)(iVar1 + 0x88) + 0x10))" ( (pointer_expression "**(code **)(*(int *)(iVar1 + 0x88) + 0x10)" * (pointer_expression "*(code **)(*(int *)(iVar1 + 0x88) + 0x10)" * (cast_expression "(code **)(*(int *)(iVar1 + 0x88) + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar1 + 0x88) + 0x10)" ( (binary_expression "*(int *)(iVar1 + 0x88) + 0x10" (pointer_expression "*(int *)(iVar1 + 0x88)" * (cast_expression "(int *)(iVar1 + 0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x88)" ( (binary_expression "iVar1 + 0x88" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158)" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x90)" * (cast_expression "(undefined4 *)(iVar1 + 0x90)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x90)" ( (binary_expression "iVar1 + 0x90" identifier + number_literal) )))) , (binary_expression "piVar13[4] + 5" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + number_literal) , (binary_expression "iVar7 + -5" identifier + number_literal) , (pointer_expression "&iStack_15c" & identifier) , (pointer_expression "&iStack_158" & identifier) )))) ;) (if_statement "if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar7 = *piVar13;\n        }" { (expression_statement "iVar7 = *piVar13;" (assignment_expression "iVar7 = *piVar13" identifier = (pointer_expression "*piVar13" * identifier)) ;) }) (else_clause "else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }" else (compound_statement "{\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }" { (expression_statement "*piVar13 = 5;" (assignment_expression "*piVar13 = 5" (pointer_expression "*piVar13" * identifier) = number_literal) ;) (expression_statement "FUN_0004b364(piVar13,iStack_15c,iStack_158);" (call_expression "FUN_0004b364(piVar13,iStack_15c,iStack_158)" identifier (argument_list "(piVar13,iStack_15c,iStack_158)" ( identifier , identifier , identifier ))) ;) (expression_statement "safefree(iStack_15c);" (call_expression "safefree(iStack_15c)" identifier (argument_list "(iStack_15c)" ( identifier ))) ;) (expression_statement "iVar7 = *piVar13;" (assignment_expression "iVar7 = *piVar13" identifier = (pointer_expression "*piVar13" * identifier)) ;) }))) })) (if_statement "if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }" if (parenthesized_expression "(*(int *)(iVar1 + 0x60) == 0)" ( (binary_expression "*(int *)(iVar1 + 0x60) == 0" (pointer_expression "*(int *)(iVar1 + 0x60)" * (cast_expression "(int *)(iVar1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x60)" ( (binary_expression "iVar1 + 0x60" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        iVar10 = 8;\n      }" { (expression_statement "iVar10 = 8;" (assignment_expression "iVar10 = 8" identifier = number_literal) ;) }) (else_clause "else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }" else (compound_statement "{\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }" { (expression_statement "iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);" (assignment_expression "iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24)" identifier = (pointer_expression "*(int *)(*(int *)(iVar1 + 0x60) + 0x24)" * (cast_expression "(int *)(*(int *)(iVar1 + 0x60) + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 0x60) + 0x24)" ( (binary_expression "*(int *)(iVar1 + 0x60) + 0x24" (pointer_expression "*(int *)(iVar1 + 0x60)" * (cast_expression "(int *)(iVar1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x60)" ( (binary_expression "iVar1 + 0x60" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "iVar10 = 8;" (assignment_expression "iVar10 = 8" identifier = number_literal) ;) (if_statement "if (7 < iVar12) {\n          iVar10 = iVar12;\n        }" if (parenthesized_expression "(7 < iVar12)" ( (binary_expression "7 < iVar12" number_literal < identifier) )) (compound_statement "{\n          iVar10 = iVar12;\n        }" { (expression_statement "iVar10 = iVar12;" (assignment_expression "iVar10 = iVar12" identifier = identifier) ;) })) }))) (expression_statement "iVar12 = *(int *)(iVar1 + 0x70);" (assignment_expression "iVar12 = *(int *)(iVar1 + 0x70)" identifier = (pointer_expression "*(int *)(iVar1 + 0x70)" * (cast_expression "(int *)(iVar1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x70)" ( (binary_expression "iVar1 + 0x70" identifier + number_literal) ))))) ;) (if_statement "if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }" if (parenthesized_expression "((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0))" ( (binary_expression "(iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)" (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(int *)(iVar1 + 0x78) == 0)" ( (binary_expression "*(int *)(iVar1 + 0x78) == 0" (pointer_expression "*(int *)(iVar1 + 0x78)" * (cast_expression "(int *)(iVar1 + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x78)" ( (binary_expression "iVar1 + 0x78" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }" { (expression_statement "iVar8 = piVar13[1];" (assignment_expression "iVar8 = piVar13[1]" identifier = (subscript_expression "piVar13[1]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = iVar7;" (assignment_expression "iVar9 = iVar7" identifier = identifier) ;) (if_statement "if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;" if (parenthesized_expression "(iVar8 <= iVar7 + 4)" ( (binary_expression "iVar8 <= iVar7 + 4" identifier <= (binary_expression "iVar7 + 4" identifier + number_literal)) )) (goto_statement "goto LAB_0004c04c;" goto statement_identifier ;)) (labeled_statement "LAB_0004be1c:\n        iVar8 = iVar8 - iVar7;" statement_identifier : (expression_statement "iVar8 = iVar8 - iVar7;" (assignment_expression "iVar8 = iVar8 - iVar7" identifier = (binary_expression "iVar8 - iVar7" identifier - identifier)) ;)) }) (else_clause "else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }" else (compound_statement "{\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }" { (expression_statement "iVar8 = piVar13[1];" (assignment_expression "iVar8 = piVar13[1]" identifier = (subscript_expression "piVar13[1]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = iVar7 + -4;" (assignment_expression "iVar9 = iVar7 + -4" identifier = (binary_expression "iVar7 + -4" identifier + number_literal)) ;) (if_statement "if (iVar7 + 4 < iVar8) goto LAB_0004be1c;" if (parenthesized_expression "(iVar7 + 4 < iVar8)" ( (binary_expression "iVar7 + 4 < iVar8" (binary_expression "iVar7 + 4" identifier + number_literal) < identifier) )) (goto_statement "goto LAB_0004be1c;" goto statement_identifier ;)) (labeled_statement "LAB_0004c04c:\n        iVar8 = 4;" statement_identifier : (expression_statement "iVar8 = 4;" (assignment_expression "iVar8 = 4" identifier = number_literal) ;)) }))) (if_statement "if (iVar10 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (iVar10 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;" (assignment_expression "uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8" identifier = (binary_expression "(iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8" (binary_expression "(iVar10 - (iVar8 + iVar9) % iVar10) % iVar10" (parenthesized_expression "(iVar10 - (iVar8 + iVar9) % iVar10)" ( (binary_expression "iVar10 - (iVar8 + iVar9) % iVar10" identifier - (binary_expression "(iVar8 + iVar9) % iVar10" (parenthesized_expression "(iVar8 + iVar9)" ( (binary_expression "iVar8 + iVar9" identifier + identifier) )) % identifier)) )) % identifier) + identifier)) ;) (if_statement "if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }" if (parenthesized_expression "(0xff < (int)uVar14)" ( (binary_expression "0xff < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }" { (expression_statement "iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);" (assignment_expression "iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0)" identifier = (call_expression "(**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0)" (parenthesized_expression "(**(code **)(pcVar20 + 0xc62fc))" ( (pointer_expression "**(code **)(pcVar20 + 0xc62fc)" * (pointer_expression "*(code **)(pcVar20 + 0xc62fc)" * (cast_expression "(code **)(pcVar20 + 0xc62fc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + 0xc62fc)" ( (binary_expression "pcVar20 + 0xc62fc" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0)" ( (binary_expression "*(int *)(pcVar20 + 0xc56a4) + -0x54a0" (pointer_expression "*(int *)(pcVar20 + 0xc56a4)" * (cast_expression "(int *)(pcVar20 + 0xc56a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar20 + 0xc56a4)" ( (binary_expression "pcVar20 + 0xc56a4" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(pcVar20 + 0xc56a4) + -0x6580" (pointer_expression "*(int *)(pcVar20 + 0xc56a4)" * (cast_expression "(int *)(pcVar20 + 0xc56a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar20 + 0xc56a4)" ( (binary_expression "pcVar20 + 0xc56a4" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(pcVar20 + 0xc56a4) + -0x1ce0" (pointer_expression "*(int *)(pcVar20 + 0xc56a4)" * (cast_expression "(int *)(pcVar20 + 0xc56a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar20 + 0xc56a4)" ( (binary_expression "pcVar20 + 0xc56a4" identifier + number_literal) )))) + number_literal) )))) ;) (return_statement "return iVar1;" return identifier ;) })) (expression_statement "piVar15 = (int *)0x0;" (assignment_expression "piVar15 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }" { (expression_statement "piVar15 = *(int **)(iVar12 + 0x2c);" (assignment_expression "piVar15 = *(int **)(iVar12 + 0x2c)" identifier = (pointer_expression "*(int **)(iVar12 + 0x2c)" * (cast_expression "(int **)(iVar12 + 0x2c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + 0x2c)" ( (binary_expression "iVar12 + 0x2c" identifier + number_literal) ))))) ;) })) (if_statement "if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }" if (parenthesized_expression "(piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15))" ( (binary_expression "piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)" (subscript_expression "piVar13[7]" identifier [ number_literal ]) < (cast_expression "(int)(uVar14 + iVar7 + (int)piVar15)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar14 + iVar7 + (int)piVar15)" ( (binary_expression "uVar14 + iVar7 + (int)piVar15" (binary_expression "uVar14 + iVar7" identifier + identifier) + (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n        FUN_0004b2d8(piVar13);\n      }" { (expression_statement "FUN_0004b2d8(piVar13);" (call_expression "FUN_0004b2d8(piVar13)" identifier (argument_list "(piVar13)" ( identifier ))) ;) })) (expression_statement "*(char *)(piVar13[4] + 4) = (char)uVar14;" (assignment_expression "*(char *)(piVar13[4] + 4) = (char)uVar14" (pointer_expression "*(char *)(piVar13[4] + 4)" * (cast_expression "(char *)(piVar13[4] + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar13[4] + 4)" ( (binary_expression "piVar13[4] + 4" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)uVar14" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (if_statement "if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }" if (parenthesized_expression "(0 < (int)uVar14)" ( (binary_expression "0 < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }" { (do_statement "do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);" do (compound_statement "{\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        }" { (expression_statement "uVar5 = (**(code **)(pcVar20 + 0xc5b64))();" (assignment_expression "uVar5 = (**(code **)(pcVar20 + 0xc5b64))()" identifier = (call_expression "(**(code **)(pcVar20 + 0xc5b64))()" (parenthesized_expression "(**(code **)(pcVar20 + 0xc5b64))" ( (pointer_expression "**(code **)(pcVar20 + 0xc5b64)" * (pointer_expression "*(code **)(pcVar20 + 0xc5b64)" * (cast_expression "(code **)(pcVar20 + 0xc5b64)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + 0xc5b64)" ( (binary_expression "pcVar20 + 0xc5b64" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "iVar10 = piVar13[4] + uVar11;" (assignment_expression "iVar10 = piVar13[4] + uVar11" identifier = (binary_expression "piVar13[4] + uVar11" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(iVar10 + *piVar13) = uVar5;" (assignment_expression "*(undefined1 *)(iVar10 + *piVar13) = uVar5" (pointer_expression "*(undefined1 *)(iVar10 + *piVar13)" * (cast_expression "(undefined1 *)(iVar10 + *piVar13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + *piVar13)" ( (binary_expression "iVar10 + *piVar13" identifier + (pointer_expression "*piVar13" * identifier)) )))) = identifier) ;) (expression_statement "uVar3 = uVar11;" (assignment_expression "uVar3 = uVar11" identifier = identifier) ;) }) while (parenthesized_expression "(uVar14 != uVar11)" ( (binary_expression "uVar14 != uVar11" identifier != identifier) )) ;) })) (expression_statement "*(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);" (assignment_expression "*(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18)" (pointer_expression "*(char *)piVar13[4]" * (cast_expression "(char *)piVar13[4]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar13[4]" identifier [ number_literal ]))) = (cast_expression "(char)(uVar14 + *piVar13 + -4 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar14 + *piVar13 + -4 >> 0x18)" ( (binary_expression "uVar14 + *piVar13 + -4 >> 0x18" (binary_expression "uVar14 + *piVar13 + -4" (binary_expression "uVar14 + *piVar13" identifier + (pointer_expression "*piVar13" * identifier)) + number_literal) >> number_literal) )))) ;) (expression_statement "*(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);" (assignment_expression "*(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10)" (pointer_expression "*(char *)(piVar13[4] + 1)" * (cast_expression "(char *)(piVar13[4] + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar13[4] + 1)" ( (binary_expression "piVar13[4] + 1" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)(uVar14 + *piVar13 + -4 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar14 + *piVar13 + -4 >> 0x10)" ( (binary_expression "uVar14 + *piVar13 + -4 >> 0x10" (binary_expression "uVar14 + *piVar13 + -4" (binary_expression "uVar14 + *piVar13" identifier + (pointer_expression "*piVar13" * identifier)) + number_literal) >> number_literal) )))) ;) (expression_statement "*(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);" (assignment_expression "*(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8)" (pointer_expression "*(char *)(piVar13[4] + 2)" * (cast_expression "(char *)(piVar13[4] + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar13[4] + 2)" ( (binary_expression "piVar13[4] + 2" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)(uVar14 + *piVar13 + -4 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar14 + *piVar13 + -4 >> 8)" ( (binary_expression "uVar14 + *piVar13 + -4 >> 8" (binary_expression "uVar14 + *piVar13 + -4" (binary_expression "uVar14 + *piVar13" identifier + (pointer_expression "*piVar13" * identifier)) + number_literal) >> number_literal) )))) ;) (expression_statement "piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);" (assignment_expression "piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4)" identifier = (cast_expression "(int *)((uVar14 & 0xff) + *piVar13 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar14 & 0xff) + *piVar13 + -4)" ( (binary_expression "(uVar14 & 0xff) + *piVar13 + -4" (binary_expression "(uVar14 & 0xff) + *piVar13" (parenthesized_expression "(uVar14 & 0xff)" ( (binary_expression "uVar14 & 0xff" identifier & number_literal) )) + (pointer_expression "*piVar13" * identifier)) + number_literal) )))) ;) (expression_statement "*(char *)(piVar13[4] + 3) = (char)piVar17;" (assignment_expression "*(char *)(piVar13[4] + 3) = (char)piVar17" (pointer_expression "*(char *)(piVar13[4] + 3)" * (cast_expression "(char *)(piVar13[4] + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar13[4] + 3)" ( (binary_expression "piVar13[4] + 3" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)piVar17" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar10 = *(int *)(iVar1 + 0x60);" (assignment_expression "iVar10 = *(int *)(iVar1 + 0x60)" identifier = (pointer_expression "*(int *)(iVar1 + 0x60)" * (cast_expression "(int *)(iVar1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x60)" ( (binary_expression "iVar1 + 0x60" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }" { (expression_statement "iVar7 = *(int *)(iVar1 + 0x70);" (assignment_expression "iVar7 = *(int *)(iVar1 + 0x70)" identifier = (pointer_expression "*(int *)(iVar1 + 0x70)" * (cast_expression "(int *)(iVar1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x70)" ( (binary_expression "iVar1 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = piVar13[4];" (assignment_expression "iVar12 = piVar13[4]" identifier = (subscript_expression "piVar13[4]" identifier [ number_literal ])) ;) (if_statement "if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }" { (expression_statement "iVar9 = uVar14 + *piVar13;" (assignment_expression "iVar9 = uVar14 + *piVar13" identifier = (binary_expression "uVar14 + *piVar13" identifier + (pointer_expression "*piVar13" * identifier))) ;) (if_statement "if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;" if (parenthesized_expression "(*(int *)(iVar1 + 0x78) == 0)" ( (binary_expression "*(int *)(iVar1 + 0x78) == 0" (pointer_expression "*(int *)(iVar1 + 0x78)" * (cast_expression "(int *)(iVar1 + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x78)" ( (binary_expression "iVar1 + 0x78" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0004bfa4;" goto statement_identifier ;)) (labeled_statement "LAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);" statement_identifier : (expression_statement "pcVar21 = *(code **)(iVar7 + 0xc);" (assignment_expression "pcVar21 = *(code **)(iVar7 + 0xc)" identifier = (pointer_expression "*(code **)(iVar7 + 0xc)" * (cast_expression "(code **)(iVar7 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));" statement_identifier : (expression_statement "(*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));" (call_expression "(*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac))" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac))" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x80)" * (cast_expression "(undefined4 *)(iVar1 + 0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x80)" ( (binary_expression "iVar1 + 0x80" identifier + number_literal) )))) , identifier , identifier , (pointer_expression "*(undefined4 *)(iVar1 + 0x1ac)" * (cast_expression "(undefined4 *)(iVar1 + 0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1ac)" ( (binary_expression "iVar1 + 0x1ac" identifier + number_literal) )))) ))) ;)) (expression_statement "iVar12 = piVar13[4];" (assignment_expression "iVar12 = piVar13[4]" identifier = (subscript_expression "piVar13[4]" identifier [ number_literal ])) ;) })) }) (else_clause "else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }" else (compound_statement "{\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }" { (expression_statement "iVar12 = piVar13[4];" (assignment_expression "iVar12 = piVar13[4]" identifier = (subscript_expression "piVar13[4]" identifier [ number_literal ])) ;) (if_statement "if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }" if (parenthesized_expression "((*(uint *)(iVar10 + 0x30) & 2) == 0)" ( (binary_expression "(*(uint *)(iVar10 + 0x30) & 2) == 0" (parenthesized_expression "(*(uint *)(iVar10 + 0x30) & 2)" ( (binary_expression "*(uint *)(iVar10 + 0x30) & 2" (pointer_expression "*(uint *)(iVar10 + 0x30)" * (cast_expression "(uint *)(iVar10 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x30)" ( (binary_expression "iVar10 + 0x30" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }" { (expression_statement "iVar7 = *(int *)(iVar1 + 0x70);" (assignment_expression "iVar7 = *(int *)(iVar1 + 0x70)" identifier = (pointer_expression "*(int *)(iVar1 + 0x70)" * (cast_expression "(int *)(iVar1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x70)" ( (binary_expression "iVar1 + 0x70" identifier + number_literal) ))))) ;) (if_statement "if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }" { (expression_statement "iVar9 = uVar14 + *piVar13;" (assignment_expression "iVar9 = uVar14 + *piVar13" identifier = (binary_expression "uVar14 + *piVar13" identifier + (pointer_expression "*piVar13" * identifier))) ;) (if_statement "if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }" if (parenthesized_expression "(*(int *)(iVar1 + 0x78) != 0)" ( (binary_expression "*(int *)(iVar1 + 0x78) != 0" (pointer_expression "*(int *)(iVar1 + 0x78)" * (cast_expression "(int *)(iVar1 + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x78)" ( (binary_expression "iVar1 + 0x78" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }" { (labeled_statement "LAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);" statement_identifier : (expression_statement "(**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);" (call_expression "(**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4)" (parenthesized_expression "(**(code **)(iVar10 + 0x10))" ( (pointer_expression "**(code **)(iVar10 + 0x10)" * (pointer_expression "*(code **)(iVar10 + 0x10)" * (cast_expression "(code **)(iVar10 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + 0x10)" ( (binary_expression "iVar10 + 0x10" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4)" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x68)" * (cast_expression "(undefined4 *)(iVar1 + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x68)" ( (binary_expression "iVar1 + 0x68" identifier + number_literal) )))) , (binary_expression "iVar12 + 4" identifier + number_literal) , (binary_expression "iVar9 + -4" identifier + number_literal) ))) ;)) (expression_statement "iVar12 = piVar13[4];" (assignment_expression "iVar12 = piVar13[4]" identifier = (subscript_expression "piVar13[4]" identifier [ number_literal ])) ;) (expression_statement "iVar7 = *(int *)(iVar1 + 0x70);" (assignment_expression "iVar7 = *(int *)(iVar1 + 0x70)" identifier = (pointer_expression "*(int *)(iVar1 + 0x70)" * (cast_expression "(int *)(iVar1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x70)" ( (binary_expression "iVar1 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = uVar14 + *piVar13;" (assignment_expression "iVar9 = uVar14 + *piVar13" identifier = (binary_expression "uVar14 + *piVar13" identifier + (pointer_expression "*piVar13" * identifier))) ;) (goto_statement "goto LAB_0004c100;" goto statement_identifier ;) })) (goto_statement "goto LAB_0004bfa4;" goto statement_identifier ;) })) }) (else_clause "else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }" else (compound_statement "{\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }" { (expression_statement "(**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));" (call_expression "(**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac))" (parenthesized_expression "(**(code **)(iVar10 + 0x18))" ( (pointer_expression "**(code **)(iVar10 + 0x18)" * (pointer_expression "*(code **)(iVar10 + 0x18)" * (cast_expression "(code **)(iVar10 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + 0x18)" ( (binary_expression "iVar10 + 0x18" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac))" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x68)" * (cast_expression "(undefined4 *)(iVar1 + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x68)" ( (binary_expression "iVar1 + 0x68" identifier + number_literal) )))) , identifier , number_literal , (pointer_expression "*(undefined4 *)(iVar1 + 0x1ac)" * (cast_expression "(undefined4 *)(iVar1 + 0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1ac)" ( (binary_expression "iVar1 + 0x1ac" identifier + number_literal) )))) ))) ;) (expression_statement "iVar7 = *(int *)(iVar1 + 0x70);" (assignment_expression "iVar7 = *(int *)(iVar1 + 0x70)" identifier = (pointer_expression "*(int *)(iVar1 + 0x70)" * (cast_expression "(int *)(iVar1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x70)" ( (binary_expression "iVar1 + 0x70" identifier + number_literal) ))))) ;) (if_statement "if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }" { (expression_statement "iVar12 = piVar13[4];" (assignment_expression "iVar12 = piVar13[4]" identifier = (subscript_expression "piVar13[4]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = uVar14 + *piVar13;" (assignment_expression "iVar9 = uVar14 + *piVar13" identifier = (binary_expression "uVar14 + *piVar13" identifier + (pointer_expression "*piVar13" * identifier))) ;) (if_statement "if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }" if (parenthesized_expression "(*(int *)(iVar1 + 0x78) != 0)" ( (binary_expression "*(int *)(iVar1 + 0x78) != 0" (pointer_expression "*(int *)(iVar1 + 0x78)" * (cast_expression "(int *)(iVar1 + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x78)" ( (binary_expression "iVar1 + 0x78" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }" { (expression_statement "iVar10 = *(int *)(iVar1 + 0x60);" (assignment_expression "iVar10 = *(int *)(iVar1 + 0x60)" identifier = (pointer_expression "*(int *)(iVar1 + 0x60)" * (cast_expression "(int *)(iVar1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x60)" ( (binary_expression "iVar1 + 0x60" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 != 0) goto LAB_0004c0dc;" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004c0dc;" goto statement_identifier ;)) (expression_statement "pcVar21 = *(code **)(iVar7 + 0xc);" (assignment_expression "pcVar21 = *(code **)(iVar7 + 0xc)" identifier = (pointer_expression "*(code **)(iVar7 + 0xc)" * (cast_expression "(code **)(iVar7 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0004c104;" goto statement_identifier ;) })) (labeled_statement "LAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));" statement_identifier : (expression_statement "(**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));" (call_expression "(**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac))" (parenthesized_expression "(**(code **)(iVar7 + 0xc))" ( (pointer_expression "**(code **)(iVar7 + 0xc)" * (pointer_expression "*(code **)(iVar7 + 0xc)" * (cast_expression "(code **)(iVar7 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac))" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x80)" * (cast_expression "(undefined4 *)(iVar1 + 0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x80)" ( (binary_expression "iVar1 + 0x80" identifier + number_literal) )))) , identifier , identifier , (pointer_expression "*(undefined4 *)(iVar1 + 0x1ac)" * (cast_expression "(undefined4 *)(iVar1 + 0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1ac)" ( (binary_expression "iVar1 + 0x1ac" identifier + number_literal) )))) ))) ;)) })) (expression_statement "iVar10 = *(int *)(iVar1 + 0x60);" (assignment_expression "iVar10 = *(int *)(iVar1 + 0x60)" identifier = (pointer_expression "*(int *)(iVar1 + 0x60)" * (cast_expression "(int *)(iVar1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x60)" ( (binary_expression "iVar1 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = piVar13[4];" (assignment_expression "iVar12 = piVar13[4]" identifier = (subscript_expression "piVar13[4]" identifier [ number_literal ])) ;) (if_statement "if (iVar10 == 0) goto LAB_0004bfe0;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004bfe0;" goto statement_identifier ;)) }))) (expression_statement "(**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);" (call_expression "(**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13)" (parenthesized_expression "(**(code **)(iVar10 + 0x10))" ( (pointer_expression "**(code **)(iVar10 + 0x10)" * (pointer_expression "*(code **)(iVar10 + 0x10)" * (cast_expression "(code **)(iVar10 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + 0x10)" ( (binary_expression "iVar10 + 0x10" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13)" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x68)" * (cast_expression "(undefined4 *)(iVar1 + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x68)" ( (binary_expression "iVar1 + 0x68" identifier + number_literal) )))) , identifier , (binary_expression "uVar14 + *piVar13" identifier + (pointer_expression "*piVar13" * identifier)) ))) ;) (expression_statement "iVar12 = piVar13[4];" (assignment_expression "iVar12 = piVar13[4]" identifier = (subscript_expression "piVar13[4]" identifier [ number_literal ])) ;) }))) (labeled_statement "LAB_0004bfe0:\n      iVar7 = *piVar13;" statement_identifier : (expression_statement "iVar7 = *piVar13;" (assignment_expression "iVar7 = *piVar13" identifier = (pointer_expression "*piVar13" * identifier)) ;)) (expression_statement "iVar10 = uVar14 + iVar7 + (int)piVar15;" (assignment_expression "iVar10 = uVar14 + iVar7 + (int)piVar15" identifier = (binary_expression "uVar14 + iVar7 + (int)piVar15" (binary_expression "uVar14 + iVar7" identifier + identifier) + (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;" (assignment_expression "*(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1" (pointer_expression "*(int *)(iVar1 + 0x1ac)" * (cast_expression "(int *)(iVar1 + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1ac)" ( (binary_expression "iVar1 + 0x1ac" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar1 + 0x1ac) + 1" (pointer_expression "*(int *)(iVar1 + 0x1ac)" * (cast_expression "(int *)(iVar1 + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1ac)" ( (binary_expression "iVar1 + 0x1ac" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "piVar13[8] = uVar14 + iVar7;" (assignment_expression "piVar13[8] = uVar14 + iVar7" (subscript_expression "piVar13[8]" identifier [ number_literal ]) = (binary_expression "uVar14 + iVar7" identifier + identifier)) ;) (expression_statement "piVar13[5] = iVar12;" (assignment_expression "piVar13[5] = iVar12" (subscript_expression "piVar13[5]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }" else (compound_statement "{\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }" { (expression_statement "*(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);" (assignment_expression "*(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18)" (pointer_expression "*(char *)(piVar13[4] + 1)" * (cast_expression "(char *)(piVar13[4] + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar13[4] + 1)" ( (binary_expression "piVar13[4] + 1" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)((uint)(iVar7 + -5) >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)(iVar7 + -5) >> 0x18)" ( (binary_expression "(uint)(iVar7 + -5) >> 0x18" (call_expression "(uint)(iVar7 + -5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar7 + -5)" ( (binary_expression "iVar7 + -5" identifier + number_literal) ))) >> number_literal) )))) ;) (expression_statement "*(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);" (assignment_expression "*(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10)" (pointer_expression "*(char *)(piVar13[4] + 2)" * (cast_expression "(char *)(piVar13[4] + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar13[4] + 2)" ( (binary_expression "piVar13[4] + 2" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)((uint)(*piVar13 + -5) >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)(*piVar13 + -5) >> 0x10)" ( (binary_expression "(uint)(*piVar13 + -5) >> 0x10" (call_expression "(uint)(*piVar13 + -5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*piVar13 + -5)" ( (binary_expression "*piVar13 + -5" (pointer_expression "*piVar13" * identifier) + number_literal) ))) >> number_literal) )))) ;) (expression_statement "*(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);" (assignment_expression "*(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8)" (pointer_expression "*(char *)(piVar13[4] + 3)" * (cast_expression "(char *)(piVar13[4] + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar13[4] + 3)" ( (binary_expression "piVar13[4] + 3" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)((uint)(*piVar13 + -5) >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)(*piVar13 + -5) >> 8)" ( (binary_expression "(uint)(*piVar13 + -5) >> 8" (call_expression "(uint)(*piVar13 + -5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*piVar13 + -5)" ( (binary_expression "*piVar13 + -5" (pointer_expression "*piVar13" * identifier) + number_literal) ))) >> number_literal) )))) ;) (expression_statement "*(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;" (assignment_expression "*(char *)(piVar13[4] + 4) = (char)*piVar13 + -5" (pointer_expression "*(char *)(piVar13[4] + 4)" * (cast_expression "(char *)(piVar13[4] + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar13[4] + 4)" ( (binary_expression "piVar13[4] + 4" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + number_literal) )))) = (binary_expression "(char)*piVar13 + -5" (cast_expression "(char)*piVar13" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*piVar13" * identifier)) + number_literal)) ;) (expression_statement "iVar7 = *(int *)(iVar1 + 0x1ac);" (assignment_expression "iVar7 = *(int *)(iVar1 + 0x1ac)" identifier = (pointer_expression "*(int *)(iVar1 + 0x1ac)" * (cast_expression "(int *)(iVar1 + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1ac)" ( (binary_expression "iVar1 + 0x1ac" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = *piVar13 + -1;" (assignment_expression "iVar10 = *piVar13 + -1" identifier = (binary_expression "*piVar13 + -1" (pointer_expression "*piVar13" * identifier) + number_literal)) ;) (expression_statement "piVar13[5] = piVar13[4] + 1;" (assignment_expression "piVar13[5] = piVar13[4] + 1" (subscript_expression "piVar13[5]" identifier [ number_literal ]) = (binary_expression "piVar13[4] + 1" (subscript_expression "piVar13[4]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "*(int *)(iVar1 + 0x1ac) = iVar7 + 1;" (assignment_expression "*(int *)(iVar1 + 0x1ac) = iVar7 + 1" (pointer_expression "*(int *)(iVar1 + 0x1ac)" * (cast_expression "(int *)(iVar1 + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1ac)" ( (binary_expression "iVar1 + 0x1ac" identifier + number_literal) )))) = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) }))) (if_statement "if (iStack_124 == *piVar16) {\n      return iVar10;\n    }" if (parenthesized_expression "(iStack_124 == *piVar16)" ( (binary_expression "iStack_124 == *piVar16" identifier == (pointer_expression "*piVar16" * identifier)) )) (compound_statement "{\n      return iVar10;\n    }" { (return_statement "return iVar10;" return identifier ;) })) (expression_statement "iVar10 = iStack_124;" (assignment_expression "iVar10 = iStack_124" identifier = identifier) ;) (expression_statement "(**(code **)(pcVar20 + 0xc6674))();" (call_expression "(**(code **)(pcVar20 + 0xc6674))()" (parenthesized_expression "(**(code **)(pcVar20 + 0xc6674))" ( (pointer_expression "**(code **)(pcVar20 + 0xc6674)" * (pointer_expression "*(code **)(pcVar20 + 0xc6674)" * (cast_expression "(code **)(pcVar20 + 0xc6674)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + 0xc6674)" ( (binary_expression "pcVar20 + 0xc6674" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_0004c510:\n    piVar13[6] = iVar10;" statement_identifier : (expression_statement "piVar13[6] = iVar10;" (assignment_expression "piVar13[6] = iVar10" (subscript_expression "piVar13[6]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "piVar18 = piVar15;" (assignment_expression "piVar18 = piVar15" identifier = identifier) ;) (labeled_statement "LAB_0004c1fc:\n    FUN_00047b74(piVar13,piVar18,piVar17);" statement_identifier : (expression_statement "FUN_00047b74(piVar13,piVar18,piVar17);" (call_expression "FUN_00047b74(piVar13,piVar18,piVar17)" identifier (argument_list "(piVar13,piVar18,piVar17)" ( identifier , identifier , identifier ))) ;)) (expression_statement "iVar10 = piVar13[6];" (assignment_expression "iVar10 = piVar13[6]" identifier = (subscript_expression "piVar13[6]" identifier [ number_literal ])) ;) (expression_statement "piVar15 = aiStack_120 + uVar3 * 3;" (assignment_expression "piVar15 = aiStack_120 + uVar3 * 3" identifier = (binary_expression "aiStack_120 + uVar3 * 3" identifier + (binary_expression "uVar3 * 3" identifier * number_literal))) ;) (expression_statement "aiStack_154[uVar3 * 3 + 2] = 1;" (assignment_expression "aiStack_154[uVar3 * 3 + 2] = 1" (subscript_expression "aiStack_154[uVar3 * 3 + 2]" identifier [ (binary_expression "uVar3 * 3 + 2" (binary_expression "uVar3 * 3" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "aiStack_154[uVar3 * 3] = iVar10;" (assignment_expression "aiStack_154[uVar3 * 3] = iVar10" (subscript_expression "aiStack_154[uVar3 * 3]" identifier [ (binary_expression "uVar3 * 3" identifier * number_literal) ]) = identifier) ;) (expression_statement "FUN_00047b74(piVar13,piVar18,piVar17);" (call_expression "FUN_00047b74(piVar13,piVar18,piVar17)" identifier (argument_list "(piVar13,piVar18,piVar17)" ( identifier , identifier , identifier ))) ;) (if_statement "if (iStack_15c != 0) {\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }" if (parenthesized_expression "(iStack_15c != 0)" ( (binary_expression "iStack_15c != 0" identifier != number_literal) )) (compound_statement "{\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }" { (expression_statement "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];" (assignment_expression "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3]" (subscript_expression "aiStack_154[uVar3 * 3 + 1]" identifier [ (binary_expression "uVar3 * 3 + 1" (binary_expression "uVar3 * 3" identifier * number_literal) + number_literal) ]) = (binary_expression "piVar13[6] - aiStack_154[uVar3 * 3]" (subscript_expression "piVar13[6]" identifier [ number_literal ]) - (subscript_expression "aiStack_154[uVar3 * 3]" identifier [ (binary_expression "uVar3 * 3" identifier * number_literal) ]))) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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 (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (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 (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return (pointer_expression * 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 (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , LIT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , LIT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = LIT) ;) }))) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) )) + (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) , (binary_expression IDENT + LIT) , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) | LIT) )) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) , (binary_expression IDENT + LIT) )))) ;) (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 (subscript_expression IDENT [ LIT ]) + IDENT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return (binary_expression IDENT + LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * 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 IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (binary_expression IDENT - LIT) < LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression (pointer_expression * IDENT) - IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) ]))) ;) })) })) })) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = LIT) ;) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , IDENT ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) - IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) - IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) )) + (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) , (binary_expression IDENT + LIT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (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 = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + LIT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) % IDENT)) )) % IDENT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * IDENT)) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + (pointer_expression * IDENT)) + LIT) >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + (pointer_expression * IDENT)) + LIT) >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + (pointer_expression * IDENT)) + LIT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + (pointer_expression * IDENT)) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) ))) ;)) (expression_statement (assignment_expression IDENT = (subscript_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 = (binary_expression IDENT + (pointer_expression * IDENT))) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , LIT , (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , 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 = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , (binary_expression IDENT + (pointer_expression * IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + 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) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) + LIT) ))) >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) + LIT) ))) >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]))) ;) })) }) while (parenthesized_expression ( BOOL )) ;)) })))
(function_definition "int FUN_0004b63c(int *param_1,int param_2)\n\n{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined1 uVar5;\n  undefined4 uVar4;\n  undefined4 extraout_v1;\n  undefined1 *puVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int iVar12;\n  int *piVar13;\n  uint uVar14;\n  int *piVar15;\n  int *piVar16;\n  int *piVar17;\n  int *piVar18;\n  undefined *puVar19;\n  code *pcVar20;\n  code *pcVar21;\n  int iStack_15c;\n  int iStack_158;\n  int aiStack_154 [12];\n  int iStack_124;\n  int aiStack_120 [4];\n  undefined4 uStack_110;\n  int iStack_10c;\n  int *piStack_108;\n  int *piStack_104;\n  uint *puStack_100;\n  code *pcStack_fc;\n  int *piStack_e8;\n  undefined4 uStack_e4;\n  int iStack_e0;\n  int *piStack_dc;\n  undefined4 uStack_d8;\n  undefined4 uStack_d4;\n  undefined4 uStack_d0;\n  code *pcStack_c8;\n  int iStack_bc;\n  int iStack_b8;\n  int aiStack_b4 [12];\n  int iStack_84;\n  int *piStack_80;\n  int *piStack_7c;\n  int *piStack_78;\n  int local_10;\n  int local_c;\n  \n  puVar19 = PTR___stack_chk_guard_00112630;\n  piVar15 = &local_10;\n  local_c = *(int *)PTR___stack_chk_guard_00112630;\n  local_10 = param_2;\n  FUN_0004b364(param_1,piVar15,4);\n  if (local_c == *(int *)puVar19) {\n    return *(int *)puVar19;\n  }\n  puVar19 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  piVar13 = *(int **)(puVar19 + 0xc6f84);\n  iVar1 = *piVar13;\n  FUN_0004b364();\n  pcVar20 = *(code **)(puVar19 + 0xc6e88);\n  param_1[6] = *param_1;\n  puVar2 = (uint *)(*pcVar20)(piVar15);\n  piVar17 = param_1;\n  piVar16 = piVar15;\n  FUN_0004b594();\n  if (iVar1 == *piVar13) {\n    return *piVar13;\n  }\n  pcVar21 = *(code **)(puVar19 + 0xc6c1c);\n  (*pcVar21)();\n  pcVar20 = pcVar21 + 0xcdb48;\n  piVar18 = *(int **)(pcVar21 + 0xc6ec8);\n  iStack_84 = *piVar18;\n  iVar1 = *piVar16;\n  pcStack_c8 = pcVar20;\n  piStack_80 = param_1;\n  piStack_7c = piVar13;\n  piStack_78 = piVar15;\n  if (piVar17[6] != 0) {\n    iVar10 = piVar17[0x93];\n    uVar3 = piVar16[2];\n    piVar16[6] = 0;\n    *piVar16 = iVar1 - (piVar16[5] - piVar16[4]);\n    if (iVar10 == 0) {\nLAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);\n      if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;\nLAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }\n      pcVar20 = *(code **)(pcVar20 + -0x7efc);\n      iVar1 = iVar10;\njoined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }\n    }\n    else {\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }\n    FUN_00049aac(*(undefined1 *)(piVar16[4] + 0xc));\n    piStack_e8 = (int *)piVar16[5];\n    piStack_dc = aiStack_b4;\n    uStack_d0 = 0;\n    uStack_d4 = 0;\n    uStack_d8 = 0;\n    uStack_e4 = extraout_v1;\n    iStack_e0 = iVar1;\n    log_packet(piVar17[6],1);\n    pcVar20 = pcStack_c8;\n    iVar1 = (piVar16[5] - piVar16[4]) + *piVar16;\n    *piVar16 = iVar1;\n  }\n  if (piVar17[0xf] != 0) {\n    piStack_e8 = &iStack_b8;\n    (**(code **)(pcVar20 + -0x7af0))(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc);\n    if (piVar16[7] < iStack_b8 + 2) {\n      FUN_0004b2d8(piVar16);\n    }\n    (**(code **)(pcStack_c8 + -0x6d44))(piVar16[4] + 0xc,iStack_bc,iStack_b8);\n    safefree(iStack_bc);\n    pcVar20 = pcStack_c8;\n    iVar1 = iStack_b8 + 0xc;\n    *piVar16 = iVar1;\n  }\n  iVar10 = iVar1 + 4;\n  if (piVar16[7] < iVar10) {\n    FUN_0004b2d8(piVar16);\n    iVar1 = *piVar16;\n    iVar10 = iVar1 + 4;\n    pcVar20 = pcStack_c8;\n  }\n  uVar14 = iVar1 - 8;\n  uVar3 = uVar14 & 0x80000007;\n  *piVar16 = iVar10;\n  if ((int)uVar3 < 0) {\n    uVar3 = (uVar3 - 1 | 0xfffffff8) + 1;\n  }\n  iVar1 = uVar14 - uVar3;\n  piVar15 = (int *)0xc;\n  iVar10 = iVar1 + 8;\n  uVar11 = uVar3;\n  do {\n    uVar5 = (**(code **)(pcVar20 + -0x7af8))();\n    puVar6 = (undefined1 *)(piVar16[4] + uVar11);\n    uVar11 = uVar11 + 1;\n    *puVar6 = uVar5;\n    pcVar20 = pcStack_c8;\n  } while (uVar11 != 0xc);\n  iVar12 = uVar3 + 4;\n  uVar4 = (**(code **)(pcStack_c8 + -0x7af4))(piVar16[4] + iVar12,iVar1 + 4);\n  iVar7 = iVar10 + uVar3;\n  *(char *)(piVar16[4] + iVar7) = (char)((uint)uVar4 >> 0x18);\n  piVar13 = (int *)((int)uVar14 >> 8);\n  *(char *)(piVar16[4] + iVar7 + 1) = (char)((uint)uVar4 >> 0x10);\n  *(char *)(piVar16[4] + iVar7 + 2) = (char)((uint)uVar4 >> 8);\n  *(char *)(piVar16[4] + iVar7 + 3) = (char)uVar4;\n  *(char *)(piVar16[4] + uVar3) = (char)(uVar14 >> 0x18);\n  *(char *)(piVar16[4] + uVar3 + 1) = (char)(uVar14 >> 0x10);\n  *(char *)(piVar16[4] + uVar3 + 2) = (char)(uVar14 >> 8);\n  *(char *)(piVar16[4] + uVar3 + 3) = (char)uVar14;\n  if (piVar17[0x15] != 0) {\n    piVar13 = (int *)(piVar16[4] + iVar12);\n    (**(code **)(piVar17[0x15] + 0xc))(piVar17[0x16],piVar13,iVar10);\n  }\n  iVar7 = *piVar18;\n  *puVar2 = uVar3;\n  if (iStack_84 == iVar7) {\n    return iVar1 + 0xc;\n  }\n  pcVar20 = *(code **)(pcStack_c8 + -0x6fe8);\n  pcVar21 = FUN_0004bc54;\n  iVar1 = iStack_84;\n  (*pcVar20)();\n  iVar7 = *piVar13;\n  piVar16 = *(int **)(pcVar20 + 0xc69dc);\n  uStack_110 = 0xc;\n  iStack_124 = *piVar16;\n  aiStack_120[1] = iVar12;\n  aiStack_120[2] = uVar3;\n  aiStack_120[3] = uVar14;\n  iStack_10c = iVar10;\n  piStack_108 = piVar17;\n  piStack_104 = piVar18;\n  puStack_100 = puVar2;\n  pcStack_fc = pcVar21;\n  if (*(int *)(iVar1 + 0x18) == 0) goto LAB_0004bd94;\n  uVar3 = *(uint *)(iVar1 + 0x24c);\n  iVar10 = piVar13[2];\n  piVar13[6] = 0;\n  *piVar13 = iVar7 - (piVar13[5] - piVar13[4]);\n  if ((uVar3 != 0) && (uVar3 = 0, iVar10 - 0x5eU < 2)) {\n    FUN_00047058(piVar13);\n    if (piVar13[2] == 0x5f) {\n      FUN_00047058();\n    }\n    aiStack_154[2] = 2;\n    aiStack_154[0] = piVar13[6] + 4;\n    FUN_00047b74(piVar13,&iStack_15c,&iStack_158);\n    if (iStack_15c == 0) {\n      iVar10 = piVar13[2];\n      uVar3 = 0;\n    }\n    else {\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }\n  }\n  if (iVar10 == 0x32) {\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar17 = &iStack_158;\n      piVar15 = &iStack_15c;\n      piVar13[6] = 0;\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }\n  if ((*(int *)(iVar1 + 0x188) == 4) && (iVar10 == 0x3d)) {\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar13[6] = 0;\n      piVar17 = &iStack_158;\n      FUN_00047058(piVar13);\n      aiStack_154[uVar3 * 3] = piVar13[6];\n      aiStack_154[uVar3 * 3 + 2] = 1;\n      do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n      piVar15 = &iStack_15c;\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }\n  if ((iVar10 == 0x62) &&\n     (iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0))\n  {\n    piVar13[6] = 0;\n    piVar17 = &iStack_158;\n    piVar15 = &iStack_15c;\n    FUN_00047058(piVar13);\n    FUN_00047b74();\n    if (iStack_158 == 7) {\n      iVar7 = piVar13[6];\n      iVar10 = iVar7 + 1;\n      piVar18 = piVar15;\n      if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;\n      if (*piVar13 - iVar10 < 1) goto LAB_0004c510;\n      piVar13[6] = iVar7 + 2;\n      goto LAB_0004c1fc;\n    }\n  }\nLAB_0004bd10:\n  do {\n    FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5));\n    log_packet(*(undefined4 *)(iVar1 + 0x18),1);\n    iVar7 = (piVar13[5] - piVar13[4]) + *piVar13;\n    *piVar13 = iVar7;\nLAB_0004bd94:\n    uVar3 = *(uint *)(iVar1 + 0xec);\n    if (uVar3 == 0) {\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }\n    else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }\n    if (iStack_124 == *piVar16) {\n      return iVar10;\n    }\n    iVar10 = iStack_124;\n    (**(code **)(pcVar20 + 0xc6674))();\nLAB_0004c510:\n    piVar13[6] = iVar10;\n    piVar18 = piVar15;\nLAB_0004c1fc:\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    iVar10 = piVar13[6];\n    piVar15 = aiStack_120 + uVar3 * 3;\n    aiStack_154[uVar3 * 3 + 2] = 1;\n    aiStack_154[uVar3 * 3] = iVar10;\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    if (iStack_15c != 0) {\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }\n  } while( true );\n}" (primitive_type "int") (function_declarator "FUN_0004b63c(int *param_1,int param_2)" (identifier "FUN_0004b63c") (parameter_list "(int *param_1,int param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined1 uVar5;\n  undefined4 uVar4;\n  undefined4 extraout_v1;\n  undefined1 *puVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int iVar12;\n  int *piVar13;\n  uint uVar14;\n  int *piVar15;\n  int *piVar16;\n  int *piVar17;\n  int *piVar18;\n  undefined *puVar19;\n  code *pcVar20;\n  code *pcVar21;\n  int iStack_15c;\n  int iStack_158;\n  int aiStack_154 [12];\n  int iStack_124;\n  int aiStack_120 [4];\n  undefined4 uStack_110;\n  int iStack_10c;\n  int *piStack_108;\n  int *piStack_104;\n  uint *puStack_100;\n  code *pcStack_fc;\n  int *piStack_e8;\n  undefined4 uStack_e4;\n  int iStack_e0;\n  int *piStack_dc;\n  undefined4 uStack_d8;\n  undefined4 uStack_d4;\n  undefined4 uStack_d0;\n  code *pcStack_c8;\n  int iStack_bc;\n  int iStack_b8;\n  int aiStack_b4 [12];\n  int iStack_84;\n  int *piStack_80;\n  int *piStack_7c;\n  int *piStack_78;\n  int local_10;\n  int local_c;\n  \n  puVar19 = PTR___stack_chk_guard_00112630;\n  piVar15 = &local_10;\n  local_c = *(int *)PTR___stack_chk_guard_00112630;\n  local_10 = param_2;\n  FUN_0004b364(param_1,piVar15,4);\n  if (local_c == *(int *)puVar19) {\n    return *(int *)puVar19;\n  }\n  puVar19 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  piVar13 = *(int **)(puVar19 + 0xc6f84);\n  iVar1 = *piVar13;\n  FUN_0004b364();\n  pcVar20 = *(code **)(puVar19 + 0xc6e88);\n  param_1[6] = *param_1;\n  puVar2 = (uint *)(*pcVar20)(piVar15);\n  piVar17 = param_1;\n  piVar16 = piVar15;\n  FUN_0004b594();\n  if (iVar1 == *piVar13) {\n    return *piVar13;\n  }\n  pcVar21 = *(code **)(puVar19 + 0xc6c1c);\n  (*pcVar21)();\n  pcVar20 = pcVar21 + 0xcdb48;\n  piVar18 = *(int **)(pcVar21 + 0xc6ec8);\n  iStack_84 = *piVar18;\n  iVar1 = *piVar16;\n  pcStack_c8 = pcVar20;\n  piStack_80 = param_1;\n  piStack_7c = piVar13;\n  piStack_78 = piVar15;\n  if (piVar17[6] != 0) {\n    iVar10 = piVar17[0x93];\n    uVar3 = piVar16[2];\n    piVar16[6] = 0;\n    *piVar16 = iVar1 - (piVar16[5] - piVar16[4]);\n    if (iVar10 == 0) {\nLAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);\n      if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;\nLAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }\n      pcVar20 = *(code **)(pcVar20 + -0x7efc);\n      iVar1 = iVar10;\njoined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }\n    }\n    else {\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }\n    FUN_00049aac(*(undefined1 *)(piVar16[4] + 0xc));\n    piStack_e8 = (int *)piVar16[5];\n    piStack_dc = aiStack_b4;\n    uStack_d0 = 0;\n    uStack_d4 = 0;\n    uStack_d8 = 0;\n    uStack_e4 = extraout_v1;\n    iStack_e0 = iVar1;\n    log_packet(piVar17[6],1);\n    pcVar20 = pcStack_c8;\n    iVar1 = (piVar16[5] - piVar16[4]) + *piVar16;\n    *piVar16 = iVar1;\n  }\n  if (piVar17[0xf] != 0) {\n    piStack_e8 = &iStack_b8;\n    (**(code **)(pcVar20 + -0x7af0))(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc);\n    if (piVar16[7] < iStack_b8 + 2) {\n      FUN_0004b2d8(piVar16);\n    }\n    (**(code **)(pcStack_c8 + -0x6d44))(piVar16[4] + 0xc,iStack_bc,iStack_b8);\n    safefree(iStack_bc);\n    pcVar20 = pcStack_c8;\n    iVar1 = iStack_b8 + 0xc;\n    *piVar16 = iVar1;\n  }\n  iVar10 = iVar1 + 4;\n  if (piVar16[7] < iVar10) {\n    FUN_0004b2d8(piVar16);\n    iVar1 = *piVar16;\n    iVar10 = iVar1 + 4;\n    pcVar20 = pcStack_c8;\n  }\n  uVar14 = iVar1 - 8;\n  uVar3 = uVar14 & 0x80000007;\n  *piVar16 = iVar10;\n  if ((int)uVar3 < 0) {\n    uVar3 = (uVar3 - 1 | 0xfffffff8) + 1;\n  }\n  iVar1 = uVar14 - uVar3;\n  piVar15 = (int *)0xc;\n  iVar10 = iVar1 + 8;\n  uVar11 = uVar3;\n  do {\n    uVar5 = (**(code **)(pcVar20 + -0x7af8))();\n    puVar6 = (undefined1 *)(piVar16[4] + uVar11);\n    uVar11 = uVar11 + 1;\n    *puVar6 = uVar5;\n    pcVar20 = pcStack_c8;\n  } while (uVar11 != 0xc);\n  iVar12 = uVar3 + 4;\n  uVar4 = (**(code **)(pcStack_c8 + -0x7af4))(piVar16[4] + iVar12,iVar1 + 4);\n  iVar7 = iVar10 + uVar3;\n  *(char *)(piVar16[4] + iVar7) = (char)((uint)uVar4 >> 0x18);\n  piVar13 = (int *)((int)uVar14 >> 8);\n  *(char *)(piVar16[4] + iVar7 + 1) = (char)((uint)uVar4 >> 0x10);\n  *(char *)(piVar16[4] + iVar7 + 2) = (char)((uint)uVar4 >> 8);\n  *(char *)(piVar16[4] + iVar7 + 3) = (char)uVar4;\n  *(char *)(piVar16[4] + uVar3) = (char)(uVar14 >> 0x18);\n  *(char *)(piVar16[4] + uVar3 + 1) = (char)(uVar14 >> 0x10);\n  *(char *)(piVar16[4] + uVar3 + 2) = (char)(uVar14 >> 8);\n  *(char *)(piVar16[4] + uVar3 + 3) = (char)uVar14;\n  if (piVar17[0x15] != 0) {\n    piVar13 = (int *)(piVar16[4] + iVar12);\n    (**(code **)(piVar17[0x15] + 0xc))(piVar17[0x16],piVar13,iVar10);\n  }\n  iVar7 = *piVar18;\n  *puVar2 = uVar3;\n  if (iStack_84 == iVar7) {\n    return iVar1 + 0xc;\n  }\n  pcVar20 = *(code **)(pcStack_c8 + -0x6fe8);\n  pcVar21 = FUN_0004bc54;\n  iVar1 = iStack_84;\n  (*pcVar20)();\n  iVar7 = *piVar13;\n  piVar16 = *(int **)(pcVar20 + 0xc69dc);\n  uStack_110 = 0xc;\n  iStack_124 = *piVar16;\n  aiStack_120[1] = iVar12;\n  aiStack_120[2] = uVar3;\n  aiStack_120[3] = uVar14;\n  iStack_10c = iVar10;\n  piStack_108 = piVar17;\n  piStack_104 = piVar18;\n  puStack_100 = puVar2;\n  pcStack_fc = pcVar21;\n  if (*(int *)(iVar1 + 0x18) == 0) goto LAB_0004bd94;\n  uVar3 = *(uint *)(iVar1 + 0x24c);\n  iVar10 = piVar13[2];\n  piVar13[6] = 0;\n  *piVar13 = iVar7 - (piVar13[5] - piVar13[4]);\n  if ((uVar3 != 0) && (uVar3 = 0, iVar10 - 0x5eU < 2)) {\n    FUN_00047058(piVar13);\n    if (piVar13[2] == 0x5f) {\n      FUN_00047058();\n    }\n    aiStack_154[2] = 2;\n    aiStack_154[0] = piVar13[6] + 4;\n    FUN_00047b74(piVar13,&iStack_15c,&iStack_158);\n    if (iStack_15c == 0) {\n      iVar10 = piVar13[2];\n      uVar3 = 0;\n    }\n    else {\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }\n  }\n  if (iVar10 == 0x32) {\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar17 = &iStack_158;\n      piVar15 = &iStack_15c;\n      piVar13[6] = 0;\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }\n  if ((*(int *)(iVar1 + 0x188) == 4) && (iVar10 == 0x3d)) {\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar13[6] = 0;\n      piVar17 = &iStack_158;\n      FUN_00047058(piVar13);\n      aiStack_154[uVar3 * 3] = piVar13[6];\n      aiStack_154[uVar3 * 3 + 2] = 1;\n      do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n      piVar15 = &iStack_15c;\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }\n  if ((iVar10 == 0x62) &&\n     (iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0))\n  {\n    piVar13[6] = 0;\n    piVar17 = &iStack_158;\n    piVar15 = &iStack_15c;\n    FUN_00047058(piVar13);\n    FUN_00047b74();\n    if (iStack_158 == 7) {\n      iVar7 = piVar13[6];\n      iVar10 = iVar7 + 1;\n      piVar18 = piVar15;\n      if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;\n      if (*piVar13 - iVar10 < 1) goto LAB_0004c510;\n      piVar13[6] = iVar7 + 2;\n      goto LAB_0004c1fc;\n    }\n  }\nLAB_0004bd10:\n  do {\n    FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5));\n    log_packet(*(undefined4 *)(iVar1 + 0x18),1);\n    iVar7 = (piVar13[5] - piVar13[4]) + *piVar13;\n    *piVar13 = iVar7;\nLAB_0004bd94:\n    uVar3 = *(uint *)(iVar1 + 0xec);\n    if (uVar3 == 0) {\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }\n    else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }\n    if (iStack_124 == *piVar16) {\n      return iVar10;\n    }\n    iVar10 = iStack_124;\n    (**(code **)(pcVar20 + 0xc6674))();\nLAB_0004c510:\n    piVar13[6] = iVar10;\n    piVar18 = piVar15;\nLAB_0004c1fc:\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    iVar10 = piVar13[6];\n    piVar15 = aiStack_120 + uVar3 * 3;\n    aiStack_154[uVar3 * 3 + 2] = 1;\n    aiStack_154[uVar3 * 3] = iVar10;\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    if (iStack_15c != 0) {\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }\n  } while( true );\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint *puVar2;" (type_identifier "uint") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "undefined1 uVar5;" (type_identifier "undefined1") (identifier "uVar5") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "undefined4 extraout_v1;" (type_identifier "undefined4") (identifier "extraout_v1") (; ";")) (declaration "undefined1 *puVar6;" (type_identifier "undefined1") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "int *piVar13;" (primitive_type "int") (pointer_declarator "*piVar13" (* "*") (identifier "piVar13")) (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "int *piVar15;" (primitive_type "int") (pointer_declarator "*piVar15" (* "*") (identifier "piVar15")) (; ";")) (declaration "int *piVar16;" (primitive_type "int") (pointer_declarator "*piVar16" (* "*") (identifier "piVar16")) (; ";")) (declaration "int *piVar17;" (primitive_type "int") (pointer_declarator "*piVar17" (* "*") (identifier "piVar17")) (; ";")) (declaration "int *piVar18;" (primitive_type "int") (pointer_declarator "*piVar18" (* "*") (identifier "piVar18")) (; ";")) (declaration "undefined *puVar19;" (type_identifier "undefined") (pointer_declarator "*puVar19" (* "*") (identifier "puVar19")) (; ";")) (declaration "code *pcVar20;" (type_identifier "code") (pointer_declarator "*pcVar20" (* "*") (identifier "pcVar20")) (; ";")) (declaration "code *pcVar21;" (type_identifier "code") (pointer_declarator "*pcVar21" (* "*") (identifier "pcVar21")) (; ";")) (declaration "int iStack_15c;" (primitive_type "int") (identifier "iStack_15c") (; ";")) (declaration "int iStack_158;" (primitive_type "int") (identifier "iStack_158") (; ";")) (declaration "int aiStack_154 [12];" (primitive_type "int") (array_declarator "aiStack_154 [12]" (identifier "aiStack_154") ([ "[") (number_literal "12") (] "]")) (; ";")) (declaration "int iStack_124;" (primitive_type "int") (identifier "iStack_124") (; ";")) (declaration "int aiStack_120 [4];" (primitive_type "int") (array_declarator "aiStack_120 [4]" (identifier "aiStack_120") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined4 uStack_110;" (type_identifier "undefined4") (identifier "uStack_110") (; ";")) (declaration "int iStack_10c;" (primitive_type "int") (identifier "iStack_10c") (; ";")) (declaration "int *piStack_108;" (primitive_type "int") (pointer_declarator "*piStack_108" (* "*") (identifier "piStack_108")) (; ";")) (declaration "int *piStack_104;" (primitive_type "int") (pointer_declarator "*piStack_104" (* "*") (identifier "piStack_104")) (; ";")) (declaration "uint *puStack_100;" (type_identifier "uint") (pointer_declarator "*puStack_100" (* "*") (identifier "puStack_100")) (; ";")) (declaration "code *pcStack_fc;" (type_identifier "code") (pointer_declarator "*pcStack_fc" (* "*") (identifier "pcStack_fc")) (; ";")) (declaration "int *piStack_e8;" (primitive_type "int") (pointer_declarator "*piStack_e8" (* "*") (identifier "piStack_e8")) (; ";")) (declaration "undefined4 uStack_e4;" (type_identifier "undefined4") (identifier "uStack_e4") (; ";")) (declaration "int iStack_e0;" (primitive_type "int") (identifier "iStack_e0") (; ";")) (declaration "int *piStack_dc;" (primitive_type "int") (pointer_declarator "*piStack_dc" (* "*") (identifier "piStack_dc")) (; ";")) (declaration "undefined4 uStack_d8;" (type_identifier "undefined4") (identifier "uStack_d8") (; ";")) (declaration "undefined4 uStack_d4;" (type_identifier "undefined4") (identifier "uStack_d4") (; ";")) (declaration "undefined4 uStack_d0;" (type_identifier "undefined4") (identifier "uStack_d0") (; ";")) (declaration "code *pcStack_c8;" (type_identifier "code") (pointer_declarator "*pcStack_c8" (* "*") (identifier "pcStack_c8")) (; ";")) (declaration "int iStack_bc;" (primitive_type "int") (identifier "iStack_bc") (; ";")) (declaration "int iStack_b8;" (primitive_type "int") (identifier "iStack_b8") (; ";")) (declaration "int aiStack_b4 [12];" (primitive_type "int") (array_declarator "aiStack_b4 [12]" (identifier "aiStack_b4") ([ "[") (number_literal "12") (] "]")) (; ";")) (declaration "int iStack_84;" (primitive_type "int") (identifier "iStack_84") (; ";")) (declaration "int *piStack_80;" (primitive_type "int") (pointer_declarator "*piStack_80" (* "*") (identifier "piStack_80")) (; ";")) (declaration "int *piStack_7c;" (primitive_type "int") (pointer_declarator "*piStack_7c" (* "*") (identifier "piStack_7c")) (; ";")) (declaration "int *piStack_78;" (primitive_type "int") (pointer_declarator "*piStack_78" (* "*") (identifier "piStack_78")) (; ";")) (declaration "int local_10;" (primitive_type "int") (identifier "local_10") (; ";")) (declaration "int local_c;" (primitive_type "int") (identifier "local_c") (; ";")) (expression_statement "puVar19 = PTR___stack_chk_guard_00112630;" (assignment_expression "puVar19 = PTR___stack_chk_guard_00112630" (identifier "puVar19") (= "=") (identifier "PTR___stack_chk_guard_00112630")) (; ";")) (expression_statement "piVar15 = &local_10;" (assignment_expression "piVar15 = &local_10" (identifier "piVar15") (= "=") (pointer_expression "&local_10" (& "&") (identifier "local_10"))) (; ";")) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_00112630;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_00112630" (identifier "local_c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_00112630" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_00112630" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00112630")))) (; ";")) (expression_statement "local_10 = param_2;" (assignment_expression "local_10 = param_2" (identifier "local_10") (= "=") (identifier "param_2")) (; ";")) (expression_statement "FUN_0004b364(param_1,piVar15,4);" (call_expression "FUN_0004b364(param_1,piVar15,4)" (identifier "FUN_0004b364") (argument_list "(param_1,piVar15,4)" (( "(") (identifier "param_1") (, ",") (identifier "piVar15") (, ",") (number_literal "4") () ")"))) (; ";")) (if_statement "if (local_c == *(int *)puVar19) {\n    return *(int *)puVar19;\n  }" (if "if") (parenthesized_expression "(local_c == *(int *)puVar19)" (( "(") (binary_expression "local_c == *(int *)puVar19" (identifier "local_c") (== "==") (pointer_expression "*(int *)puVar19" (* "*") (cast_expression "(int *)puVar19" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar19")))) () ")")) (compound_statement "{\n    return *(int *)puVar19;\n  }" ({ "{") (return_statement "return *(int *)puVar19;" (return "return") (pointer_expression "*(int *)puVar19" (* "*") (cast_expression "(int *)puVar19" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar19"))) (; ";")) (} "}"))) (expression_statement "puVar19 = PTR___stack_chk_fail_001122c8;" (assignment_expression "puVar19 = PTR___stack_chk_fail_001122c8" (identifier "puVar19") (= "=") (identifier "PTR___stack_chk_fail_001122c8")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_001122c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_001122c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_001122c8)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_001122c8" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_001122c8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_001122c8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar13 = *(int **)(puVar19 + 0xc6f84);" (assignment_expression "piVar13 = *(int **)(puVar19 + 0xc6f84)" (identifier "piVar13") (= "=") (pointer_expression "*(int **)(puVar19 + 0xc6f84)" (* "*") (cast_expression "(int **)(puVar19 + 0xc6f84)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar19 + 0xc6f84)" (( "(") (binary_expression "puVar19 + 0xc6f84" (identifier "puVar19") (+ "+") (number_literal "0xc6f84")) () ")"))))) (; ";")) (expression_statement "iVar1 = *piVar13;" (assignment_expression "iVar1 = *piVar13" (identifier "iVar1") (= "=") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) (; ";")) (expression_statement "FUN_0004b364();" (call_expression "FUN_0004b364()" (identifier "FUN_0004b364") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar20 = *(code **)(puVar19 + 0xc6e88);" (assignment_expression "pcVar20 = *(code **)(puVar19 + 0xc6e88)" (identifier "pcVar20") (= "=") (pointer_expression "*(code **)(puVar19 + 0xc6e88)" (* "*") (cast_expression "(code **)(puVar19 + 0xc6e88)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar19 + 0xc6e88)" (( "(") (binary_expression "puVar19 + 0xc6e88" (identifier "puVar19") (+ "+") (number_literal "0xc6e88")) () ")"))))) (; ";")) (expression_statement "param_1[6] = *param_1;" (assignment_expression "param_1[6] = *param_1" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "puVar2 = (uint *)(*pcVar20)(piVar15);" (assignment_expression "puVar2 = (uint *)(*pcVar20)(piVar15)" (identifier "puVar2") (= "=") (cast_expression "(uint *)(*pcVar20)(piVar15)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar20)(piVar15)" (parenthesized_expression "(*pcVar20)" (( "(") (pointer_expression "*pcVar20" (* "*") (identifier "pcVar20")) () ")")) (argument_list "(piVar15)" (( "(") (identifier "piVar15") () ")"))))) (; ";")) (expression_statement "piVar17 = param_1;" (assignment_expression "piVar17 = param_1" (identifier "piVar17") (= "=") (identifier "param_1")) (; ";")) (expression_statement "piVar16 = piVar15;" (assignment_expression "piVar16 = piVar15" (identifier "piVar16") (= "=") (identifier "piVar15")) (; ";")) (expression_statement "FUN_0004b594();" (call_expression "FUN_0004b594()" (identifier "FUN_0004b594") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (iVar1 == *piVar13) {\n    return *piVar13;\n  }" (if "if") (parenthesized_expression "(iVar1 == *piVar13)" (( "(") (binary_expression "iVar1 == *piVar13" (identifier "iVar1") (== "==") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) () ")")) (compound_statement "{\n    return *piVar13;\n  }" ({ "{") (return_statement "return *piVar13;" (return "return") (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (; ";")) (} "}"))) (expression_statement "pcVar21 = *(code **)(puVar19 + 0xc6c1c);" (assignment_expression "pcVar21 = *(code **)(puVar19 + 0xc6c1c)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(puVar19 + 0xc6c1c)" (* "*") (cast_expression "(code **)(puVar19 + 0xc6c1c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar19 + 0xc6c1c)" (( "(") (binary_expression "puVar19 + 0xc6c1c" (identifier "puVar19") (+ "+") (number_literal "0xc6c1c")) () ")"))))) (; ";")) (expression_statement "(*pcVar21)();" (call_expression "(*pcVar21)()" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar20 = pcVar21 + 0xcdb48;" (assignment_expression "pcVar20 = pcVar21 + 0xcdb48" (identifier "pcVar20") (= "=") (binary_expression "pcVar21 + 0xcdb48" (identifier "pcVar21") (+ "+") (number_literal "0xcdb48"))) (; ";")) (expression_statement "piVar18 = *(int **)(pcVar21 + 0xc6ec8);" (assignment_expression "piVar18 = *(int **)(pcVar21 + 0xc6ec8)" (identifier "piVar18") (= "=") (pointer_expression "*(int **)(pcVar21 + 0xc6ec8)" (* "*") (cast_expression "(int **)(pcVar21 + 0xc6ec8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar21 + 0xc6ec8)" (( "(") (binary_expression "pcVar21 + 0xc6ec8" (identifier "pcVar21") (+ "+") (number_literal "0xc6ec8")) () ")"))))) (; ";")) (expression_statement "iStack_84 = *piVar18;" (assignment_expression "iStack_84 = *piVar18" (identifier "iStack_84") (= "=") (pointer_expression "*piVar18" (* "*") (identifier "piVar18"))) (; ";")) (expression_statement "iVar1 = *piVar16;" (assignment_expression "iVar1 = *piVar16" (identifier "iVar1") (= "=") (pointer_expression "*piVar16" (* "*") (identifier "piVar16"))) (; ";")) (expression_statement "pcStack_c8 = pcVar20;" (assignment_expression "pcStack_c8 = pcVar20" (identifier "pcStack_c8") (= "=") (identifier "pcVar20")) (; ";")) (expression_statement "piStack_80 = param_1;" (assignment_expression "piStack_80 = param_1" (identifier "piStack_80") (= "=") (identifier "param_1")) (; ";")) (expression_statement "piStack_7c = piVar13;" (assignment_expression "piStack_7c = piVar13" (identifier "piStack_7c") (= "=") (identifier "piVar13")) (; ";")) (expression_statement "piStack_78 = piVar15;" (assignment_expression "piStack_78 = piVar15" (identifier "piStack_78") (= "=") (identifier "piVar15")) (; ";")) (if_statement "if (piVar17[6] != 0) {\n    iVar10 = piVar17[0x93];\n    uVar3 = piVar16[2];\n    piVar16[6] = 0;\n    *piVar16 = iVar1 - (piVar16[5] - piVar16[4]);\n    if (iVar10 == 0) {\nLAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);\n      if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;\nLAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }\n      pcVar20 = *(code **)(pcVar20 + -0x7efc);\n      iVar1 = iVar10;\njoined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }\n    }\n    else {\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }\n    FUN_00049aac(*(undefined1 *)(piVar16[4] + 0xc));\n    piStack_e8 = (int *)piVar16[5];\n    piStack_dc = aiStack_b4;\n    uStack_d0 = 0;\n    uStack_d4 = 0;\n    uStack_d8 = 0;\n    uStack_e4 = extraout_v1;\n    iStack_e0 = iVar1;\n    log_packet(piVar17[6],1);\n    pcVar20 = pcStack_c8;\n    iVar1 = (piVar16[5] - piVar16[4]) + *piVar16;\n    *piVar16 = iVar1;\n  }" (if "if") (parenthesized_expression "(piVar17[6] != 0)" (( "(") (binary_expression "piVar17[6] != 0" (subscript_expression "piVar17[6]" (identifier "piVar17") ([ "[") (number_literal "6") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar10 = piVar17[0x93];\n    uVar3 = piVar16[2];\n    piVar16[6] = 0;\n    *piVar16 = iVar1 - (piVar16[5] - piVar16[4]);\n    if (iVar10 == 0) {\nLAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);\n      if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;\nLAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }\n      pcVar20 = *(code **)(pcVar20 + -0x7efc);\n      iVar1 = iVar10;\njoined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }\n    }\n    else {\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }\n    FUN_00049aac(*(undefined1 *)(piVar16[4] + 0xc));\n    piStack_e8 = (int *)piVar16[5];\n    piStack_dc = aiStack_b4;\n    uStack_d0 = 0;\n    uStack_d4 = 0;\n    uStack_d8 = 0;\n    uStack_e4 = extraout_v1;\n    iStack_e0 = iVar1;\n    log_packet(piVar17[6],1);\n    pcVar20 = pcStack_c8;\n    iVar1 = (piVar16[5] - piVar16[4]) + *piVar16;\n    *piVar16 = iVar1;\n  }" ({ "{") (expression_statement "iVar10 = piVar17[0x93];" (assignment_expression "iVar10 = piVar17[0x93]" (identifier "iVar10") (= "=") (subscript_expression "piVar17[0x93]" (identifier "piVar17") ([ "[") (number_literal "0x93") (] "]"))) (; ";")) (expression_statement "uVar3 = piVar16[2];" (assignment_expression "uVar3 = piVar16[2]" (identifier "uVar3") (= "=") (subscript_expression "piVar16[2]" (identifier "piVar16") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "piVar16[6] = 0;" (assignment_expression "piVar16[6] = 0" (subscript_expression "piVar16[6]" (identifier "piVar16") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*piVar16 = iVar1 - (piVar16[5] - piVar16[4]);" (assignment_expression "*piVar16 = iVar1 - (piVar16[5] - piVar16[4])" (pointer_expression "*piVar16" (* "*") (identifier "piVar16")) (= "=") (binary_expression "iVar1 - (piVar16[5] - piVar16[4])" (identifier "iVar1") (- "-") (parenthesized_expression "(piVar16[5] - piVar16[4])" (( "(") (binary_expression "piVar16[5] - piVar16[4]" (subscript_expression "piVar16[5]" (identifier "piVar16") ([ "[") (number_literal "5") (] "]")) (- "-") (subscript_expression "piVar16[4]" (identifier "piVar16") ([ "[") (number_literal "4") (] "]"))) () ")")))) (; ";")) (if_statement "if (iVar10 == 0) {\nLAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);\n      if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;\nLAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }\n      pcVar20 = *(code **)(pcVar20 + -0x7efc);\n      iVar1 = iVar10;\njoined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }\n    }\n    else {\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);\n      if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;\nLAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }\n      pcVar20 = *(code **)(pcVar20 + -0x7efc);\n      iVar1 = iVar10;\njoined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }\n    }" ({ "{") (labeled_statement "LAB_0004b804:\n      pcVar21 = *(code **)(pcVar20 + -0x7efc);" (statement_identifier "LAB_0004b804") (: ":") (expression_statement "pcVar21 = *(code **)(pcVar20 + -0x7efc);" (assignment_expression "pcVar21 = *(code **)(pcVar20 + -0x7efc)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(pcVar20 + -0x7efc)" (* "*") (cast_expression "(code **)(pcVar20 + -0x7efc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar20 + -0x7efc)" (( "(") (binary_expression "pcVar20 + -0x7efc" (identifier "pcVar20") (+ "+") (number_literal "-0x7efc")) () ")"))))) (; ";"))) (if_statement "if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;" (if "if") (parenthesized_expression "((uVar3 & 0xffffffdf) == 9)" (( "(") (binary_expression "(uVar3 & 0xffffffdf) == 9" (parenthesized_expression "(uVar3 & 0xffffffdf)" (( "(") (binary_expression "uVar3 & 0xffffffdf" (identifier "uVar3") (& "&") (number_literal "0xffffffdf")) () ")")) (== "==") (number_literal "9")) () ")")) (goto_statement "goto LAB_0004ba3c;" (goto "goto") (statement_identifier "LAB_0004ba3c") (; ";"))) (labeled_statement "LAB_0004b818:\n      if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }" (statement_identifier "LAB_0004b818") (: ":") (if_statement "if (uVar3 == 0x48) {\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }" (if "if") (parenthesized_expression "(uVar3 == 0x48)" (( "(") (binary_expression "uVar3 == 0x48" (identifier "uVar3") (== "==") (number_literal "0x48")) () ")")) (compound_statement "{\n        pcVar21 = *(code **)(pcVar20 + -0x7efc);\n        goto LAB_0004ba3c;\n      }" ({ "{") (expression_statement "pcVar21 = *(code **)(pcVar20 + -0x7efc);" (assignment_expression "pcVar21 = *(code **)(pcVar20 + -0x7efc)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(pcVar20 + -0x7efc)" (* "*") (cast_expression "(code **)(pcVar20 + -0x7efc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar20 + -0x7efc)" (( "(") (binary_expression "pcVar20 + -0x7efc" (identifier "pcVar20") (+ "+") (number_literal "-0x7efc")) () ")"))))) (; ";")) (goto_statement "goto LAB_0004ba3c;" (goto "goto") (statement_identifier "LAB_0004ba3c") (; ";")) (} "}")))) (expression_statement "pcVar20 = *(code **)(pcVar20 + -0x7efc);" (assignment_expression "pcVar20 = *(code **)(pcVar20 + -0x7efc)" (identifier "pcVar20") (= "=") (pointer_expression "*(code **)(pcVar20 + -0x7efc)" (* "*") (cast_expression "(code **)(pcVar20 + -0x7efc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar20 + -0x7efc)" (( "(") (binary_expression "pcVar20 + -0x7efc" (identifier "pcVar20") (+ "+") (number_literal "-0x7efc")) () ")"))))) (; ";")) (expression_statement "iVar1 = iVar10;" (assignment_expression "iVar1 = iVar10" (identifier "iVar1") (= "=") (identifier "iVar10")) (; ";")) (labeled_statement "joined_r0x0004b824:\n      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }" (statement_identifier "joined_r0x0004b824") (: ":") (if_statement "if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }" (if "if") (parenthesized_expression "((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0))" (( "(") (binary_expression "(uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)" (parenthesized_expression "(uVar3 == 0x22)" (( "(") (binary_expression "uVar3 == 0x22" (identifier "uVar3") (== "==") (number_literal "0x22")) () ")")) (&& "&&") (parenthesized_expression "(iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)" (( "(") (comma_expression "iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0" (assignment_expression "iVar10 = (*pcVar20)(piVar17[0x92],0x7b)" (identifier "iVar10") (= "=") (call_expression "(*pcVar20)(piVar17[0x92],0x7b)" (parenthesized_expression "(*pcVar20)" (( "(") (pointer_expression "*pcVar20" (* "*") (identifier "pcVar20")) () ")")) (argument_list "(piVar17[0x92],0x7b)" (( "(") (subscript_expression "piVar17[0x92]" (identifier "piVar17") ([ "[") (number_literal "0x92") (] "]")) (, ",") (number_literal "0x7b") () ")")))) (, ",") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        piVar16[6] = 0;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        aiStack_b4[iVar1 * 3] = piVar16[6];\n        aiStack_b4[iVar1 * 3 + 2] = 1;\n        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n        if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }\n      }" ({ "{") (expression_statement "piVar16[6] = 0;" (assignment_expression "piVar16[6] = 0" (subscript_expression "piVar16[6]" (identifier "piVar16") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);" (call_expression "FUN_00047b74(piVar16,&iStack_bc,&iStack_b8)" (identifier "FUN_00047b74") (argument_list "(piVar16,&iStack_bc,&iStack_b8)" (( "(") (identifier "piVar16") (, ",") (pointer_expression "&iStack_bc" (& "&") (identifier "iStack_bc")) (, ",") (pointer_expression "&iStack_b8" (& "&") (identifier "iStack_b8")) () ")"))) (; ";")) (expression_statement "aiStack_b4[iVar1 * 3] = piVar16[6];" (assignment_expression "aiStack_b4[iVar1 * 3] = piVar16[6]" (subscript_expression "aiStack_b4[iVar1 * 3]" (identifier "aiStack_b4") ([ "[") (binary_expression "iVar1 * 3" (identifier "iVar1") (* "*") (number_literal "3")) (] "]")) (= "=") (subscript_expression "piVar16[6]" (identifier "piVar16") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "aiStack_b4[iVar1 * 3 + 2] = 1;" (assignment_expression "aiStack_b4[iVar1 * 3 + 2] = 1" (subscript_expression "aiStack_b4[iVar1 * 3 + 2]" (identifier "aiStack_b4") ([ "[") (binary_expression "iVar1 * 3 + 2" (binary_expression "iVar1 * 3" (identifier "iVar1") (* "*") (number_literal "3")) (+ "+") (number_literal "2")) (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);" (call_expression "FUN_00047b74(piVar16,&iStack_bc,&iStack_b8)" (identifier "FUN_00047b74") (argument_list "(piVar16,&iStack_bc,&iStack_b8)" (( "(") (identifier "piVar16") (, ",") (pointer_expression "&iStack_bc" (& "&") (identifier "iStack_bc")) (, ",") (pointer_expression "&iStack_b8" (& "&") (identifier "iStack_b8")) () ")"))) (; ";")) (if_statement "if (iStack_bc != 0) {\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }" (if "if") (parenthesized_expression "(iStack_bc != 0)" (( "(") (binary_expression "iStack_bc != 0" (identifier "iStack_bc") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];\n          iVar1 = iVar1 + 1;\n        }" ({ "{") (expression_statement "aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];" (assignment_expression "aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3]" (subscript_expression "aiStack_b4[iVar1 * 3 + 1]" (identifier "aiStack_b4") ([ "[") (binary_expression "iVar1 * 3 + 1" (binary_expression "iVar1 * 3" (identifier "iVar1") (* "*") (number_literal "3")) (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "piVar16[6] - aiStack_b4[iVar1 * 3]" (subscript_expression "piVar16[6]" (identifier "piVar16") ([ "[") (number_literal "6") (] "]")) (- "-") (subscript_expression "aiStack_b4[iVar1 * 3]" (identifier "aiStack_b4") ([ "[") (binary_expression "iVar1 * 3" (identifier "iVar1") (* "*") (number_literal "3")) (] "]")))) (; ";")) (expression_statement "iVar1 = iVar1 + 1;" (assignment_expression "iVar1 = iVar1 + 1" (identifier "iVar1") (= "=") (binary_expression "iVar1 + 1" (identifier "iVar1") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}")))) (} "}")) (else_clause "else {\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }" (else "else") (compound_statement "{\n      if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }\n      aiStack_b4[2] = 2;\n      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);\n      pcVar20 = pcStack_c8;\n      if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }\n      uVar3 = piVar16[2];\n      iVar10 = 1;\n      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;\n      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);\nLAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);\n      if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }\n      iVar7 = *piVar16;\n      iVar1 = iVar10 + 1;\n      aiStack_b4[iVar10 * 3] = 0;\n      aiStack_b4[iVar10 * 3 + 1] = iVar7;\n      aiStack_b4[iVar10 * 3 + 2] = 1;\n    }" ({ "{") (if_statement "if (uVar3 == 0x10) {\n        aiStack_b4[0] = 4;\n      }\n      else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }" (if "if") (parenthesized_expression "(uVar3 == 0x10)" (( "(") (binary_expression "uVar3 == 0x10" (identifier "uVar3") (== "==") (number_literal "0x10")) () ")")) (compound_statement "{\n        aiStack_b4[0] = 4;\n      }" ({ "{") (expression_statement "aiStack_b4[0] = 4;" (assignment_expression "aiStack_b4[0] = 4" (subscript_expression "aiStack_b4[0]" (identifier "aiStack_b4") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "4")) (; ";")) (} "}")) (else_clause "else {\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }" (else "else") (compound_statement "{\n        iVar10 = 0;\n        if (uVar3 != 0x17) goto LAB_0004b804;\n        FUN_00047058(piVar16);\n        aiStack_b4[0] = piVar16[6] + 4;\n      }" ({ "{") (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar3 != 0x17) goto LAB_0004b804;" (if "if") (parenthesized_expression "(uVar3 != 0x17)" (( "(") (binary_expression "uVar3 != 0x17" (identifier "uVar3") (!= "!=") (number_literal "0x17")) () ")")) (goto_statement "goto LAB_0004b804;" (goto "goto") (statement_identifier "LAB_0004b804") (; ";"))) (expression_statement "FUN_00047058(piVar16);" (call_expression "FUN_00047058(piVar16)" (identifier "FUN_00047058") (argument_list "(piVar16)" (( "(") (identifier "piVar16") () ")"))) (; ";")) (expression_statement "aiStack_b4[0] = piVar16[6] + 4;" (assignment_expression "aiStack_b4[0] = piVar16[6] + 4" (subscript_expression "aiStack_b4[0]" (identifier "aiStack_b4") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "piVar16[6] + 4" (subscript_expression "piVar16[6]" (identifier "piVar16") ([ "[") (number_literal "6") (] "]")) (+ "+") (number_literal "4"))) (; ";")) (} "}")))) (expression_statement "aiStack_b4[2] = 2;" (assignment_expression "aiStack_b4[2] = 2" (subscript_expression "aiStack_b4[2]" (identifier "aiStack_b4") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "2")) (; ";")) (expression_statement "FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);" (call_expression "FUN_00047b74(piVar16,&iStack_bc,&iStack_b8)" (identifier "FUN_00047b74") (argument_list "(piVar16,&iStack_bc,&iStack_b8)" (( "(") (identifier "piVar16") (, ",") (pointer_expression "&iStack_bc" (& "&") (identifier "iStack_bc")) (, ",") (pointer_expression "&iStack_b8" (& "&") (identifier "iStack_b8")) () ")"))) (; ";")) (expression_statement "pcVar20 = pcStack_c8;" (assignment_expression "pcVar20 = pcStack_c8" (identifier "pcVar20") (= "=") (identifier "pcStack_c8")) (; ";")) (if_statement "if (iStack_bc == 0) {\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }" (if "if") (parenthesized_expression "(iStack_bc == 0)" (( "(") (binary_expression "iStack_bc == 0" (identifier "iStack_bc") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar3 = piVar16[2];\n        iVar10 = 0;\n        goto LAB_0004b804;\n      }" ({ "{") (expression_statement "uVar3 = piVar16[2];" (assignment_expression "uVar3 = piVar16[2]" (identifier "uVar3") (= "=") (subscript_expression "piVar16[2]" (identifier "piVar16") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0004b804;" (goto "goto") (statement_identifier "LAB_0004b804") (; ";")) (} "}"))) (expression_statement "uVar3 = piVar16[2];" (assignment_expression "uVar3 = piVar16[2]" (identifier "uVar3") (= "=") (subscript_expression "piVar16[2]" (identifier "piVar16") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" (identifier "iVar10") (= "=") (number_literal "1")) (; ";")) (if_statement "if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;" (if "if") (parenthesized_expression "((uVar3 & 0xffffffdf) != 9)" (( "(") (binary_expression "(uVar3 & 0xffffffdf) != 9" (parenthesized_expression "(uVar3 & 0xffffffdf)" (( "(") (binary_expression "uVar3 & 0xffffffdf" (identifier "uVar3") (& "&") (number_literal "0xffffffdf")) () ")")) (!= "!=") (number_literal "9")) () ")")) (goto_statement "goto LAB_0004b818;" (goto "goto") (statement_identifier "LAB_0004b818") (; ";"))) (expression_statement "pcVar21 = *(code **)(pcStack_c8 + -0x7efc);" (assignment_expression "pcVar21 = *(code **)(pcStack_c8 + -0x7efc)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(pcStack_c8 + -0x7efc)" (* "*") (cast_expression "(code **)(pcStack_c8 + -0x7efc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcStack_c8 + -0x7efc)" (( "(") (binary_expression "pcStack_c8 + -0x7efc" (identifier "pcStack_c8") (+ "+") (number_literal "-0x7efc")) () ")"))))) (; ";")) (labeled_statement "LAB_0004ba3c:\n      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);" (statement_identifier "LAB_0004ba3c") (: ":") (expression_statement "iVar1 = (*pcVar21)(piVar17[0x92],0x7b);" (assignment_expression "iVar1 = (*pcVar21)(piVar17[0x92],0x7b)" (identifier "iVar1") (= "=") (call_expression "(*pcVar21)(piVar17[0x92],0x7b)" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "(piVar17[0x92],0x7b)" (( "(") (subscript_expression "piVar17[0x92]" (identifier "piVar17") ([ "[") (number_literal "0x92") (] "]")) (, ",") (number_literal "0x7b") () ")")))) (; ";"))) (if_statement "if (iVar1 == 0) {\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar3 = piVar16[2];\n        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);\n        iVar1 = iVar10;\n        goto joined_r0x0004b824;\n      }" ({ "{") (expression_statement "uVar3 = piVar16[2];" (assignment_expression "uVar3 = piVar16[2]" (identifier "uVar3") (= "=") (subscript_expression "piVar16[2]" (identifier "piVar16") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "pcVar20 = *(code **)(pcStack_c8 + -0x7efc);" (assignment_expression "pcVar20 = *(code **)(pcStack_c8 + -0x7efc)" (identifier "pcVar20") (= "=") (pointer_expression "*(code **)(pcStack_c8 + -0x7efc)" (* "*") (cast_expression "(code **)(pcStack_c8 + -0x7efc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcStack_c8 + -0x7efc)" (( "(") (binary_expression "pcStack_c8 + -0x7efc" (identifier "pcStack_c8") (+ "+") (number_literal "-0x7efc")) () ")"))))) (; ";")) (expression_statement "iVar1 = iVar10;" (assignment_expression "iVar1 = iVar10" (identifier "iVar1") (= "=") (identifier "iVar10")) (; ";")) (goto_statement "goto joined_r0x0004b824;" (goto "goto") (statement_identifier "joined_r0x0004b824") (; ";")) (} "}"))) (expression_statement "iVar7 = *piVar16;" (assignment_expression "iVar7 = *piVar16" (identifier "iVar7") (= "=") (pointer_expression "*piVar16" (* "*") (identifier "piVar16"))) (; ";")) (expression_statement "iVar1 = iVar10 + 1;" (assignment_expression "iVar1 = iVar10 + 1" (identifier "iVar1") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "aiStack_b4[iVar10 * 3] = 0;" (assignment_expression "aiStack_b4[iVar10 * 3] = 0" (subscript_expression "aiStack_b4[iVar10 * 3]" (identifier "aiStack_b4") ([ "[") (binary_expression "iVar10 * 3" (identifier "iVar10") (* "*") (number_literal "3")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "aiStack_b4[iVar10 * 3 + 1] = iVar7;" (assignment_expression "aiStack_b4[iVar10 * 3 + 1] = iVar7" (subscript_expression "aiStack_b4[iVar10 * 3 + 1]" (identifier "aiStack_b4") ([ "[") (binary_expression "iVar10 * 3 + 1" (binary_expression "iVar10 * 3" (identifier "iVar10") (* "*") (number_literal "3")) (+ "+") (number_literal "1")) (] "]")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "aiStack_b4[iVar10 * 3 + 2] = 1;" (assignment_expression "aiStack_b4[iVar10 * 3 + 2] = 1" (subscript_expression "aiStack_b4[iVar10 * 3 + 2]" (identifier "aiStack_b4") ([ "[") (binary_expression "iVar10 * 3 + 2" (binary_expression "iVar10 * 3" (identifier "iVar10") (* "*") (number_literal "3")) (+ "+") (number_literal "2")) (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "FUN_00049aac(*(undefined1 *)(piVar16[4] + 0xc));" (call_expression "FUN_00049aac(*(undefined1 *)(piVar16[4] + 0xc))" (identifier "FUN_00049aac") (argument_list "(*(undefined1 *)(piVar16[4] + 0xc))" (( "(") (pointer_expression "*(undefined1 *)(piVar16[4] + 0xc)" (* "*") (cast_expression "(undefined1 *)(piVar16[4] + 0xc)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar16[4] + 0xc)" (( "(") (binary_expression "piVar16[4] + 0xc" (subscript_expression "piVar16[4]" (identifier "piVar16") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (expression_statement "piStack_e8 = (int *)piVar16[5];" (assignment_expression "piStack_e8 = (int *)piVar16[5]" (identifier "piStack_e8") (= "=") (cast_expression "(int *)piVar16[5]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar16[5]" (identifier "piVar16") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "piStack_dc = aiStack_b4;" (assignment_expression "piStack_dc = aiStack_b4" (identifier "piStack_dc") (= "=") (identifier "aiStack_b4")) (; ";")) (expression_statement "uStack_d0 = 0;" (assignment_expression "uStack_d0 = 0" (identifier "uStack_d0") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_d4 = 0;" (assignment_expression "uStack_d4 = 0" (identifier "uStack_d4") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_d8 = 0;" (assignment_expression "uStack_d8 = 0" (identifier "uStack_d8") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_e4 = extraout_v1;" (assignment_expression "uStack_e4 = extraout_v1" (identifier "uStack_e4") (= "=") (identifier "extraout_v1")) (; ";")) (expression_statement "iStack_e0 = iVar1;" (assignment_expression "iStack_e0 = iVar1" (identifier "iStack_e0") (= "=") (identifier "iVar1")) (; ";")) (expression_statement "log_packet(piVar17[6],1);" (call_expression "log_packet(piVar17[6],1)" (identifier "log_packet") (argument_list "(piVar17[6],1)" (( "(") (subscript_expression "piVar17[6]" (identifier "piVar17") ([ "[") (number_literal "6") (] "]")) (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "pcVar20 = pcStack_c8;" (assignment_expression "pcVar20 = pcStack_c8" (identifier "pcVar20") (= "=") (identifier "pcStack_c8")) (; ";")) (expression_statement "iVar1 = (piVar16[5] - piVar16[4]) + *piVar16;" (assignment_expression "iVar1 = (piVar16[5] - piVar16[4]) + *piVar16" (identifier "iVar1") (= "=") (binary_expression "(piVar16[5] - piVar16[4]) + *piVar16" (parenthesized_expression "(piVar16[5] - piVar16[4])" (( "(") (binary_expression "piVar16[5] - piVar16[4]" (subscript_expression "piVar16[5]" (identifier "piVar16") ([ "[") (number_literal "5") (] "]")) (- "-") (subscript_expression "piVar16[4]" (identifier "piVar16") ([ "[") (number_literal "4") (] "]"))) () ")")) (+ "+") (pointer_expression "*piVar16" (* "*") (identifier "piVar16")))) (; ";")) (expression_statement "*piVar16 = iVar1;" (assignment_expression "*piVar16 = iVar1" (pointer_expression "*piVar16" (* "*") (identifier "piVar16")) (= "=") (identifier "iVar1")) (; ";")) (} "}"))) (if_statement "if (piVar17[0xf] != 0) {\n    piStack_e8 = &iStack_b8;\n    (**(code **)(pcVar20 + -0x7af0))(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc);\n    if (piVar16[7] < iStack_b8 + 2) {\n      FUN_0004b2d8(piVar16);\n    }\n    (**(code **)(pcStack_c8 + -0x6d44))(piVar16[4] + 0xc,iStack_bc,iStack_b8);\n    safefree(iStack_bc);\n    pcVar20 = pcStack_c8;\n    iVar1 = iStack_b8 + 0xc;\n    *piVar16 = iVar1;\n  }" (if "if") (parenthesized_expression "(piVar17[0xf] != 0)" (( "(") (binary_expression "piVar17[0xf] != 0" (subscript_expression "piVar17[0xf]" (identifier "piVar17") ([ "[") (number_literal "0xf") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    piStack_e8 = &iStack_b8;\n    (**(code **)(pcVar20 + -0x7af0))(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc);\n    if (piVar16[7] < iStack_b8 + 2) {\n      FUN_0004b2d8(piVar16);\n    }\n    (**(code **)(pcStack_c8 + -0x6d44))(piVar16[4] + 0xc,iStack_bc,iStack_b8);\n    safefree(iStack_bc);\n    pcVar20 = pcStack_c8;\n    iVar1 = iStack_b8 + 0xc;\n    *piVar16 = iVar1;\n  }" ({ "{") (expression_statement "piStack_e8 = &iStack_b8;" (assignment_expression "piStack_e8 = &iStack_b8" (identifier "piStack_e8") (= "=") (pointer_expression "&iStack_b8" (& "&") (identifier "iStack_b8"))) (; ";")) (expression_statement "(**(code **)(pcVar20 + -0x7af0))(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc);" (call_expression "(**(code **)(pcVar20 + -0x7af0))(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc)" (parenthesized_expression "(**(code **)(pcVar20 + -0x7af0))" (( "(") (pointer_expression "**(code **)(pcVar20 + -0x7af0)" (* "*") (pointer_expression "*(code **)(pcVar20 + -0x7af0)" (* "*") (cast_expression "(code **)(pcVar20 + -0x7af0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar20 + -0x7af0)" (( "(") (binary_expression "pcVar20 + -0x7af0" (identifier "pcVar20") (+ "+") (number_literal "-0x7af0")) () ")"))))) () ")")) (argument_list "(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc)" (( "(") (subscript_expression "piVar17[0x24]" (identifier "piVar17") ([ "[") (number_literal "0x24") (] "]")) (, ",") (binary_expression "piVar16[4] + 0xc" (subscript_expression "piVar16[4]" (identifier "piVar16") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "0xc")) (, ",") (binary_expression "iVar1 + -0xc" (identifier "iVar1") (+ "+") (number_literal "-0xc")) (, ",") (pointer_expression "&iStack_bc" (& "&") (identifier "iStack_bc")) () ")"))) (; ";")) (if_statement "if (piVar16[7] < iStack_b8 + 2) {\n      FUN_0004b2d8(piVar16);\n    }" (if "if") (parenthesized_expression "(piVar16[7] < iStack_b8 + 2)" (( "(") (binary_expression "piVar16[7] < iStack_b8 + 2" (subscript_expression "piVar16[7]" (identifier "piVar16") ([ "[") (number_literal "7") (] "]")) (< "<") (binary_expression "iStack_b8 + 2" (identifier "iStack_b8") (+ "+") (number_literal "2"))) () ")")) (compound_statement "{\n      FUN_0004b2d8(piVar16);\n    }" ({ "{") (expression_statement "FUN_0004b2d8(piVar16);" (call_expression "FUN_0004b2d8(piVar16)" (identifier "FUN_0004b2d8") (argument_list "(piVar16)" (( "(") (identifier "piVar16") () ")"))) (; ";")) (} "}"))) (expression_statement "(**(code **)(pcStack_c8 + -0x6d44))(piVar16[4] + 0xc,iStack_bc,iStack_b8);" (call_expression "(**(code **)(pcStack_c8 + -0x6d44))(piVar16[4] + 0xc,iStack_bc,iStack_b8)" (parenthesized_expression "(**(code **)(pcStack_c8 + -0x6d44))" (( "(") (pointer_expression "**(code **)(pcStack_c8 + -0x6d44)" (* "*") (pointer_expression "*(code **)(pcStack_c8 + -0x6d44)" (* "*") (cast_expression "(code **)(pcStack_c8 + -0x6d44)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcStack_c8 + -0x6d44)" (( "(") (binary_expression "pcStack_c8 + -0x6d44" (identifier "pcStack_c8") (+ "+") (number_literal "-0x6d44")) () ")"))))) () ")")) (argument_list "(piVar16[4] + 0xc,iStack_bc,iStack_b8)" (( "(") (binary_expression "piVar16[4] + 0xc" (subscript_expression "piVar16[4]" (identifier "piVar16") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "0xc")) (, ",") (identifier "iStack_bc") (, ",") (identifier "iStack_b8") () ")"))) (; ";")) (expression_statement "safefree(iStack_bc);" (call_expression "safefree(iStack_bc)" (identifier "safefree") (argument_list "(iStack_bc)" (( "(") (identifier "iStack_bc") () ")"))) (; ";")) (expression_statement "pcVar20 = pcStack_c8;" (assignment_expression "pcVar20 = pcStack_c8" (identifier "pcVar20") (= "=") (identifier "pcStack_c8")) (; ";")) (expression_statement "iVar1 = iStack_b8 + 0xc;" (assignment_expression "iVar1 = iStack_b8 + 0xc" (identifier "iVar1") (= "=") (binary_expression "iStack_b8 + 0xc" (identifier "iStack_b8") (+ "+") (number_literal "0xc"))) (; ";")) (expression_statement "*piVar16 = iVar1;" (assignment_expression "*piVar16 = iVar1" (pointer_expression "*piVar16" (* "*") (identifier "piVar16")) (= "=") (identifier "iVar1")) (; ";")) (} "}"))) (expression_statement "iVar10 = iVar1 + 4;" (assignment_expression "iVar10 = iVar1 + 4" (identifier "iVar10") (= "=") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4"))) (; ";")) (if_statement "if (piVar16[7] < iVar10) {\n    FUN_0004b2d8(piVar16);\n    iVar1 = *piVar16;\n    iVar10 = iVar1 + 4;\n    pcVar20 = pcStack_c8;\n  }" (if "if") (parenthesized_expression "(piVar16[7] < iVar10)" (( "(") (binary_expression "piVar16[7] < iVar10" (subscript_expression "piVar16[7]" (identifier "piVar16") ([ "[") (number_literal "7") (] "]")) (< "<") (identifier "iVar10")) () ")")) (compound_statement "{\n    FUN_0004b2d8(piVar16);\n    iVar1 = *piVar16;\n    iVar10 = iVar1 + 4;\n    pcVar20 = pcStack_c8;\n  }" ({ "{") (expression_statement "FUN_0004b2d8(piVar16);" (call_expression "FUN_0004b2d8(piVar16)" (identifier "FUN_0004b2d8") (argument_list "(piVar16)" (( "(") (identifier "piVar16") () ")"))) (; ";")) (expression_statement "iVar1 = *piVar16;" (assignment_expression "iVar1 = *piVar16" (identifier "iVar1") (= "=") (pointer_expression "*piVar16" (* "*") (identifier "piVar16"))) (; ";")) (expression_statement "iVar10 = iVar1 + 4;" (assignment_expression "iVar10 = iVar1 + 4" (identifier "iVar10") (= "=") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "pcVar20 = pcStack_c8;" (assignment_expression "pcVar20 = pcStack_c8" (identifier "pcVar20") (= "=") (identifier "pcStack_c8")) (; ";")) (} "}"))) (expression_statement "uVar14 = iVar1 - 8;" (assignment_expression "uVar14 = iVar1 - 8" (identifier "uVar14") (= "=") (binary_expression "iVar1 - 8" (identifier "iVar1") (- "-") (number_literal "8"))) (; ";")) (expression_statement "uVar3 = uVar14 & 0x80000007;" (assignment_expression "uVar3 = uVar14 & 0x80000007" (identifier "uVar3") (= "=") (binary_expression "uVar14 & 0x80000007" (identifier "uVar14") (& "&") (number_literal "0x80000007"))) (; ";")) (expression_statement "*piVar16 = iVar10;" (assignment_expression "*piVar16 = iVar10" (pointer_expression "*piVar16" (* "*") (identifier "piVar16")) (= "=") (identifier "iVar10")) (; ";")) (if_statement "if ((int)uVar3 < 0) {\n    uVar3 = (uVar3 - 1 | 0xfffffff8) + 1;\n  }" (if "if") (parenthesized_expression "((int)uVar3 < 0)" (( "(") (binary_expression "(int)uVar3 < 0" (cast_expression "(int)uVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar3")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    uVar3 = (uVar3 - 1 | 0xfffffff8) + 1;\n  }" ({ "{") (expression_statement "uVar3 = (uVar3 - 1 | 0xfffffff8) + 1;" (assignment_expression "uVar3 = (uVar3 - 1 | 0xfffffff8) + 1" (identifier "uVar3") (= "=") (binary_expression "(uVar3 - 1 | 0xfffffff8) + 1" (parenthesized_expression "(uVar3 - 1 | 0xfffffff8)" (( "(") (binary_expression "uVar3 - 1 | 0xfffffff8" (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1")) (| "|") (number_literal "0xfffffff8")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar1 = uVar14 - uVar3;" (assignment_expression "iVar1 = uVar14 - uVar3" (identifier "iVar1") (= "=") (binary_expression "uVar14 - uVar3" (identifier "uVar14") (- "-") (identifier "uVar3"))) (; ";")) (expression_statement "piVar15 = (int *)0xc;" (assignment_expression "piVar15 = (int *)0xc" (identifier "piVar15") (= "=") (cast_expression "(int *)0xc" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xc"))) (; ";")) (expression_statement "iVar10 = iVar1 + 8;" (assignment_expression "iVar10 = iVar1 + 8" (identifier "iVar10") (= "=") (binary_expression "iVar1 + 8" (identifier "iVar1") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "uVar11 = uVar3;" (assignment_expression "uVar11 = uVar3" (identifier "uVar11") (= "=") (identifier "uVar3")) (; ";")) (do_statement "do {\n    uVar5 = (**(code **)(pcVar20 + -0x7af8))();\n    puVar6 = (undefined1 *)(piVar16[4] + uVar11);\n    uVar11 = uVar11 + 1;\n    *puVar6 = uVar5;\n    pcVar20 = pcStack_c8;\n  } while (uVar11 != 0xc);" (do "do") (compound_statement "{\n    uVar5 = (**(code **)(pcVar20 + -0x7af8))();\n    puVar6 = (undefined1 *)(piVar16[4] + uVar11);\n    uVar11 = uVar11 + 1;\n    *puVar6 = uVar5;\n    pcVar20 = pcStack_c8;\n  }" ({ "{") (expression_statement "uVar5 = (**(code **)(pcVar20 + -0x7af8))();" (assignment_expression "uVar5 = (**(code **)(pcVar20 + -0x7af8))()" (identifier "uVar5") (= "=") (call_expression "(**(code **)(pcVar20 + -0x7af8))()" (parenthesized_expression "(**(code **)(pcVar20 + -0x7af8))" (( "(") (pointer_expression "**(code **)(pcVar20 + -0x7af8)" (* "*") (pointer_expression "*(code **)(pcVar20 + -0x7af8)" (* "*") (cast_expression "(code **)(pcVar20 + -0x7af8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar20 + -0x7af8)" (( "(") (binary_expression "pcVar20 + -0x7af8" (identifier "pcVar20") (+ "+") (number_literal "-0x7af8")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar6 = (undefined1 *)(piVar16[4] + uVar11);" (assignment_expression "puVar6 = (undefined1 *)(piVar16[4] + uVar11)" (identifier "puVar6") (= "=") (cast_expression "(undefined1 *)(piVar16[4] + uVar11)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar16[4] + uVar11)" (( "(") (binary_expression "piVar16[4] + uVar11" (subscript_expression "piVar16[4]" (identifier "piVar16") ([ "[") (number_literal "4") (] "]")) (+ "+") (identifier "uVar11")) () ")")))) (; ";")) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar6 = uVar5;" (assignment_expression "*puVar6 = uVar5" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "pcVar20 = pcStack_c8;" (assignment_expression "pcVar20 = pcStack_c8" (identifier "pcVar20") (= "=") (identifier "pcStack_c8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar11 != 0xc)" (( "(") (binary_expression "uVar11 != 0xc" (identifier "uVar11") (!= "!=") (number_literal "0xc")) () ")")) (; ";")) (expression_statement "iVar12 = uVar3 + 4;" (assignment_expression "iVar12 = uVar3 + 4" (identifier "iVar12") (= "=") (binary_expression "uVar3 + 4" (identifier "uVar3") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "uVar4 = (**(code **)(pcStack_c8 + -0x7af4))(piVar16[4] + iVar12,iVar1 + 4);" (assignment_expression "uVar4 = (**(code **)(pcStack_c8 + -0x7af4))(piVar16[4] + iVar12,iVar1 + 4)" (identifier "uVar4") (= "=") (call_expression "(**(code **)(pcStack_c8 + -0x7af4))(piVar16[4] + iVar12,iVar1 + 4)" (parenthesized_expression "(**(code **)(pcStack_c8 + -0x7af4))" (( "(") (pointer_expression "**(code **)(pcStack_c8 + -0x7af4)" (* "*") (pointer_expression "*(code **)(pcStack_c8 + -0x7af4)" (* "*") (cast_expression "(code **)(pcStack_c8 + -0x7af4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcStack_c8 + -0x7af4)" (( "(") (binary_expression "pcStack_c8 + -0x7af4" (identifier "pcStack_c8") (+ "+") (number_literal "-0x7af4")) () ")"))))) () ")")) (argument_list "(piVar16[4] + iVar12,iVar1 + 4)" (( "(") (binary_expression "piVar16[4] + iVar12" (subscript_expression "piVar16[4]" (identifier "piVar16") ([ "[") (number_literal "4") (] "]")) (+ "+") (identifier "iVar12")) (, ",") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "iVar7 = iVar10 + uVar3;" (assignment_expression "iVar7 = iVar10 + uVar3" (identifier "iVar7") (= "=") (binary_expression "iVar10 + uVar3" (identifier "iVar10") (+ "+") (identifier "uVar3"))) (; ";")) (expression_statement "*(char *)(piVar16[4] + iVar7) = (char)((uint)uVar4 >> 0x18);" (assignment_expression "*(char *)(piVar16[4] + iVar7) = (char)((uint)uVar4 >> 0x18)" (pointer_expression "*(char *)(piVar16[4] + iVar7)" (* "*") (cast_expression "(char *)(piVar16[4] + iVar7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar16[4] + iVar7)" (( "(") (binary_expression "piVar16[4] + iVar7" (subscript_expression "piVar16[4]" (identifier "piVar16") ([ "[") (number_literal "4") (] "]")) (+ "+") (identifier "iVar7")) () ")")))) (= "=") (cast_expression "(char)((uint)uVar4 >> 0x18)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)uVar4 >> 0x18)" (( "(") (binary_expression "(uint)uVar4 >> 0x18" (cast_expression "(uint)uVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar4")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "piVar13 = (int *)((int)uVar14 >> 8);" (assignment_expression "piVar13 = (int *)((int)uVar14 >> 8)" (identifier "piVar13") (= "=") (cast_expression "(int *)((int)uVar14 >> 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)uVar14 >> 8)" (( "(") (binary_expression "(int)uVar14 >> 8" (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "*(char *)(piVar16[4] + iVar7 + 1) = (char)((uint)uVar4 >> 0x10);" (assignment_expression "*(char *)(piVar16[4] + iVar7 + 1) = (char)((uint)uVar4 >> 0x10)" (pointer_expression "*(char *)(piVar16[4] + iVar7 + 1)" (* "*") (cast_expression "(char *)(piVar16[4] + iVar7 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar16[4] + iVar7 + 1)" (( "(") (binary_expression "piVar16[4] + iVar7 + 1" (binary_expression "piVar16[4] + iVar7" (subscript_expression "piVar16[4]" (identifier "piVar16") ([ "[") (number_literal "4") (] "]")) (+ "+") (identifier "iVar7")) (+ "+") (number_literal "1")) () ")")))) (= "=") (cast_expression "(char)((uint)uVar4 >> 0x10)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)uVar4 >> 0x10)" (( "(") (binary_expression "(uint)uVar4 >> 0x10" (cast_expression "(uint)uVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar4")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*(char *)(piVar16[4] + iVar7 + 2) = (char)((uint)uVar4 >> 8);" (assignment_expression "*(char *)(piVar16[4] + iVar7 + 2) = (char)((uint)uVar4 >> 8)" (pointer_expression "*(char *)(piVar16[4] + iVar7 + 2)" (* "*") (cast_expression "(char *)(piVar16[4] + iVar7 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar16[4] + iVar7 + 2)" (( "(") (binary_expression "piVar16[4] + iVar7 + 2" (binary_expression "piVar16[4] + iVar7" (subscript_expression "piVar16[4]" (identifier "piVar16") ([ "[") (number_literal "4") (] "]")) (+ "+") (identifier "iVar7")) (+ "+") (number_literal "2")) () ")")))) (= "=") (cast_expression "(char)((uint)uVar4 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)uVar4 >> 8)" (( "(") (binary_expression "(uint)uVar4 >> 8" (cast_expression "(uint)uVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar4")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "*(char *)(piVar16[4] + iVar7 + 3) = (char)uVar4;" (assignment_expression "*(char *)(piVar16[4] + iVar7 + 3) = (char)uVar4" (pointer_expression "*(char *)(piVar16[4] + iVar7 + 3)" (* "*") (cast_expression "(char *)(piVar16[4] + iVar7 + 3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar16[4] + iVar7 + 3)" (( "(") (binary_expression "piVar16[4] + iVar7 + 3" (binary_expression "piVar16[4] + iVar7" (subscript_expression "piVar16[4]" (identifier "piVar16") ([ "[") (number_literal "4") (] "]")) (+ "+") (identifier "iVar7")) (+ "+") (number_literal "3")) () ")")))) (= "=") (cast_expression "(char)uVar4" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar4"))) (; ";")) (expression_statement "*(char *)(piVar16[4] + uVar3) = (char)(uVar14 >> 0x18);" (assignment_expression "*(char *)(piVar16[4] + uVar3) = (char)(uVar14 >> 0x18)" (pointer_expression "*(char *)(piVar16[4] + uVar3)" (* "*") (cast_expression "(char *)(piVar16[4] + uVar3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar16[4] + uVar3)" (( "(") (binary_expression "piVar16[4] + uVar3" (subscript_expression "piVar16[4]" (identifier "piVar16") ([ "[") (number_literal "4") (] "]")) (+ "+") (identifier "uVar3")) () ")")))) (= "=") (cast_expression "(char)(uVar14 >> 0x18)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar14 >> 0x18)" (( "(") (binary_expression "uVar14 >> 0x18" (identifier "uVar14") (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "*(char *)(piVar16[4] + uVar3 + 1) = (char)(uVar14 >> 0x10);" (assignment_expression "*(char *)(piVar16[4] + uVar3 + 1) = (char)(uVar14 >> 0x10)" (pointer_expression "*(char *)(piVar16[4] + uVar3 + 1)" (* "*") (cast_expression "(char *)(piVar16[4] + uVar3 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar16[4] + uVar3 + 1)" (( "(") (binary_expression "piVar16[4] + uVar3 + 1" (binary_expression "piVar16[4] + uVar3" (subscript_expression "piVar16[4]" (identifier "piVar16") ([ "[") (number_literal "4") (] "]")) (+ "+") (identifier "uVar3")) (+ "+") (number_literal "1")) () ")")))) (= "=") (cast_expression "(char)(uVar14 >> 0x10)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar14 >> 0x10)" (( "(") (binary_expression "uVar14 >> 0x10" (identifier "uVar14") (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*(char *)(piVar16[4] + uVar3 + 2) = (char)(uVar14 >> 8);" (assignment_expression "*(char *)(piVar16[4] + uVar3 + 2) = (char)(uVar14 >> 8)" (pointer_expression "*(char *)(piVar16[4] + uVar3 + 2)" (* "*") (cast_expression "(char *)(piVar16[4] + uVar3 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar16[4] + uVar3 + 2)" (( "(") (binary_expression "piVar16[4] + uVar3 + 2" (binary_expression "piVar16[4] + uVar3" (subscript_expression "piVar16[4]" (identifier "piVar16") ([ "[") (number_literal "4") (] "]")) (+ "+") (identifier "uVar3")) (+ "+") (number_literal "2")) () ")")))) (= "=") (cast_expression "(char)(uVar14 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar14 >> 8)" (( "(") (binary_expression "uVar14 >> 8" (identifier "uVar14") (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "*(char *)(piVar16[4] + uVar3 + 3) = (char)uVar14;" (assignment_expression "*(char *)(piVar16[4] + uVar3 + 3) = (char)uVar14" (pointer_expression "*(char *)(piVar16[4] + uVar3 + 3)" (* "*") (cast_expression "(char *)(piVar16[4] + uVar3 + 3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar16[4] + uVar3 + 3)" (( "(") (binary_expression "piVar16[4] + uVar3 + 3" (binary_expression "piVar16[4] + uVar3" (subscript_expression "piVar16[4]" (identifier "piVar16") ([ "[") (number_literal "4") (] "]")) (+ "+") (identifier "uVar3")) (+ "+") (number_literal "3")) () ")")))) (= "=") (cast_expression "(char)uVar14" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar14"))) (; ";")) (if_statement "if (piVar17[0x15] != 0) {\n    piVar13 = (int *)(piVar16[4] + iVar12);\n    (**(code **)(piVar17[0x15] + 0xc))(piVar17[0x16],piVar13,iVar10);\n  }" (if "if") (parenthesized_expression "(piVar17[0x15] != 0)" (( "(") (binary_expression "piVar17[0x15] != 0" (subscript_expression "piVar17[0x15]" (identifier "piVar17") ([ "[") (number_literal "0x15") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    piVar13 = (int *)(piVar16[4] + iVar12);\n    (**(code **)(piVar17[0x15] + 0xc))(piVar17[0x16],piVar13,iVar10);\n  }" ({ "{") (expression_statement "piVar13 = (int *)(piVar16[4] + iVar12);" (assignment_expression "piVar13 = (int *)(piVar16[4] + iVar12)" (identifier "piVar13") (= "=") (cast_expression "(int *)(piVar16[4] + iVar12)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar16[4] + iVar12)" (( "(") (binary_expression "piVar16[4] + iVar12" (subscript_expression "piVar16[4]" (identifier "piVar16") ([ "[") (number_literal "4") (] "]")) (+ "+") (identifier "iVar12")) () ")")))) (; ";")) (expression_statement "(**(code **)(piVar17[0x15] + 0xc))(piVar17[0x16],piVar13,iVar10);" (call_expression "(**(code **)(piVar17[0x15] + 0xc))(piVar17[0x16],piVar13,iVar10)" (parenthesized_expression "(**(code **)(piVar17[0x15] + 0xc))" (( "(") (pointer_expression "**(code **)(piVar17[0x15] + 0xc)" (* "*") (pointer_expression "*(code **)(piVar17[0x15] + 0xc)" (* "*") (cast_expression "(code **)(piVar17[0x15] + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar17[0x15] + 0xc)" (( "(") (binary_expression "piVar17[0x15] + 0xc" (subscript_expression "piVar17[0x15]" (identifier "piVar17") ([ "[") (number_literal "0x15") (] "]")) (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (argument_list "(piVar17[0x16],piVar13,iVar10)" (( "(") (subscript_expression "piVar17[0x16]" (identifier "piVar17") ([ "[") (number_literal "0x16") (] "]")) (, ",") (identifier "piVar13") (, ",") (identifier "iVar10") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar7 = *piVar18;" (assignment_expression "iVar7 = *piVar18" (identifier "iVar7") (= "=") (pointer_expression "*piVar18" (* "*") (identifier "piVar18"))) (; ";")) (expression_statement "*puVar2 = uVar3;" (assignment_expression "*puVar2 = uVar3" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (identifier "uVar3")) (; ";")) (if_statement "if (iStack_84 == iVar7) {\n    return iVar1 + 0xc;\n  }" (if "if") (parenthesized_expression "(iStack_84 == iVar7)" (( "(") (binary_expression "iStack_84 == iVar7" (identifier "iStack_84") (== "==") (identifier "iVar7")) () ")")) (compound_statement "{\n    return iVar1 + 0xc;\n  }" ({ "{") (return_statement "return iVar1 + 0xc;" (return "return") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) (; ";")) (} "}"))) (expression_statement "pcVar20 = *(code **)(pcStack_c8 + -0x6fe8);" (assignment_expression "pcVar20 = *(code **)(pcStack_c8 + -0x6fe8)" (identifier "pcVar20") (= "=") (pointer_expression "*(code **)(pcStack_c8 + -0x6fe8)" (* "*") (cast_expression "(code **)(pcStack_c8 + -0x6fe8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcStack_c8 + -0x6fe8)" (( "(") (binary_expression "pcStack_c8 + -0x6fe8" (identifier "pcStack_c8") (+ "+") (number_literal "-0x6fe8")) () ")"))))) (; ";")) (expression_statement "pcVar21 = FUN_0004bc54;" (assignment_expression "pcVar21 = FUN_0004bc54" (identifier "pcVar21") (= "=") (identifier "FUN_0004bc54")) (; ";")) (expression_statement "iVar1 = iStack_84;" (assignment_expression "iVar1 = iStack_84" (identifier "iVar1") (= "=") (identifier "iStack_84")) (; ";")) (expression_statement "(*pcVar20)();" (call_expression "(*pcVar20)()" (parenthesized_expression "(*pcVar20)" (( "(") (pointer_expression "*pcVar20" (* "*") (identifier "pcVar20")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar7 = *piVar13;" (assignment_expression "iVar7 = *piVar13" (identifier "iVar7") (= "=") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) (; ";")) (expression_statement "piVar16 = *(int **)(pcVar20 + 0xc69dc);" (assignment_expression "piVar16 = *(int **)(pcVar20 + 0xc69dc)" (identifier "piVar16") (= "=") (pointer_expression "*(int **)(pcVar20 + 0xc69dc)" (* "*") (cast_expression "(int **)(pcVar20 + 0xc69dc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar20 + 0xc69dc)" (( "(") (binary_expression "pcVar20 + 0xc69dc" (identifier "pcVar20") (+ "+") (number_literal "0xc69dc")) () ")"))))) (; ";")) (expression_statement "uStack_110 = 0xc;" (assignment_expression "uStack_110 = 0xc" (identifier "uStack_110") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "iStack_124 = *piVar16;" (assignment_expression "iStack_124 = *piVar16" (identifier "iStack_124") (= "=") (pointer_expression "*piVar16" (* "*") (identifier "piVar16"))) (; ";")) (expression_statement "aiStack_120[1] = iVar12;" (assignment_expression "aiStack_120[1] = iVar12" (subscript_expression "aiStack_120[1]" (identifier "aiStack_120") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar12")) (; ";")) (expression_statement "aiStack_120[2] = uVar3;" (assignment_expression "aiStack_120[2] = uVar3" (subscript_expression "aiStack_120[2]" (identifier "aiStack_120") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "aiStack_120[3] = uVar14;" (assignment_expression "aiStack_120[3] = uVar14" (subscript_expression "aiStack_120[3]" (identifier "aiStack_120") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar14")) (; ";")) (expression_statement "iStack_10c = iVar10;" (assignment_expression "iStack_10c = iVar10" (identifier "iStack_10c") (= "=") (identifier "iVar10")) (; ";")) (expression_statement "piStack_108 = piVar17;" (assignment_expression "piStack_108 = piVar17" (identifier "piStack_108") (= "=") (identifier "piVar17")) (; ";")) (expression_statement "piStack_104 = piVar18;" (assignment_expression "piStack_104 = piVar18" (identifier "piStack_104") (= "=") (identifier "piVar18")) (; ";")) (expression_statement "puStack_100 = puVar2;" (assignment_expression "puStack_100 = puVar2" (identifier "puStack_100") (= "=") (identifier "puVar2")) (; ";")) (expression_statement "pcStack_fc = pcVar21;" (assignment_expression "pcStack_fc = pcVar21" (identifier "pcStack_fc") (= "=") (identifier "pcVar21")) (; ";")) (if_statement "if (*(int *)(iVar1 + 0x18) == 0) goto LAB_0004bd94;" (if "if") (parenthesized_expression "(*(int *)(iVar1 + 0x18) == 0)" (( "(") (binary_expression "*(int *)(iVar1 + 0x18) == 0" (pointer_expression "*(int *)(iVar1 + 0x18)" (* "*") (cast_expression "(int *)(iVar1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x18)" (( "(") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004bd94;" (goto "goto") (statement_identifier "LAB_0004bd94") (; ";"))) (expression_statement "uVar3 = *(uint *)(iVar1 + 0x24c);" (assignment_expression "uVar3 = *(uint *)(iVar1 + 0x24c)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(iVar1 + 0x24c)" (* "*") (cast_expression "(uint *)(iVar1 + 0x24c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x24c)" (( "(") (binary_expression "iVar1 + 0x24c" (identifier "iVar1") (+ "+") (number_literal "0x24c")) () ")"))))) (; ";")) (expression_statement "iVar10 = piVar13[2];" (assignment_expression "iVar10 = piVar13[2]" (identifier "iVar10") (= "=") (subscript_expression "piVar13[2]" (identifier "piVar13") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "piVar13[6] = 0;" (assignment_expression "piVar13[6] = 0" (subscript_expression "piVar13[6]" (identifier "piVar13") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*piVar13 = iVar7 - (piVar13[5] - piVar13[4]);" (assignment_expression "*piVar13 = iVar7 - (piVar13[5] - piVar13[4])" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (= "=") (binary_expression "iVar7 - (piVar13[5] - piVar13[4])" (identifier "iVar7") (- "-") (parenthesized_expression "(piVar13[5] - piVar13[4])" (( "(") (binary_expression "piVar13[5] - piVar13[4]" (subscript_expression "piVar13[5]" (identifier "piVar13") ([ "[") (number_literal "5") (] "]")) (- "-") (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]"))) () ")")))) (; ";")) (if_statement "if ((uVar3 != 0) && (uVar3 = 0, iVar10 - 0x5eU < 2)) {\n    FUN_00047058(piVar13);\n    if (piVar13[2] == 0x5f) {\n      FUN_00047058();\n    }\n    aiStack_154[2] = 2;\n    aiStack_154[0] = piVar13[6] + 4;\n    FUN_00047b74(piVar13,&iStack_15c,&iStack_158);\n    if (iStack_15c == 0) {\n      iVar10 = piVar13[2];\n      uVar3 = 0;\n    }\n    else {\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }\n  }" (if "if") (parenthesized_expression "((uVar3 != 0) && (uVar3 = 0, iVar10 - 0x5eU < 2))" (( "(") (binary_expression "(uVar3 != 0) && (uVar3 = 0, iVar10 - 0x5eU < 2)" (parenthesized_expression "(uVar3 != 0)" (( "(") (binary_expression "uVar3 != 0" (identifier "uVar3") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar3 = 0, iVar10 - 0x5eU < 2)" (( "(") (comma_expression "uVar3 = 0, iVar10 - 0x5eU < 2" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (, ",") (binary_expression "iVar10 - 0x5eU < 2" (binary_expression "iVar10 - 0x5eU" (identifier "iVar10") (- "-") (number_literal "0x5eU")) (< "<") (number_literal "2"))) () ")"))) () ")")) (compound_statement "{\n    FUN_00047058(piVar13);\n    if (piVar13[2] == 0x5f) {\n      FUN_00047058();\n    }\n    aiStack_154[2] = 2;\n    aiStack_154[0] = piVar13[6] + 4;\n    FUN_00047b74(piVar13,&iStack_15c,&iStack_158);\n    if (iStack_15c == 0) {\n      iVar10 = piVar13[2];\n      uVar3 = 0;\n    }\n    else {\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }\n  }" ({ "{") (expression_statement "FUN_00047058(piVar13);" (call_expression "FUN_00047058(piVar13)" (identifier "FUN_00047058") (argument_list "(piVar13)" (( "(") (identifier "piVar13") () ")"))) (; ";")) (if_statement "if (piVar13[2] == 0x5f) {\n      FUN_00047058();\n    }" (if "if") (parenthesized_expression "(piVar13[2] == 0x5f)" (( "(") (binary_expression "piVar13[2] == 0x5f" (subscript_expression "piVar13[2]" (identifier "piVar13") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0x5f")) () ")")) (compound_statement "{\n      FUN_00047058();\n    }" ({ "{") (expression_statement "FUN_00047058();" (call_expression "FUN_00047058()" (identifier "FUN_00047058") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "aiStack_154[2] = 2;" (assignment_expression "aiStack_154[2] = 2" (subscript_expression "aiStack_154[2]" (identifier "aiStack_154") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "2")) (; ";")) (expression_statement "aiStack_154[0] = piVar13[6] + 4;" (assignment_expression "aiStack_154[0] = piVar13[6] + 4" (subscript_expression "aiStack_154[0]" (identifier "aiStack_154") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "piVar13[6] + 4" (subscript_expression "piVar13[6]" (identifier "piVar13") ([ "[") (number_literal "6") (] "]")) (+ "+") (number_literal "4"))) (; ";")) (expression_statement "FUN_00047b74(piVar13,&iStack_15c,&iStack_158);" (call_expression "FUN_00047b74(piVar13,&iStack_15c,&iStack_158)" (identifier "FUN_00047b74") (argument_list "(piVar13,&iStack_15c,&iStack_158)" (( "(") (identifier "piVar13") (, ",") (pointer_expression "&iStack_15c" (& "&") (identifier "iStack_15c")) (, ",") (pointer_expression "&iStack_158" (& "&") (identifier "iStack_158")) () ")"))) (; ";")) (if_statement "if (iStack_15c == 0) {\n      iVar10 = piVar13[2];\n      uVar3 = 0;\n    }\n    else {\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }" (if "if") (parenthesized_expression "(iStack_15c == 0)" (( "(") (binary_expression "iStack_15c == 0" (identifier "iStack_15c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar10 = piVar13[2];\n      uVar3 = 0;\n    }" ({ "{") (expression_statement "iVar10 = piVar13[2];" (assignment_expression "iVar10 = piVar13[2]" (identifier "iVar10") (= "=") (subscript_expression "piVar13[2]" (identifier "piVar13") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }" (else "else") (compound_statement "{\n      uVar3 = 1;\n      iVar10 = piVar13[2];\n    }" ({ "{") (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" (identifier "uVar3") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar10 = piVar13[2];" (assignment_expression "iVar10 = piVar13[2]" (identifier "iVar10") (= "=") (subscript_expression "piVar13[2]" (identifier "piVar13") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}")))) (} "}"))) (if_statement "if (iVar10 == 0x32) {\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar17 = &iStack_158;\n      piVar15 = &iStack_15c;\n      piVar13[6] = 0;\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }" (if "if") (parenthesized_expression "(iVar10 == 0x32)" (( "(") (binary_expression "iVar10 == 0x32" (identifier "iVar10") (== "==") (number_literal "0x32")) () ")")) (compound_statement "{\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar17 = &iStack_158;\n      piVar15 = &iStack_15c;\n      piVar13[6] = 0;\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }" ({ "{") (expression_statement "iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);" (assignment_expression "iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b)" (identifier "iVar10") (= "=") (call_expression "(**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b)" (parenthesized_expression "(**(code **)(pcVar20 + 0xc5760))" (( "(") (pointer_expression "**(code **)(pcVar20 + 0xc5760)" (* "*") (pointer_expression "*(code **)(pcVar20 + 0xc5760)" (* "*") (cast_expression "(code **)(pcVar20 + 0xc5760)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar20 + 0xc5760)" (( "(") (binary_expression "pcVar20 + 0xc5760" (identifier "pcVar20") (+ "+") (number_literal "0xc5760")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(iVar1 + 0x248),0x7b)" (( "(") (pointer_expression "*(undefined4 *)(iVar1 + 0x248)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x248)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x248)" (( "(") (binary_expression "iVar1 + 0x248" (identifier "iVar1") (+ "+") (number_literal "0x248")) () ")")))) (, ",") (number_literal "0x7b") () ")")))) (; ";")) (if_statement "if (iVar10 != 0) {\n      piVar17 = &iStack_158;\n      piVar15 = &iStack_15c;\n      piVar13[6] = 0;\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_0004bd10;\n    }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      piVar17 = &iStack_158;\n      piVar15 = &iStack_15c;\n      piVar13[6] = 0;\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      FUN_00047b74(piVar13,piVar15,piVar17);\n      if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_0004bd10;\n    }" ({ "{") (expression_statement "piVar17 = &iStack_158;" (assignment_expression "piVar17 = &iStack_158" (identifier "piVar17") (= "=") (pointer_expression "&iStack_158" (& "&") (identifier "iStack_158"))) (; ";")) (expression_statement "piVar15 = &iStack_15c;" (assignment_expression "piVar15 = &iStack_15c" (identifier "piVar15") (= "=") (pointer_expression "&iStack_15c" (& "&") (identifier "iStack_15c"))) (; ";")) (expression_statement "piVar13[6] = 0;" (assignment_expression "piVar13[6] = 0" (subscript_expression "piVar13[6]" (identifier "piVar13") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00047b74(piVar13,piVar15,piVar17);" (call_expression "FUN_00047b74(piVar13,piVar15,piVar17)" (identifier "FUN_00047b74") (argument_list "(piVar13,piVar15,piVar17)" (( "(") (identifier "piVar13") (, ",") (identifier "piVar15") (, ",") (identifier "piVar17") () ")"))) (; ";")) (expression_statement "FUN_00047b74(piVar13,piVar15,piVar17);" (call_expression "FUN_00047b74(piVar13,piVar15,piVar17)" (identifier "FUN_00047b74") (argument_list "(piVar13,piVar15,piVar17)" (( "(") (identifier "piVar13") (, ",") (identifier "piVar15") (, ",") (identifier "piVar17") () ")"))) (; ";")) (expression_statement "FUN_00047b74(piVar13,piVar15,piVar17);" (call_expression "FUN_00047b74(piVar13,piVar15,piVar17)" (identifier "FUN_00047b74") (argument_list "(piVar13,piVar15,piVar17)" (( "(") (identifier "piVar13") (, ",") (identifier "piVar15") (, ",") (identifier "piVar17") () ")"))) (; ";")) (if_statement "if (iStack_158 == 8) {\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "(iStack_158 == 8)" (( "(") (binary_expression "iStack_158 == 8" (identifier "iStack_158") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n        iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);\n        if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }\n      }" ({ "{") (expression_statement "iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);" (assignment_expression "iVar10 = (**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8)" (identifier "iVar10") (= "=") (call_expression "(**(code **)(pcVar20 + 0xc67dc))\n                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8)" (parenthesized_expression "(**(code **)(pcVar20 + 0xc67dc))" (( "(") (pointer_expression "**(code **)(pcVar20 + 0xc67dc)" (* "*") (pointer_expression "*(code **)(pcVar20 + 0xc67dc)" (* "*") (cast_expression "(code **)(pcVar20 + 0xc67dc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar20 + 0xc67dc)" (( "(") (binary_expression "pcVar20 + 0xc67dc" (identifier "pcVar20") (+ "+") (number_literal "0xc67dc")) () ")"))))) () ")")) (argument_list "(iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8)" (( "(") (identifier "iStack_15c") (, ",") (binary_expression "*(int *)(pcVar20 + 0xc56a4) + -0x469c" (pointer_expression "*(int *)(pcVar20 + 0xc56a4)" (* "*") (cast_expression "(int *)(pcVar20 + 0xc56a4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar20 + 0xc56a4)" (( "(") (binary_expression "pcVar20 + 0xc56a4" (identifier "pcVar20") (+ "+") (number_literal "0xc56a4")) () ")")))) (+ "+") (number_literal "-0x469c")) (, ",") (number_literal "8") () ")")))) (; ";")) (if_statement "if (iVar10 == 0) {\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar10 = piVar13[6];\n          if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }\n          aiStack_154[uVar3 * 3] = iVar10;\n          aiStack_154[uVar3 * 3 + 2] = 1;\n          FUN_00047b74(piVar13,piVar15,piVar17);\n          if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }\n        }" ({ "{") (expression_statement "iVar10 = piVar13[6];" (assignment_expression "iVar10 = piVar13[6]" (identifier "iVar10") (= "=") (subscript_expression "piVar13[6]" (identifier "piVar13") ([ "[") (number_literal "6") (] "]"))) (; ";")) (if_statement "if (0 < *piVar13 - iVar10) {\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }" (if "if") (parenthesized_expression "(0 < *piVar13 - iVar10)" (( "(") (binary_expression "0 < *piVar13 - iVar10" (number_literal "0") (< "<") (binary_expression "*piVar13 - iVar10" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (- "-") (identifier "iVar10"))) () ")")) (compound_statement "{\n            iVar10 = iVar10 + 1;\n            piVar13[6] = iVar10;\n          }" ({ "{") (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar13[6] = iVar10;" (assignment_expression "piVar13[6] = iVar10" (subscript_expression "piVar13[6]" (identifier "piVar13") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "iVar10")) (; ";")) (} "}"))) (expression_statement "aiStack_154[uVar3 * 3] = iVar10;" (assignment_expression "aiStack_154[uVar3 * 3] = iVar10" (subscript_expression "aiStack_154[uVar3 * 3]" (identifier "aiStack_154") ([ "[") (binary_expression "uVar3 * 3" (identifier "uVar3") (* "*") (number_literal "3")) (] "]")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "aiStack_154[uVar3 * 3 + 2] = 1;" (assignment_expression "aiStack_154[uVar3 * 3 + 2] = 1" (subscript_expression "aiStack_154[uVar3 * 3 + 2]" (identifier "aiStack_154") ([ "[") (binary_expression "uVar3 * 3 + 2" (binary_expression "uVar3 * 3" (identifier "uVar3") (* "*") (number_literal "3")) (+ "+") (number_literal "2")) (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_00047b74(piVar13,piVar15,piVar17);" (call_expression "FUN_00047b74(piVar13,piVar15,piVar17)" (identifier "FUN_00047b74") (argument_list "(piVar13,piVar15,piVar17)" (( "(") (identifier "piVar13") (, ",") (identifier "piVar15") (, ",") (identifier "piVar17") () ")"))) (; ";")) (if_statement "if (iStack_15c != 0) {\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }" (if "if") (parenthesized_expression "(iStack_15c != 0)" (( "(") (binary_expression "iStack_15c != 0" (identifier "iStack_15c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            piVar18 = (int *)(uVar3 + 1);\n            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n            FUN_00047b74(piVar13,piVar15,piVar17);\n            piVar15 = piVar18;\n            if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }\n          }" ({ "{") (expression_statement "piVar18 = (int *)(uVar3 + 1);" (assignment_expression "piVar18 = (int *)(uVar3 + 1)" (identifier "piVar18") (= "=") (cast_expression "(int *)(uVar3 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar3 + 1)" (( "(") (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];" (assignment_expression "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3]" (subscript_expression "aiStack_154[uVar3 * 3 + 1]" (identifier "aiStack_154") ([ "[") (binary_expression "uVar3 * 3 + 1" (binary_expression "uVar3 * 3" (identifier "uVar3") (* "*") (number_literal "3")) (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "piVar13[6] - aiStack_154[uVar3 * 3]" (subscript_expression "piVar13[6]" (identifier "piVar13") ([ "[") (number_literal "6") (] "]")) (- "-") (subscript_expression "aiStack_154[uVar3 * 3]" (identifier "aiStack_154") ([ "[") (binary_expression "uVar3 * 3" (identifier "uVar3") (* "*") (number_literal "3")) (] "]")))) (; ";")) (expression_statement "FUN_00047b74(piVar13,piVar15,piVar17);" (call_expression "FUN_00047b74(piVar13,piVar15,piVar17)" (identifier "FUN_00047b74") (argument_list "(piVar13,piVar15,piVar17)" (( "(") (identifier "piVar13") (, ",") (identifier "piVar15") (, ",") (identifier "piVar17") () ")"))) (; ";")) (expression_statement "piVar15 = piVar18;" (assignment_expression "piVar15 = piVar18" (identifier "piVar15") (= "=") (identifier "piVar18")) (; ";")) (if_statement "if (iStack_15c != 0) {\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }" (if "if") (parenthesized_expression "(iStack_15c != 0)" (( "(") (binary_expression "iStack_15c != 0" (identifier "iStack_15c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];\n            }" ({ "{") (expression_statement "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];" (assignment_expression "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3]" (subscript_expression "aiStack_154[uVar3 * 3 + 1]" (identifier "aiStack_154") ([ "[") (binary_expression "uVar3 * 3 + 1" (binary_expression "uVar3 * 3" (identifier "uVar3") (* "*") (number_literal "3")) (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "piVar13[6] - aiStack_154[(int)piVar18 * 3]" (subscript_expression "piVar13[6]" (identifier "piVar13") ([ "[") (number_literal "6") (] "]")) (- "-") (subscript_expression "aiStack_154[(int)piVar18 * 3]" (identifier "aiStack_154") ([ "[") (binary_expression "(int)piVar18 * 3" (cast_expression "(int)piVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar18")) (* "*") (number_literal "3")) (] "]")))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (goto_statement "goto LAB_0004bd10;" (goto "goto") (statement_identifier "LAB_0004bd10") (; ";")) (} "}"))) (expression_statement "iVar10 = piVar13[2];" (assignment_expression "iVar10 = piVar13[2]" (identifier "iVar10") (= "=") (subscript_expression "piVar13[2]" (identifier "piVar13") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}"))) (if_statement "if ((*(int *)(iVar1 + 0x188) == 4) && (iVar10 == 0x3d)) {\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar13[6] = 0;\n      piVar17 = &iStack_158;\n      FUN_00047058(piVar13);\n      aiStack_154[uVar3 * 3] = piVar13[6];\n      aiStack_154[uVar3 * 3 + 2] = 1;\n      do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n      piVar15 = &iStack_15c;\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }" (if "if") (parenthesized_expression "((*(int *)(iVar1 + 0x188) == 4) && (iVar10 == 0x3d))" (( "(") (binary_expression "(*(int *)(iVar1 + 0x188) == 4) && (iVar10 == 0x3d)" (parenthesized_expression "(*(int *)(iVar1 + 0x188) == 4)" (( "(") (binary_expression "*(int *)(iVar1 + 0x188) == 4" (pointer_expression "*(int *)(iVar1 + 0x188)" (* "*") (cast_expression "(int *)(iVar1 + 0x188)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x188)" (( "(") (binary_expression "iVar1 + 0x188" (identifier "iVar1") (+ "+") (number_literal "0x188")) () ")")))) (== "==") (number_literal "4")) () ")")) (&& "&&") (parenthesized_expression "(iVar10 == 0x3d)" (( "(") (binary_expression "iVar10 == 0x3d" (identifier "iVar10") (== "==") (number_literal "0x3d")) () ")"))) () ")")) (compound_statement "{\n    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);\n    if (iVar10 != 0) {\n      piVar13[6] = 0;\n      piVar17 = &iStack_158;\n      FUN_00047058(piVar13);\n      aiStack_154[uVar3 * 3] = piVar13[6];\n      aiStack_154[uVar3 * 3 + 2] = 1;\n      do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n      piVar15 = &iStack_15c;\n      goto LAB_0004bd10;\n    }\n    iVar10 = piVar13[2];\n  }" ({ "{") (expression_statement "iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);" (assignment_expression "iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b)" (identifier "iVar10") (= "=") (call_expression "(**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b)" (parenthesized_expression "(**(code **)(pcVar20 + 0xc5760))" (( "(") (pointer_expression "**(code **)(pcVar20 + 0xc5760)" (* "*") (pointer_expression "*(code **)(pcVar20 + 0xc5760)" (* "*") (cast_expression "(code **)(pcVar20 + 0xc5760)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar20 + 0xc5760)" (( "(") (binary_expression "pcVar20 + 0xc5760" (identifier "pcVar20") (+ "+") (number_literal "0xc5760")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(iVar1 + 0x248),0x7b)" (( "(") (pointer_expression "*(undefined4 *)(iVar1 + 0x248)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x248)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x248)" (( "(") (binary_expression "iVar1 + 0x248" (identifier "iVar1") (+ "+") (number_literal "0x248")) () ")")))) (, ",") (number_literal "0x7b") () ")")))) (; ";")) (if_statement "if (iVar10 != 0) {\n      piVar13[6] = 0;\n      piVar17 = &iStack_158;\n      FUN_00047058(piVar13);\n      aiStack_154[uVar3 * 3] = piVar13[6];\n      aiStack_154[uVar3 * 3 + 2] = 1;\n      do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n      piVar15 = &iStack_15c;\n      goto LAB_0004bd10;\n    }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      piVar13[6] = 0;\n      piVar17 = &iStack_158;\n      FUN_00047058(piVar13);\n      aiStack_154[uVar3 * 3] = piVar13[6];\n      aiStack_154[uVar3 * 3 + 2] = 1;\n      do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n      piVar15 = &iStack_15c;\n      goto LAB_0004bd10;\n    }" ({ "{") (expression_statement "piVar13[6] = 0;" (assignment_expression "piVar13[6] = 0" (subscript_expression "piVar13[6]" (identifier "piVar13") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar17 = &iStack_158;" (assignment_expression "piVar17 = &iStack_158" (identifier "piVar17") (= "=") (pointer_expression "&iStack_158" (& "&") (identifier "iStack_158"))) (; ";")) (expression_statement "FUN_00047058(piVar13);" (call_expression "FUN_00047058(piVar13)" (identifier "FUN_00047058") (argument_list "(piVar13)" (( "(") (identifier "piVar13") () ")"))) (; ";")) (expression_statement "aiStack_154[uVar3 * 3] = piVar13[6];" (assignment_expression "aiStack_154[uVar3 * 3] = piVar13[6]" (subscript_expression "aiStack_154[uVar3 * 3]" (identifier "aiStack_154") ([ "[") (binary_expression "uVar3 * 3" (identifier "uVar3") (* "*") (number_literal "3")) (] "]")) (= "=") (subscript_expression "piVar13[6]" (identifier "piVar13") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "aiStack_154[uVar3 * 3 + 2] = 1;" (assignment_expression "aiStack_154[uVar3 * 3 + 2] = 1" (subscript_expression "aiStack_154[uVar3 * 3 + 2]" (identifier "aiStack_154") ([ "[") (binary_expression "uVar3 * 3 + 2" (binary_expression "uVar3 * 3" (identifier "uVar3") (* "*") (number_literal "3")) (+ "+") (number_literal "2")) (] "]")) (= "=") (number_literal "1")) (; ";")) (do_statement "do {\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      } while (iStack_15c != 0);" (do "do") (compound_statement "{\n        FUN_00047b74(piVar13,&iStack_15c,piVar17);\n      }" ({ "{") (expression_statement "FUN_00047b74(piVar13,&iStack_15c,piVar17);" (call_expression "FUN_00047b74(piVar13,&iStack_15c,piVar17)" (identifier "FUN_00047b74") (argument_list "(piVar13,&iStack_15c,piVar17)" (( "(") (identifier "piVar13") (, ",") (pointer_expression "&iStack_15c" (& "&") (identifier "iStack_15c")) (, ",") (identifier "piVar17") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iStack_15c != 0)" (( "(") (binary_expression "iStack_15c != 0" (identifier "iStack_15c") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];" (assignment_expression "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3]" (subscript_expression "aiStack_154[uVar3 * 3 + 1]" (identifier "aiStack_154") ([ "[") (binary_expression "uVar3 * 3 + 1" (binary_expression "uVar3 * 3" (identifier "uVar3") (* "*") (number_literal "3")) (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "piVar13[6] - aiStack_154[uVar3 * 3]" (subscript_expression "piVar13[6]" (identifier "piVar13") ([ "[") (number_literal "6") (] "]")) (- "-") (subscript_expression "aiStack_154[uVar3 * 3]" (identifier "aiStack_154") ([ "[") (binary_expression "uVar3 * 3" (identifier "uVar3") (* "*") (number_literal "3")) (] "]")))) (; ";")) (expression_statement "piVar15 = &iStack_15c;" (assignment_expression "piVar15 = &iStack_15c" (identifier "piVar15") (= "=") (pointer_expression "&iStack_15c" (& "&") (identifier "iStack_15c"))) (; ";")) (goto_statement "goto LAB_0004bd10;" (goto "goto") (statement_identifier "LAB_0004bd10") (; ";")) (} "}"))) (expression_statement "iVar10 = piVar13[2];" (assignment_expression "iVar10 = piVar13[2]" (identifier "iVar10") (= "=") (subscript_expression "piVar13[2]" (identifier "piVar13") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}"))) (if_statement "if ((iVar10 == 0x62) &&\n     (iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0))\n  {\n    piVar13[6] = 0;\n    piVar17 = &iStack_158;\n    piVar15 = &iStack_15c;\n    FUN_00047058(piVar13);\n    FUN_00047b74();\n    if (iStack_158 == 7) {\n      iVar7 = piVar13[6];\n      iVar10 = iVar7 + 1;\n      piVar18 = piVar15;\n      if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;\n      if (*piVar13 - iVar10 < 1) goto LAB_0004c510;\n      piVar13[6] = iVar7 + 2;\n      goto LAB_0004c1fc;\n    }\n  }" (if "if") (parenthesized_expression "((iVar10 == 0x62) &&\n     (iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0))" (( "(") (binary_expression "(iVar10 == 0x62) &&\n     (iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0)" (parenthesized_expression "(iVar10 == 0x62)" (( "(") (binary_expression "iVar10 == 0x62" (identifier "iVar10") (== "==") (number_literal "0x62")) () ")")) (&& "&&") (parenthesized_expression "(iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0)" (( "(") (comma_expression "iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0" (assignment_expression "iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b)" (identifier "iVar10") (= "=") (call_expression "(**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b)" (parenthesized_expression "(**(code **)(pcVar20 + 0xc5760))" (( "(") (pointer_expression "**(code **)(pcVar20 + 0xc5760)" (* "*") (pointer_expression "*(code **)(pcVar20 + 0xc5760)" (* "*") (cast_expression "(code **)(pcVar20 + 0xc5760)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar20 + 0xc5760)" (( "(") (binary_expression "pcVar20 + 0xc5760" (identifier "pcVar20") (+ "+") (number_literal "0xc5760")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(iVar1 + 0x248),0x7b)" (( "(") (pointer_expression "*(undefined4 *)(iVar1 + 0x248)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x248)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x248)" (( "(") (binary_expression "iVar1 + 0x248" (identifier "iVar1") (+ "+") (number_literal "0x248")) () ")")))) (, ",") (number_literal "0x7b") () ")")))) (, ",") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    piVar13[6] = 0;\n    piVar17 = &iStack_158;\n    piVar15 = &iStack_15c;\n    FUN_00047058(piVar13);\n    FUN_00047b74();\n    if (iStack_158 == 7) {\n      iVar7 = piVar13[6];\n      iVar10 = iVar7 + 1;\n      piVar18 = piVar15;\n      if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;\n      if (*piVar13 - iVar10 < 1) goto LAB_0004c510;\n      piVar13[6] = iVar7 + 2;\n      goto LAB_0004c1fc;\n    }\n  }" ({ "{") (expression_statement "piVar13[6] = 0;" (assignment_expression "piVar13[6] = 0" (subscript_expression "piVar13[6]" (identifier "piVar13") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar17 = &iStack_158;" (assignment_expression "piVar17 = &iStack_158" (identifier "piVar17") (= "=") (pointer_expression "&iStack_158" (& "&") (identifier "iStack_158"))) (; ";")) (expression_statement "piVar15 = &iStack_15c;" (assignment_expression "piVar15 = &iStack_15c" (identifier "piVar15") (= "=") (pointer_expression "&iStack_15c" (& "&") (identifier "iStack_15c"))) (; ";")) (expression_statement "FUN_00047058(piVar13);" (call_expression "FUN_00047058(piVar13)" (identifier "FUN_00047058") (argument_list "(piVar13)" (( "(") (identifier "piVar13") () ")"))) (; ";")) (expression_statement "FUN_00047b74();" (call_expression "FUN_00047b74()" (identifier "FUN_00047b74") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (iStack_158 == 7) {\n      iVar7 = piVar13[6];\n      iVar10 = iVar7 + 1;\n      piVar18 = piVar15;\n      if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;\n      if (*piVar13 - iVar10 < 1) goto LAB_0004c510;\n      piVar13[6] = iVar7 + 2;\n      goto LAB_0004c1fc;\n    }" (if "if") (parenthesized_expression "(iStack_158 == 7)" (( "(") (binary_expression "iStack_158 == 7" (identifier "iStack_158") (== "==") (number_literal "7")) () ")")) (compound_statement "{\n      iVar7 = piVar13[6];\n      iVar10 = iVar7 + 1;\n      piVar18 = piVar15;\n      if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;\n      if (*piVar13 - iVar10 < 1) goto LAB_0004c510;\n      piVar13[6] = iVar7 + 2;\n      goto LAB_0004c1fc;\n    }" ({ "{") (expression_statement "iVar7 = piVar13[6];" (assignment_expression "iVar7 = piVar13[6]" (identifier "iVar7") (= "=") (subscript_expression "piVar13[6]" (identifier "piVar13") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "iVar10 = iVar7 + 1;" (assignment_expression "iVar10 = iVar7 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar18 = piVar15;" (assignment_expression "piVar18 = piVar15" (identifier "piVar18") (= "=") (identifier "piVar15")) (; ";")) (if_statement "if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;" (if "if") (parenthesized_expression "(*piVar13 - iVar7 < 1)" (( "(") (binary_expression "*piVar13 - iVar7 < 1" (binary_expression "*piVar13 - iVar7" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (- "-") (identifier "iVar7")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_0004c1fc;" (goto "goto") (statement_identifier "LAB_0004c1fc") (; ";"))) (if_statement "if (*piVar13 - iVar10 < 1) goto LAB_0004c510;" (if "if") (parenthesized_expression "(*piVar13 - iVar10 < 1)" (( "(") (binary_expression "*piVar13 - iVar10 < 1" (binary_expression "*piVar13 - iVar10" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (- "-") (identifier "iVar10")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_0004c510;" (goto "goto") (statement_identifier "LAB_0004c510") (; ";"))) (expression_statement "piVar13[6] = iVar7 + 2;" (assignment_expression "piVar13[6] = iVar7 + 2" (subscript_expression "piVar13[6]" (identifier "piVar13") ([ "[") (number_literal "6") (] "]")) (= "=") (binary_expression "iVar7 + 2" (identifier "iVar7") (+ "+") (number_literal "2"))) (; ";")) (goto_statement "goto LAB_0004c1fc;" (goto "goto") (statement_identifier "LAB_0004c1fc") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_0004bd10:\n  do {\n    FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5));\n    log_packet(*(undefined4 *)(iVar1 + 0x18),1);\n    iVar7 = (piVar13[5] - piVar13[4]) + *piVar13;\n    *piVar13 = iVar7;\nLAB_0004bd94:\n    uVar3 = *(uint *)(iVar1 + 0xec);\n    if (uVar3 == 0) {\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }\n    else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }\n    if (iStack_124 == *piVar16) {\n      return iVar10;\n    }\n    iVar10 = iStack_124;\n    (**(code **)(pcVar20 + 0xc6674))();\nLAB_0004c510:\n    piVar13[6] = iVar10;\n    piVar18 = piVar15;\nLAB_0004c1fc:\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    iVar10 = piVar13[6];\n    piVar15 = aiStack_120 + uVar3 * 3;\n    aiStack_154[uVar3 * 3 + 2] = 1;\n    aiStack_154[uVar3 * 3] = iVar10;\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    if (iStack_15c != 0) {\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }\n  } while( true );" (statement_identifier "LAB_0004bd10") (: ":") (do_statement "do {\n    FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5));\n    log_packet(*(undefined4 *)(iVar1 + 0x18),1);\n    iVar7 = (piVar13[5] - piVar13[4]) + *piVar13;\n    *piVar13 = iVar7;\nLAB_0004bd94:\n    uVar3 = *(uint *)(iVar1 + 0xec);\n    if (uVar3 == 0) {\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }\n    else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }\n    if (iStack_124 == *piVar16) {\n      return iVar10;\n    }\n    iVar10 = iStack_124;\n    (**(code **)(pcVar20 + 0xc6674))();\nLAB_0004c510:\n    piVar13[6] = iVar10;\n    piVar18 = piVar15;\nLAB_0004c1fc:\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    iVar10 = piVar13[6];\n    piVar15 = aiStack_120 + uVar3 * 3;\n    aiStack_154[uVar3 * 3 + 2] = 1;\n    aiStack_154[uVar3 * 3] = iVar10;\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    if (iStack_15c != 0) {\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }\n  } while( true );" (do "do") (compound_statement "{\n    FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5));\n    log_packet(*(undefined4 *)(iVar1 + 0x18),1);\n    iVar7 = (piVar13[5] - piVar13[4]) + *piVar13;\n    *piVar13 = iVar7;\nLAB_0004bd94:\n    uVar3 = *(uint *)(iVar1 + 0xec);\n    if (uVar3 == 0) {\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }\n    else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }\n    if (iStack_124 == *piVar16) {\n      return iVar10;\n    }\n    iVar10 = iStack_124;\n    (**(code **)(pcVar20 + 0xc6674))();\nLAB_0004c510:\n    piVar13[6] = iVar10;\n    piVar18 = piVar15;\nLAB_0004c1fc:\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    iVar10 = piVar13[6];\n    piVar15 = aiStack_120 + uVar3 * 3;\n    aiStack_154[uVar3 * 3 + 2] = 1;\n    aiStack_154[uVar3 * 3] = iVar10;\n    FUN_00047b74(piVar13,piVar18,piVar17);\n    if (iStack_15c != 0) {\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }\n  }" ({ "{") (expression_statement "FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5));" (call_expression "FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5))" (identifier "FUN_00049dfc") (argument_list "(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),\n                 *(undefined1 *)(piVar13[4] + 5))" (( "(") (pointer_expression "*(undefined4 *)(iVar1 + 0x184)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x184)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x184)" (( "(") (binary_expression "iVar1 + 0x184" (identifier "iVar1") (+ "+") (number_literal "0x184")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar1 + 0x188)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x188)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x188)" (( "(") (binary_expression "iVar1 + 0x188" (identifier "iVar1") (+ "+") (number_literal "0x188")) () ")")))) (, ",") (pointer_expression "*(undefined1 *)(piVar13[4] + 5)" (* "*") (cast_expression "(undefined1 *)(piVar13[4] + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar13[4] + 5)" (( "(") (binary_expression "piVar13[4] + 5" (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "5")) () ")")))) () ")"))) (; ";")) (expression_statement "log_packet(*(undefined4 *)(iVar1 + 0x18),1);" (call_expression "log_packet(*(undefined4 *)(iVar1 + 0x18),1)" (identifier "log_packet") (argument_list "(*(undefined4 *)(iVar1 + 0x18),1)" (( "(") (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x18)" (( "(") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "iVar7 = (piVar13[5] - piVar13[4]) + *piVar13;" (assignment_expression "iVar7 = (piVar13[5] - piVar13[4]) + *piVar13" (identifier "iVar7") (= "=") (binary_expression "(piVar13[5] - piVar13[4]) + *piVar13" (parenthesized_expression "(piVar13[5] - piVar13[4])" (( "(") (binary_expression "piVar13[5] - piVar13[4]" (subscript_expression "piVar13[5]" (identifier "piVar13") ([ "[") (number_literal "5") (] "]")) (- "-") (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]"))) () ")")) (+ "+") (pointer_expression "*piVar13" (* "*") (identifier "piVar13")))) (; ";")) (expression_statement "*piVar13 = iVar7;" (assignment_expression "*piVar13 = iVar7" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (= "=") (identifier "iVar7")) (; ";")) (labeled_statement "LAB_0004bd94:\n    uVar3 = *(uint *)(iVar1 + 0xec);" (statement_identifier "LAB_0004bd94") (: ":") (expression_statement "uVar3 = *(uint *)(iVar1 + 0xec);" (assignment_expression "uVar3 = *(uint *)(iVar1 + 0xec)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(iVar1 + 0xec)" (* "*") (cast_expression "(uint *)(iVar1 + 0xec)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xec)" (( "(") (binary_expression "iVar1 + 0xec" (identifier "iVar1") (+ "+") (number_literal "0xec")) () ")"))))) (; ";"))) (if_statement "if (uVar3 == 0) {\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }\n    else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }" (if "if") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }\n      if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }\n      iVar12 = *(int *)(iVar1 + 0x70);\n      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      if (iVar10 == 0) {\n        trap(7);\n      }\n      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;\n      if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }\n      piVar15 = (int *)0x0;\n      if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }\n      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }\n      *(char *)(piVar13[4] + 4) = (char)uVar14;\n      uVar11 = 0;\n      if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }\n      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);\n      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);\n      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);\n      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);\n      *(char *)(piVar13[4] + 3) = (char)piVar17;\n      iVar10 = *(int *)(iVar1 + 0x60);\n      if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }\nLAB_0004bfe0:\n      iVar7 = *piVar13;\n      iVar10 = uVar14 + iVar7 + (int)piVar15;\n      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;\n      piVar13[8] = uVar14 + iVar7;\n      piVar13[5] = iVar12;\n    }" ({ "{") (if_statement "if (*(int *)(iVar1 + 0x88) != 0) {\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }" (if "if") (parenthesized_expression "(*(int *)(iVar1 + 0x88) != 0)" (( "(") (binary_expression "*(int *)(iVar1 + 0x88) != 0" (pointer_expression "*(int *)(iVar1 + 0x88)" (* "*") (cast_expression "(int *)(iVar1 + 0x88)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x88)" (( "(") (binary_expression "iVar1 + 0x88" (identifier "iVar1") (+ "+") (number_literal "0x88")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);\n        if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }\n      }" ({ "{") (expression_statement "iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158);" (assignment_expression "iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158)" (identifier "iVar10") (= "=") (call_expression "(**(code **)(*(int *)(iVar1 + 0x88) + 0x10))\n                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158)" (parenthesized_expression "(**(code **)(*(int *)(iVar1 + 0x88) + 0x10))" (( "(") (pointer_expression "**(code **)(*(int *)(iVar1 + 0x88) + 0x10)" (* "*") (pointer_expression "*(code **)(*(int *)(iVar1 + 0x88) + 0x10)" (* "*") (cast_expression "(code **)(*(int *)(iVar1 + 0x88) + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(iVar1 + 0x88) + 0x10)" (( "(") (binary_expression "*(int *)(iVar1 + 0x88) + 0x10" (pointer_expression "*(int *)(iVar1 + 0x88)" (* "*") (cast_expression "(int *)(iVar1 + 0x88)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x88)" (( "(") (binary_expression "iVar1 + 0x88" (identifier "iVar1") (+ "+") (number_literal "0x88")) () ")")))) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,\n                            &iStack_158)" (( "(") (pointer_expression "*(undefined4 *)(iVar1 + 0x90)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x90)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x90)" (( "(") (binary_expression "iVar1 + 0x90" (identifier "iVar1") (+ "+") (number_literal "0x90")) () ")")))) (, ",") (binary_expression "piVar13[4] + 5" (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "5")) (, ",") (binary_expression "iVar7 + -5" (identifier "iVar7") (+ "+") (number_literal "-5")) (, ",") (pointer_expression "&iStack_15c" (& "&") (identifier "iStack_15c")) (, ",") (pointer_expression "&iStack_158" (& "&") (identifier "iStack_158")) () ")")))) (; ";")) (if_statement "if (iVar10 == 0) {\n          iVar7 = *piVar13;\n        }\n        else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar7 = *piVar13;\n        }" ({ "{") (expression_statement "iVar7 = *piVar13;" (assignment_expression "iVar7 = *piVar13" (identifier "iVar7") (= "=") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) (; ";")) (} "}")) (else_clause "else {\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }" (else "else") (compound_statement "{\n          *piVar13 = 5;\n          FUN_0004b364(piVar13,iStack_15c,iStack_158);\n          safefree(iStack_15c);\n          iVar7 = *piVar13;\n        }" ({ "{") (expression_statement "*piVar13 = 5;" (assignment_expression "*piVar13 = 5" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (= "=") (number_literal "5")) (; ";")) (expression_statement "FUN_0004b364(piVar13,iStack_15c,iStack_158);" (call_expression "FUN_0004b364(piVar13,iStack_15c,iStack_158)" (identifier "FUN_0004b364") (argument_list "(piVar13,iStack_15c,iStack_158)" (( "(") (identifier "piVar13") (, ",") (identifier "iStack_15c") (, ",") (identifier "iStack_158") () ")"))) (; ";")) (expression_statement "safefree(iStack_15c);" (call_expression "safefree(iStack_15c)" (identifier "safefree") (argument_list "(iStack_15c)" (( "(") (identifier "iStack_15c") () ")"))) (; ";")) (expression_statement "iVar7 = *piVar13;" (assignment_expression "iVar7 = *piVar13" (identifier "iVar7") (= "=") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) (; ";")) (} "}")))) (} "}"))) (if_statement "if (*(int *)(iVar1 + 0x60) == 0) {\n        iVar10 = 8;\n      }\n      else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }" (if "if") (parenthesized_expression "(*(int *)(iVar1 + 0x60) == 0)" (( "(") (binary_expression "*(int *)(iVar1 + 0x60) == 0" (pointer_expression "*(int *)(iVar1 + 0x60)" (* "*") (cast_expression "(int *)(iVar1 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x60)" (( "(") (binary_expression "iVar1 + 0x60" (identifier "iVar1") (+ "+") (number_literal "0x60")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar10 = 8;\n      }" ({ "{") (expression_statement "iVar10 = 8;" (assignment_expression "iVar10 = 8" (identifier "iVar10") (= "=") (number_literal "8")) (; ";")) (} "}")) (else_clause "else {\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }" (else "else") (compound_statement "{\n        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);\n        iVar10 = 8;\n        if (7 < iVar12) {\n          iVar10 = iVar12;\n        }\n      }" ({ "{") (expression_statement "iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);" (assignment_expression "iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(*(int *)(iVar1 + 0x60) + 0x24)" (* "*") (cast_expression "(int *)(*(int *)(iVar1 + 0x60) + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar1 + 0x60) + 0x24)" (( "(") (binary_expression "*(int *)(iVar1 + 0x60) + 0x24" (pointer_expression "*(int *)(iVar1 + 0x60)" (* "*") (cast_expression "(int *)(iVar1 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x60)" (( "(") (binary_expression "iVar1 + 0x60" (identifier "iVar1") (+ "+") (number_literal "0x60")) () ")")))) (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "iVar10 = 8;" (assignment_expression "iVar10 = 8" (identifier "iVar10") (= "=") (number_literal "8")) (; ";")) (if_statement "if (7 < iVar12) {\n          iVar10 = iVar12;\n        }" (if "if") (parenthesized_expression "(7 < iVar12)" (( "(") (binary_expression "7 < iVar12" (number_literal "7") (< "<") (identifier "iVar12")) () ")")) (compound_statement "{\n          iVar10 = iVar12;\n        }" ({ "{") (expression_statement "iVar10 = iVar12;" (assignment_expression "iVar10 = iVar12" (identifier "iVar10") (= "=") (identifier "iVar12")) (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar12 = *(int *)(iVar1 + 0x70);" (assignment_expression "iVar12 = *(int *)(iVar1 + 0x70)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(iVar1 + 0x70)" (* "*") (cast_expression "(int *)(iVar1 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x70)" (( "(") (binary_expression "iVar1 + 0x70" (identifier "iVar1") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (if_statement "if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }\n      else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }" (if "if") (parenthesized_expression "((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0))" (( "(") (binary_expression "(iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)" (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(iVar1 + 0x78) == 0)" (( "(") (binary_expression "*(int *)(iVar1 + 0x78) == 0" (pointer_expression "*(int *)(iVar1 + 0x78)" (* "*") (cast_expression "(int *)(iVar1 + 0x78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x78)" (( "(") (binary_expression "iVar1 + 0x78" (identifier "iVar1") (+ "+") (number_literal "0x78")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        iVar8 = piVar13[1];\n        iVar9 = iVar7;\n        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;\nLAB_0004be1c:\n        iVar8 = iVar8 - iVar7;\n      }" ({ "{") (expression_statement "iVar8 = piVar13[1];" (assignment_expression "iVar8 = piVar13[1]" (identifier "iVar8") (= "=") (subscript_expression "piVar13[1]" (identifier "piVar13") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar9 = iVar7;" (assignment_expression "iVar9 = iVar7" (identifier "iVar9") (= "=") (identifier "iVar7")) (; ";")) (if_statement "if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;" (if "if") (parenthesized_expression "(iVar8 <= iVar7 + 4)" (( "(") (binary_expression "iVar8 <= iVar7 + 4" (identifier "iVar8") (<= "<=") (binary_expression "iVar7 + 4" (identifier "iVar7") (+ "+") (number_literal "4"))) () ")")) (goto_statement "goto LAB_0004c04c;" (goto "goto") (statement_identifier "LAB_0004c04c") (; ";"))) (labeled_statement "LAB_0004be1c:\n        iVar8 = iVar8 - iVar7;" (statement_identifier "LAB_0004be1c") (: ":") (expression_statement "iVar8 = iVar8 - iVar7;" (assignment_expression "iVar8 = iVar8 - iVar7" (identifier "iVar8") (= "=") (binary_expression "iVar8 - iVar7" (identifier "iVar8") (- "-") (identifier "iVar7"))) (; ";"))) (} "}")) (else_clause "else {\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }" (else "else") (compound_statement "{\n        iVar8 = piVar13[1];\n        iVar9 = iVar7 + -4;\n        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;\nLAB_0004c04c:\n        iVar8 = 4;\n      }" ({ "{") (expression_statement "iVar8 = piVar13[1];" (assignment_expression "iVar8 = piVar13[1]" (identifier "iVar8") (= "=") (subscript_expression "piVar13[1]" (identifier "piVar13") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar9 = iVar7 + -4;" (assignment_expression "iVar9 = iVar7 + -4" (identifier "iVar9") (= "=") (binary_expression "iVar7 + -4" (identifier "iVar7") (+ "+") (number_literal "-4"))) (; ";")) (if_statement "if (iVar7 + 4 < iVar8) goto LAB_0004be1c;" (if "if") (parenthesized_expression "(iVar7 + 4 < iVar8)" (( "(") (binary_expression "iVar7 + 4 < iVar8" (binary_expression "iVar7 + 4" (identifier "iVar7") (+ "+") (number_literal "4")) (< "<") (identifier "iVar8")) () ")")) (goto_statement "goto LAB_0004be1c;" (goto "goto") (statement_identifier "LAB_0004be1c") (; ";"))) (labeled_statement "LAB_0004c04c:\n        iVar8 = 4;" (statement_identifier "LAB_0004c04c") (: ":") (expression_statement "iVar8 = 4;" (assignment_expression "iVar8 = 4" (identifier "iVar8") (= "=") (number_literal "4")) (; ";"))) (} "}")))) (if_statement "if (iVar10 == 0) {\n        trap(7);\n      }" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        trap(7);\n      }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (if_statement "if (iVar10 == 0) {\n        trap(7);\n      }" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        trap(7);\n      }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;" (assignment_expression "uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8" (identifier "uVar14") (= "=") (binary_expression "(iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8" (binary_expression "(iVar10 - (iVar8 + iVar9) % iVar10) % iVar10" (parenthesized_expression "(iVar10 - (iVar8 + iVar9) % iVar10)" (( "(") (binary_expression "iVar10 - (iVar8 + iVar9) % iVar10" (identifier "iVar10") (- "-") (binary_expression "(iVar8 + iVar9) % iVar10" (parenthesized_expression "(iVar8 + iVar9)" (( "(") (binary_expression "iVar8 + iVar9" (identifier "iVar8") (+ "+") (identifier "iVar9")) () ")")) (% "%") (identifier "iVar10"))) () ")")) (% "%") (identifier "iVar10")) (+ "+") (identifier "iVar8"))) (; ";")) (if_statement "if (0xff < (int)uVar14) {\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }" (if "if") (parenthesized_expression "(0xff < (int)uVar14)" (( "(") (binary_expression "0xff < (int)uVar14" (number_literal "0xff") (< "<") (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14"))) () ")")) (compound_statement "{\n        iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);\n        return iVar1;\n      }" ({ "{") (expression_statement "iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);" (assignment_expression "iVar1 = (**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0)" (identifier "iVar1") (= "=") (call_expression "(**(code **)(pcVar20 + 0xc62fc))\n                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0)" (parenthesized_expression "(**(code **)(pcVar20 + 0xc62fc))" (( "(") (pointer_expression "**(code **)(pcVar20 + 0xc62fc)" (* "*") (pointer_expression "*(code **)(pcVar20 + 0xc62fc)" (* "*") (cast_expression "(code **)(pcVar20 + 0xc62fc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar20 + 0xc62fc)" (( "(") (binary_expression "pcVar20 + 0xc62fc" (identifier "pcVar20") (+ "+") (number_literal "0xc62fc")) () ")"))))) () ")")) (argument_list "(*(int *)(pcVar20 + 0xc56a4) + -0x54a0,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,\n                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0)" (( "(") (binary_expression "*(int *)(pcVar20 + 0xc56a4) + -0x54a0" (pointer_expression "*(int *)(pcVar20 + 0xc56a4)" (* "*") (cast_expression "(int *)(pcVar20 + 0xc56a4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar20 + 0xc56a4)" (( "(") (binary_expression "pcVar20 + 0xc56a4" (identifier "pcVar20") (+ "+") (number_literal "0xc56a4")) () ")")))) (+ "+") (number_literal "-0x54a0")) (, ",") (binary_expression "*(int *)(pcVar20 + 0xc56a4) + -0x6580" (pointer_expression "*(int *)(pcVar20 + 0xc56a4)" (* "*") (cast_expression "(int *)(pcVar20 + 0xc56a4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar20 + 0xc56a4)" (( "(") (binary_expression "pcVar20 + 0xc56a4" (identifier "pcVar20") (+ "+") (number_literal "0xc56a4")) () ")")))) (+ "+") (number_literal "-0x6580")) (, ",") (number_literal "0x92d") (, ",") (binary_expression "*(int *)(pcVar20 + 0xc56a4) + -0x1ce0" (pointer_expression "*(int *)(pcVar20 + 0xc56a4)" (* "*") (cast_expression "(int *)(pcVar20 + 0xc56a4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar20 + 0xc56a4)" (( "(") (binary_expression "pcVar20 + 0xc56a4" (identifier "pcVar20") (+ "+") (number_literal "0xc56a4")) () ")")))) (+ "+") (number_literal "-0x1ce0")) () ")")))) (; ";")) (return_statement "return iVar1;" (return "return") (identifier "iVar1") (; ";")) (} "}"))) (expression_statement "piVar15 = (int *)0x0;" (assignment_expression "piVar15 = (int *)0x0" (identifier "piVar15") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (iVar12 != 0) {\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }" (if "if") (parenthesized_expression "(iVar12 != 0)" (( "(") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        piVar15 = *(int **)(iVar12 + 0x2c);\n      }" ({ "{") (expression_statement "piVar15 = *(int **)(iVar12 + 0x2c);" (assignment_expression "piVar15 = *(int **)(iVar12 + 0x2c)" (identifier "piVar15") (= "=") (pointer_expression "*(int **)(iVar12 + 0x2c)" (* "*") (cast_expression "(int **)(iVar12 + 0x2c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + 0x2c)" (( "(") (binary_expression "iVar12 + 0x2c" (identifier "iVar12") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {\n        FUN_0004b2d8(piVar13);\n      }" (if "if") (parenthesized_expression "(piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15))" (( "(") (binary_expression "piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)" (subscript_expression "piVar13[7]" (identifier "piVar13") ([ "[") (number_literal "7") (] "]")) (< "<") (cast_expression "(int)(uVar14 + iVar7 + (int)piVar15)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar14 + iVar7 + (int)piVar15)" (( "(") (binary_expression "uVar14 + iVar7 + (int)piVar15" (binary_expression "uVar14 + iVar7" (identifier "uVar14") (+ "+") (identifier "iVar7")) (+ "+") (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15"))) () ")")))) () ")")) (compound_statement "{\n        FUN_0004b2d8(piVar13);\n      }" ({ "{") (expression_statement "FUN_0004b2d8(piVar13);" (call_expression "FUN_0004b2d8(piVar13)" (identifier "FUN_0004b2d8") (argument_list "(piVar13)" (( "(") (identifier "piVar13") () ")"))) (; ";")) (} "}"))) (expression_statement "*(char *)(piVar13[4] + 4) = (char)uVar14;" (assignment_expression "*(char *)(piVar13[4] + 4) = (char)uVar14" (pointer_expression "*(char *)(piVar13[4] + 4)" (* "*") (cast_expression "(char *)(piVar13[4] + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar13[4] + 4)" (( "(") (binary_expression "piVar13[4] + 4" (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "4")) () ")")))) (= "=") (cast_expression "(char)uVar14" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar14"))) (; ";")) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < (int)uVar14) {\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }" (if "if") (parenthesized_expression "(0 < (int)uVar14)" (( "(") (binary_expression "0 < (int)uVar14" (number_literal "0") (< "<") (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14"))) () ")")) (compound_statement "{\n        do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);\n      }" ({ "{") (do_statement "do {\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        } while (uVar14 != uVar11);" (do "do") (compound_statement "{\n          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();\n          iVar10 = piVar13[4] + uVar11;\n          uVar11 = uVar11 + 1;\n          *(undefined1 *)(iVar10 + *piVar13) = uVar5;\n          uVar3 = uVar11;\n        }" ({ "{") (expression_statement "uVar5 = (**(code **)(pcVar20 + 0xc5b64))();" (assignment_expression "uVar5 = (**(code **)(pcVar20 + 0xc5b64))()" (identifier "uVar5") (= "=") (call_expression "(**(code **)(pcVar20 + 0xc5b64))()" (parenthesized_expression "(**(code **)(pcVar20 + 0xc5b64))" (( "(") (pointer_expression "**(code **)(pcVar20 + 0xc5b64)" (* "*") (pointer_expression "*(code **)(pcVar20 + 0xc5b64)" (* "*") (cast_expression "(code **)(pcVar20 + 0xc5b64)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar20 + 0xc5b64)" (( "(") (binary_expression "pcVar20 + 0xc5b64" (identifier "pcVar20") (+ "+") (number_literal "0xc5b64")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar10 = piVar13[4] + uVar11;" (assignment_expression "iVar10 = piVar13[4] + uVar11" (identifier "iVar10") (= "=") (binary_expression "piVar13[4] + uVar11" (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]")) (+ "+") (identifier "uVar11"))) (; ";")) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined1 *)(iVar10 + *piVar13) = uVar5;" (assignment_expression "*(undefined1 *)(iVar10 + *piVar13) = uVar5" (pointer_expression "*(undefined1 *)(iVar10 + *piVar13)" (* "*") (cast_expression "(undefined1 *)(iVar10 + *piVar13)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + *piVar13)" (( "(") (binary_expression "iVar10 + *piVar13" (identifier "iVar10") (+ "+") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "uVar3 = uVar11;" (assignment_expression "uVar3 = uVar11" (identifier "uVar3") (= "=") (identifier "uVar11")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar14 != uVar11)" (( "(") (binary_expression "uVar14 != uVar11" (identifier "uVar14") (!= "!=") (identifier "uVar11")) () ")")) (; ";")) (} "}"))) (expression_statement "*(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);" (assignment_expression "*(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18)" (pointer_expression "*(char *)piVar13[4]" (* "*") (cast_expression "(char *)piVar13[4]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]")))) (= "=") (cast_expression "(char)(uVar14 + *piVar13 + -4 >> 0x18)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar14 + *piVar13 + -4 >> 0x18)" (( "(") (binary_expression "uVar14 + *piVar13 + -4 >> 0x18" (binary_expression "uVar14 + *piVar13 + -4" (binary_expression "uVar14 + *piVar13" (identifier "uVar14") (+ "+") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) (+ "+") (number_literal "-4")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "*(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);" (assignment_expression "*(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10)" (pointer_expression "*(char *)(piVar13[4] + 1)" (* "*") (cast_expression "(char *)(piVar13[4] + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar13[4] + 1)" (( "(") (binary_expression "piVar13[4] + 1" (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "1")) () ")")))) (= "=") (cast_expression "(char)(uVar14 + *piVar13 + -4 >> 0x10)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar14 + *piVar13 + -4 >> 0x10)" (( "(") (binary_expression "uVar14 + *piVar13 + -4 >> 0x10" (binary_expression "uVar14 + *piVar13 + -4" (binary_expression "uVar14 + *piVar13" (identifier "uVar14") (+ "+") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) (+ "+") (number_literal "-4")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);" (assignment_expression "*(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8)" (pointer_expression "*(char *)(piVar13[4] + 2)" (* "*") (cast_expression "(char *)(piVar13[4] + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar13[4] + 2)" (( "(") (binary_expression "piVar13[4] + 2" (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "2")) () ")")))) (= "=") (cast_expression "(char)(uVar14 + *piVar13 + -4 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar14 + *piVar13 + -4 >> 8)" (( "(") (binary_expression "uVar14 + *piVar13 + -4 >> 8" (binary_expression "uVar14 + *piVar13 + -4" (binary_expression "uVar14 + *piVar13" (identifier "uVar14") (+ "+") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) (+ "+") (number_literal "-4")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);" (assignment_expression "piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4)" (identifier "piVar17") (= "=") (cast_expression "(int *)((uVar14 & 0xff) + *piVar13 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uVar14 & 0xff) + *piVar13 + -4)" (( "(") (binary_expression "(uVar14 & 0xff) + *piVar13 + -4" (binary_expression "(uVar14 & 0xff) + *piVar13" (parenthesized_expression "(uVar14 & 0xff)" (( "(") (binary_expression "uVar14 & 0xff" (identifier "uVar14") (& "&") (number_literal "0xff")) () ")")) (+ "+") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) (+ "+") (number_literal "-4")) () ")")))) (; ";")) (expression_statement "*(char *)(piVar13[4] + 3) = (char)piVar17;" (assignment_expression "*(char *)(piVar13[4] + 3) = (char)piVar17" (pointer_expression "*(char *)(piVar13[4] + 3)" (* "*") (cast_expression "(char *)(piVar13[4] + 3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar13[4] + 3)" (( "(") (binary_expression "piVar13[4] + 3" (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "3")) () ")")))) (= "=") (cast_expression "(char)piVar17" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "piVar17"))) (; ";")) (expression_statement "iVar10 = *(int *)(iVar1 + 0x60);" (assignment_expression "iVar10 = *(int *)(iVar1 + 0x60)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iVar1 + 0x60)" (* "*") (cast_expression "(int *)(iVar1 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x60)" (( "(") (binary_expression "iVar1 + 0x60" (identifier "iVar1") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (if_statement "if (iVar10 == 0) {\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }\n      else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar7 = *(int *)(iVar1 + 0x70);\n        iVar12 = piVar13[4];\n        if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }\n      }" ({ "{") (expression_statement "iVar7 = *(int *)(iVar1 + 0x70);" (assignment_expression "iVar7 = *(int *)(iVar1 + 0x70)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar1 + 0x70)" (* "*") (cast_expression "(int *)(iVar1 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x70)" (( "(") (binary_expression "iVar1 + 0x70" (identifier "iVar1") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (expression_statement "iVar12 = piVar13[4];" (assignment_expression "iVar12 = piVar13[4]" (identifier "iVar12") (= "=") (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if (iVar7 != 0) {\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          iVar9 = uVar14 + *piVar13;\n          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;\nLAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);\nLAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar12 = piVar13[4];\n        }" ({ "{") (expression_statement "iVar9 = uVar14 + *piVar13;" (assignment_expression "iVar9 = uVar14 + *piVar13" (identifier "iVar9") (= "=") (binary_expression "uVar14 + *piVar13" (identifier "uVar14") (+ "+") (pointer_expression "*piVar13" (* "*") (identifier "piVar13")))) (; ";")) (if_statement "if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;" (if "if") (parenthesized_expression "(*(int *)(iVar1 + 0x78) == 0)" (( "(") (binary_expression "*(int *)(iVar1 + 0x78) == 0" (pointer_expression "*(int *)(iVar1 + 0x78)" (* "*") (cast_expression "(int *)(iVar1 + 0x78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x78)" (( "(") (binary_expression "iVar1 + 0x78" (identifier "iVar1") (+ "+") (number_literal "0x78")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004bfa4;" (goto "goto") (statement_identifier "LAB_0004bfa4") (; ";"))) (labeled_statement "LAB_0004c100:\n          pcVar21 = *(code **)(iVar7 + 0xc);" (statement_identifier "LAB_0004c100") (: ":") (expression_statement "pcVar21 = *(code **)(iVar7 + 0xc);" (assignment_expression "pcVar21 = *(code **)(iVar7 + 0xc)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(iVar7 + 0xc)" (* "*") (cast_expression "(code **)(iVar7 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar7 + 0xc)" (( "(") (binary_expression "iVar7 + 0xc" (identifier "iVar7") (+ "+") (number_literal "0xc")) () ")"))))) (; ";"))) (labeled_statement "LAB_0004c104:\n          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));" (statement_identifier "LAB_0004c104") (: ":") (expression_statement "(*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));" (call_expression "(*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac))" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac))" (( "(") (pointer_expression "*(undefined4 *)(iVar1 + 0x80)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x80)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x80)" (( "(") (binary_expression "iVar1 + 0x80" (identifier "iVar1") (+ "+") (number_literal "0x80")) () ")")))) (, ",") (identifier "iVar12") (, ",") (identifier "iVar9") (, ",") (pointer_expression "*(undefined4 *)(iVar1 + 0x1ac)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x1ac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x1ac)" (( "(") (binary_expression "iVar1 + 0x1ac" (identifier "iVar1") (+ "+") (number_literal "0x1ac")) () ")")))) () ")"))) (; ";"))) (expression_statement "iVar12 = piVar13[4];" (assignment_expression "iVar12 = piVar13[4]" (identifier "iVar12") (= "=") (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }" (else "else") (compound_statement "{\n        iVar12 = piVar13[4];\n        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }\n        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);\n        iVar12 = piVar13[4];\n      }" ({ "{") (expression_statement "iVar12 = piVar13[4];" (assignment_expression "iVar12 = piVar13[4]" (identifier "iVar12") (= "=") (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }\n        else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }" (if "if") (parenthesized_expression "((*(uint *)(iVar10 + 0x30) & 2) == 0)" (( "(") (binary_expression "(*(uint *)(iVar10 + 0x30) & 2) == 0" (parenthesized_expression "(*(uint *)(iVar10 + 0x30) & 2)" (( "(") (binary_expression "*(uint *)(iVar10 + 0x30) & 2" (pointer_expression "*(uint *)(iVar10 + 0x30)" (* "*") (cast_expression "(uint *)(iVar10 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x30)" (( "(") (binary_expression "iVar10 + 0x30" (identifier "iVar10") (+ "+") (number_literal "0x30")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }\n        }" ({ "{") (expression_statement "iVar7 = *(int *)(iVar1 + 0x70);" (assignment_expression "iVar7 = *(int *)(iVar1 + 0x70)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar1 + 0x70)" (* "*") (cast_expression "(int *)(iVar1 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x70)" (( "(") (binary_expression "iVar1 + 0x70" (identifier "iVar1") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (if_statement "if (iVar7 != 0) {\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }\n            goto LAB_0004bfa4;\n          }" ({ "{") (expression_statement "iVar9 = uVar14 + *piVar13;" (assignment_expression "iVar9 = uVar14 + *piVar13" (identifier "iVar9") (= "=") (binary_expression "uVar14 + *piVar13" (identifier "uVar14") (+ "+") (pointer_expression "*piVar13" (* "*") (identifier "piVar13")))) (; ";")) (if_statement "if (*(int *)(iVar1 + 0x78) != 0) {\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }" (if "if") (parenthesized_expression "(*(int *)(iVar1 + 0x78) != 0)" (( "(") (binary_expression "*(int *)(iVar1 + 0x78) != 0" (pointer_expression "*(int *)(iVar1 + 0x78)" (* "*") (cast_expression "(int *)(iVar1 + 0x78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x78)" (( "(") (binary_expression "iVar1 + 0x78" (identifier "iVar1") (+ "+") (number_literal "0x78")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);\n              iVar12 = piVar13[4];\n              iVar7 = *(int *)(iVar1 + 0x70);\n              iVar9 = uVar14 + *piVar13;\n              goto LAB_0004c100;\n            }" ({ "{") (labeled_statement "LAB_0004c0dc:\n              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);" (statement_identifier "LAB_0004c0dc") (: ":") (expression_statement "(**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);" (call_expression "(**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4)" (parenthesized_expression "(**(code **)(iVar10 + 0x10))" (( "(") (pointer_expression "**(code **)(iVar10 + 0x10)" (* "*") (pointer_expression "*(code **)(iVar10 + 0x10)" (* "*") (cast_expression "(code **)(iVar10 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar10 + 0x10)" (( "(") (binary_expression "iVar10 + 0x10" (identifier "iVar10") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4)" (( "(") (pointer_expression "*(undefined4 *)(iVar1 + 0x68)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x68)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x68)" (( "(") (binary_expression "iVar1 + 0x68" (identifier "iVar1") (+ "+") (number_literal "0x68")) () ")")))) (, ",") (binary_expression "iVar12 + 4" (identifier "iVar12") (+ "+") (number_literal "4")) (, ",") (binary_expression "iVar9 + -4" (identifier "iVar9") (+ "+") (number_literal "-4")) () ")"))) (; ";"))) (expression_statement "iVar12 = piVar13[4];" (assignment_expression "iVar12 = piVar13[4]" (identifier "iVar12") (= "=") (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "iVar7 = *(int *)(iVar1 + 0x70);" (assignment_expression "iVar7 = *(int *)(iVar1 + 0x70)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar1 + 0x70)" (* "*") (cast_expression "(int *)(iVar1 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x70)" (( "(") (binary_expression "iVar1 + 0x70" (identifier "iVar1") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (expression_statement "iVar9 = uVar14 + *piVar13;" (assignment_expression "iVar9 = uVar14 + *piVar13" (identifier "iVar9") (= "=") (binary_expression "uVar14 + *piVar13" (identifier "uVar14") (+ "+") (pointer_expression "*piVar13" (* "*") (identifier "piVar13")))) (; ";")) (goto_statement "goto LAB_0004c100;" (goto "goto") (statement_identifier "LAB_0004c100") (; ";")) (} "}"))) (goto_statement "goto LAB_0004bfa4;" (goto "goto") (statement_identifier "LAB_0004bfa4") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }" (else "else") (compound_statement "{\n          (**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));\n          iVar7 = *(int *)(iVar1 + 0x70);\n          if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }\n          iVar10 = *(int *)(iVar1 + 0x60);\n          iVar12 = piVar13[4];\n          if (iVar10 == 0) goto LAB_0004bfe0;\n        }" ({ "{") (expression_statement "(**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));" (call_expression "(**(code **)(iVar10 + 0x18))\n                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac))" (parenthesized_expression "(**(code **)(iVar10 + 0x18))" (( "(") (pointer_expression "**(code **)(iVar10 + 0x18)" (* "*") (pointer_expression "*(code **)(iVar10 + 0x18)" (* "*") (cast_expression "(code **)(iVar10 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar10 + 0x18)" (( "(") (binary_expression "iVar10 + 0x18" (identifier "iVar10") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac))" (( "(") (pointer_expression "*(undefined4 *)(iVar1 + 0x68)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x68)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x68)" (( "(") (binary_expression "iVar1 + 0x68" (identifier "iVar1") (+ "+") (number_literal "0x68")) () ")")))) (, ",") (identifier "iVar12") (, ",") (number_literal "4") (, ",") (pointer_expression "*(undefined4 *)(iVar1 + 0x1ac)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x1ac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x1ac)" (( "(") (binary_expression "iVar1 + 0x1ac" (identifier "iVar1") (+ "+") (number_literal "0x1ac")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar7 = *(int *)(iVar1 + 0x70);" (assignment_expression "iVar7 = *(int *)(iVar1 + 0x70)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar1 + 0x70)" (* "*") (cast_expression "(int *)(iVar1 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x70)" (( "(") (binary_expression "iVar1 + 0x70" (identifier "iVar1") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (if_statement "if (iVar7 != 0) {\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar12 = piVar13[4];\n            iVar9 = uVar14 + *piVar13;\n            if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }\nLAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));\n          }" ({ "{") (expression_statement "iVar12 = piVar13[4];" (assignment_expression "iVar12 = piVar13[4]" (identifier "iVar12") (= "=") (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "iVar9 = uVar14 + *piVar13;" (assignment_expression "iVar9 = uVar14 + *piVar13" (identifier "iVar9") (= "=") (binary_expression "uVar14 + *piVar13" (identifier "uVar14") (+ "+") (pointer_expression "*piVar13" (* "*") (identifier "piVar13")))) (; ";")) (if_statement "if (*(int *)(iVar1 + 0x78) != 0) {\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }" (if "if") (parenthesized_expression "(*(int *)(iVar1 + 0x78) != 0)" (( "(") (binary_expression "*(int *)(iVar1 + 0x78) != 0" (pointer_expression "*(int *)(iVar1 + 0x78)" (* "*") (cast_expression "(int *)(iVar1 + 0x78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x78)" (( "(") (binary_expression "iVar1 + 0x78" (identifier "iVar1") (+ "+") (number_literal "0x78")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              iVar10 = *(int *)(iVar1 + 0x60);\n              if (iVar10 != 0) goto LAB_0004c0dc;\n              pcVar21 = *(code **)(iVar7 + 0xc);\n              goto LAB_0004c104;\n            }" ({ "{") (expression_statement "iVar10 = *(int *)(iVar1 + 0x60);" (assignment_expression "iVar10 = *(int *)(iVar1 + 0x60)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iVar1 + 0x60)" (* "*") (cast_expression "(int *)(iVar1 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x60)" (( "(") (binary_expression "iVar1 + 0x60" (identifier "iVar1") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (if_statement "if (iVar10 != 0) goto LAB_0004c0dc;" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004c0dc;" (goto "goto") (statement_identifier "LAB_0004c0dc") (; ";"))) (expression_statement "pcVar21 = *(code **)(iVar7 + 0xc);" (assignment_expression "pcVar21 = *(code **)(iVar7 + 0xc)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(iVar7 + 0xc)" (* "*") (cast_expression "(code **)(iVar7 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar7 + 0xc)" (( "(") (binary_expression "iVar7 + 0xc" (identifier "iVar7") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (goto_statement "goto LAB_0004c104;" (goto "goto") (statement_identifier "LAB_0004c104") (; ";")) (} "}"))) (labeled_statement "LAB_0004bfa4:\n            (**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));" (statement_identifier "LAB_0004bfa4") (: ":") (expression_statement "(**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));" (call_expression "(**(code **)(iVar7 + 0xc))\n                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac))" (parenthesized_expression "(**(code **)(iVar7 + 0xc))" (( "(") (pointer_expression "**(code **)(iVar7 + 0xc)" (* "*") (pointer_expression "*(code **)(iVar7 + 0xc)" (* "*") (cast_expression "(code **)(iVar7 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar7 + 0xc)" (( "(") (binary_expression "iVar7 + 0xc" (identifier "iVar7") (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac))" (( "(") (pointer_expression "*(undefined4 *)(iVar1 + 0x80)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x80)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x80)" (( "(") (binary_expression "iVar1 + 0x80" (identifier "iVar1") (+ "+") (number_literal "0x80")) () ")")))) (, ",") (identifier "iVar12") (, ",") (identifier "iVar9") (, ",") (pointer_expression "*(undefined4 *)(iVar1 + 0x1ac)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x1ac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x1ac)" (( "(") (binary_expression "iVar1 + 0x1ac" (identifier "iVar1") (+ "+") (number_literal "0x1ac")) () ")")))) () ")"))) (; ";"))) (} "}"))) (expression_statement "iVar10 = *(int *)(iVar1 + 0x60);" (assignment_expression "iVar10 = *(int *)(iVar1 + 0x60)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iVar1 + 0x60)" (* "*") (cast_expression "(int *)(iVar1 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x60)" (( "(") (binary_expression "iVar1 + 0x60" (identifier "iVar1") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (expression_statement "iVar12 = piVar13[4];" (assignment_expression "iVar12 = piVar13[4]" (identifier "iVar12") (= "=") (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if (iVar10 == 0) goto LAB_0004bfe0;" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004bfe0;" (goto "goto") (statement_identifier "LAB_0004bfe0") (; ";"))) (} "}")))) (expression_statement "(**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);" (call_expression "(**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13)" (parenthesized_expression "(**(code **)(iVar10 + 0x10))" (( "(") (pointer_expression "**(code **)(iVar10 + 0x10)" (* "*") (pointer_expression "*(code **)(iVar10 + 0x10)" (* "*") (cast_expression "(code **)(iVar10 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar10 + 0x10)" (( "(") (binary_expression "iVar10 + 0x10" (identifier "iVar10") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13)" (( "(") (pointer_expression "*(undefined4 *)(iVar1 + 0x68)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x68)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x68)" (( "(") (binary_expression "iVar1 + 0x68" (identifier "iVar1") (+ "+") (number_literal "0x68")) () ")")))) (, ",") (identifier "iVar12") (, ",") (binary_expression "uVar14 + *piVar13" (identifier "uVar14") (+ "+") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) () ")"))) (; ";")) (expression_statement "iVar12 = piVar13[4];" (assignment_expression "iVar12 = piVar13[4]" (identifier "iVar12") (= "=") (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]"))) (; ";")) (} "}")))) (labeled_statement "LAB_0004bfe0:\n      iVar7 = *piVar13;" (statement_identifier "LAB_0004bfe0") (: ":") (expression_statement "iVar7 = *piVar13;" (assignment_expression "iVar7 = *piVar13" (identifier "iVar7") (= "=") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) (; ";"))) (expression_statement "iVar10 = uVar14 + iVar7 + (int)piVar15;" (assignment_expression "iVar10 = uVar14 + iVar7 + (int)piVar15" (identifier "iVar10") (= "=") (binary_expression "uVar14 + iVar7 + (int)piVar15" (binary_expression "uVar14 + iVar7" (identifier "uVar14") (+ "+") (identifier "iVar7")) (+ "+") (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15")))) (; ";")) (expression_statement "*(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;" (assignment_expression "*(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1" (pointer_expression "*(int *)(iVar1 + 0x1ac)" (* "*") (cast_expression "(int *)(iVar1 + 0x1ac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x1ac)" (( "(") (binary_expression "iVar1 + 0x1ac" (identifier "iVar1") (+ "+") (number_literal "0x1ac")) () ")")))) (= "=") (binary_expression "*(int *)(iVar1 + 0x1ac) + 1" (pointer_expression "*(int *)(iVar1 + 0x1ac)" (* "*") (cast_expression "(int *)(iVar1 + 0x1ac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x1ac)" (( "(") (binary_expression "iVar1 + 0x1ac" (identifier "iVar1") (+ "+") (number_literal "0x1ac")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar13[8] = uVar14 + iVar7;" (assignment_expression "piVar13[8] = uVar14 + iVar7" (subscript_expression "piVar13[8]" (identifier "piVar13") ([ "[") (number_literal "8") (] "]")) (= "=") (binary_expression "uVar14 + iVar7" (identifier "uVar14") (+ "+") (identifier "iVar7"))) (; ";")) (expression_statement "piVar13[5] = iVar12;" (assignment_expression "piVar13[5] = iVar12" (subscript_expression "piVar13[5]" (identifier "piVar13") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "iVar12")) (; ";")) (} "}")) (else_clause "else {\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }" (else "else") (compound_statement "{\n      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);\n      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);\n      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);\n      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;\n      iVar7 = *(int *)(iVar1 + 0x1ac);\n      iVar10 = *piVar13 + -1;\n      piVar13[5] = piVar13[4] + 1;\n      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;\n    }" ({ "{") (expression_statement "*(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);" (assignment_expression "*(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18)" (pointer_expression "*(char *)(piVar13[4] + 1)" (* "*") (cast_expression "(char *)(piVar13[4] + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar13[4] + 1)" (( "(") (binary_expression "piVar13[4] + 1" (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "1")) () ")")))) (= "=") (cast_expression "(char)((uint)(iVar7 + -5) >> 0x18)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)(iVar7 + -5) >> 0x18)" (( "(") (binary_expression "(uint)(iVar7 + -5) >> 0x18" (call_expression "(uint)(iVar7 + -5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar7 + -5)" (( "(") (binary_expression "iVar7 + -5" (identifier "iVar7") (+ "+") (number_literal "-5")) () ")"))) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "*(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);" (assignment_expression "*(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10)" (pointer_expression "*(char *)(piVar13[4] + 2)" (* "*") (cast_expression "(char *)(piVar13[4] + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar13[4] + 2)" (( "(") (binary_expression "piVar13[4] + 2" (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "2")) () ")")))) (= "=") (cast_expression "(char)((uint)(*piVar13 + -5) >> 0x10)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)(*piVar13 + -5) >> 0x10)" (( "(") (binary_expression "(uint)(*piVar13 + -5) >> 0x10" (call_expression "(uint)(*piVar13 + -5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*piVar13 + -5)" (( "(") (binary_expression "*piVar13 + -5" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (+ "+") (number_literal "-5")) () ")"))) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);" (assignment_expression "*(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8)" (pointer_expression "*(char *)(piVar13[4] + 3)" (* "*") (cast_expression "(char *)(piVar13[4] + 3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar13[4] + 3)" (( "(") (binary_expression "piVar13[4] + 3" (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "3")) () ")")))) (= "=") (cast_expression "(char)((uint)(*piVar13 + -5) >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)(*piVar13 + -5) >> 8)" (( "(") (binary_expression "(uint)(*piVar13 + -5) >> 8" (call_expression "(uint)(*piVar13 + -5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*piVar13 + -5)" (( "(") (binary_expression "*piVar13 + -5" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (+ "+") (number_literal "-5")) () ")"))) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "*(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;" (assignment_expression "*(char *)(piVar13[4] + 4) = (char)*piVar13 + -5" (pointer_expression "*(char *)(piVar13[4] + 4)" (* "*") (cast_expression "(char *)(piVar13[4] + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar13[4] + 4)" (( "(") (binary_expression "piVar13[4] + 4" (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "(char)*piVar13 + -5" (cast_expression "(char)*piVar13" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) (+ "+") (number_literal "-5"))) (; ";")) (expression_statement "iVar7 = *(int *)(iVar1 + 0x1ac);" (assignment_expression "iVar7 = *(int *)(iVar1 + 0x1ac)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar1 + 0x1ac)" (* "*") (cast_expression "(int *)(iVar1 + 0x1ac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x1ac)" (( "(") (binary_expression "iVar1 + 0x1ac" (identifier "iVar1") (+ "+") (number_literal "0x1ac")) () ")"))))) (; ";")) (expression_statement "iVar10 = *piVar13 + -1;" (assignment_expression "iVar10 = *piVar13 + -1" (identifier "iVar10") (= "=") (binary_expression "*piVar13 + -1" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar13[5] = piVar13[4] + 1;" (assignment_expression "piVar13[5] = piVar13[4] + 1" (subscript_expression "piVar13[5]" (identifier "piVar13") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "piVar13[4] + 1" (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(int *)(iVar1 + 0x1ac) = iVar7 + 1;" (assignment_expression "*(int *)(iVar1 + 0x1ac) = iVar7 + 1" (pointer_expression "*(int *)(iVar1 + 0x1ac)" (* "*") (cast_expression "(int *)(iVar1 + 0x1ac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x1ac)" (( "(") (binary_expression "iVar1 + 0x1ac" (identifier "iVar1") (+ "+") (number_literal "0x1ac")) () ")")))) (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (if_statement "if (iStack_124 == *piVar16) {\n      return iVar10;\n    }" (if "if") (parenthesized_expression "(iStack_124 == *piVar16)" (( "(") (binary_expression "iStack_124 == *piVar16" (identifier "iStack_124") (== "==") (pointer_expression "*piVar16" (* "*") (identifier "piVar16"))) () ")")) (compound_statement "{\n      return iVar10;\n    }" ({ "{") (return_statement "return iVar10;" (return "return") (identifier "iVar10") (; ";")) (} "}"))) (expression_statement "iVar10 = iStack_124;" (assignment_expression "iVar10 = iStack_124" (identifier "iVar10") (= "=") (identifier "iStack_124")) (; ";")) (expression_statement "(**(code **)(pcVar20 + 0xc6674))();" (call_expression "(**(code **)(pcVar20 + 0xc6674))()" (parenthesized_expression "(**(code **)(pcVar20 + 0xc6674))" (( "(") (pointer_expression "**(code **)(pcVar20 + 0xc6674)" (* "*") (pointer_expression "*(code **)(pcVar20 + 0xc6674)" (* "*") (cast_expression "(code **)(pcVar20 + 0xc6674)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar20 + 0xc6674)" (( "(") (binary_expression "pcVar20 + 0xc6674" (identifier "pcVar20") (+ "+") (number_literal "0xc6674")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_0004c510:\n    piVar13[6] = iVar10;" (statement_identifier "LAB_0004c510") (: ":") (expression_statement "piVar13[6] = iVar10;" (assignment_expression "piVar13[6] = iVar10" (subscript_expression "piVar13[6]" (identifier "piVar13") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "iVar10")) (; ";"))) (expression_statement "piVar18 = piVar15;" (assignment_expression "piVar18 = piVar15" (identifier "piVar18") (= "=") (identifier "piVar15")) (; ";")) (labeled_statement "LAB_0004c1fc:\n    FUN_00047b74(piVar13,piVar18,piVar17);" (statement_identifier "LAB_0004c1fc") (: ":") (expression_statement "FUN_00047b74(piVar13,piVar18,piVar17);" (call_expression "FUN_00047b74(piVar13,piVar18,piVar17)" (identifier "FUN_00047b74") (argument_list "(piVar13,piVar18,piVar17)" (( "(") (identifier "piVar13") (, ",") (identifier "piVar18") (, ",") (identifier "piVar17") () ")"))) (; ";"))) (expression_statement "iVar10 = piVar13[6];" (assignment_expression "iVar10 = piVar13[6]" (identifier "iVar10") (= "=") (subscript_expression "piVar13[6]" (identifier "piVar13") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "piVar15 = aiStack_120 + uVar3 * 3;" (assignment_expression "piVar15 = aiStack_120 + uVar3 * 3" (identifier "piVar15") (= "=") (binary_expression "aiStack_120 + uVar3 * 3" (identifier "aiStack_120") (+ "+") (binary_expression "uVar3 * 3" (identifier "uVar3") (* "*") (number_literal "3")))) (; ";")) (expression_statement "aiStack_154[uVar3 * 3 + 2] = 1;" (assignment_expression "aiStack_154[uVar3 * 3 + 2] = 1" (subscript_expression "aiStack_154[uVar3 * 3 + 2]" (identifier "aiStack_154") ([ "[") (binary_expression "uVar3 * 3 + 2" (binary_expression "uVar3 * 3" (identifier "uVar3") (* "*") (number_literal "3")) (+ "+") (number_literal "2")) (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "aiStack_154[uVar3 * 3] = iVar10;" (assignment_expression "aiStack_154[uVar3 * 3] = iVar10" (subscript_expression "aiStack_154[uVar3 * 3]" (identifier "aiStack_154") ([ "[") (binary_expression "uVar3 * 3" (identifier "uVar3") (* "*") (number_literal "3")) (] "]")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "FUN_00047b74(piVar13,piVar18,piVar17);" (call_expression "FUN_00047b74(piVar13,piVar18,piVar17)" (identifier "FUN_00047b74") (argument_list "(piVar13,piVar18,piVar17)" (( "(") (identifier "piVar13") (, ",") (identifier "piVar18") (, ",") (identifier "piVar17") () ")"))) (; ";")) (if_statement "if (iStack_15c != 0) {\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }" (if "if") (parenthesized_expression "(iStack_15c != 0)" (( "(") (binary_expression "iStack_15c != 0" (identifier "iStack_15c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];\n    }" ({ "{") (expression_statement "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];" (assignment_expression "aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3]" (subscript_expression "aiStack_154[uVar3 * 3 + 1]" (identifier "aiStack_154") ([ "[") (binary_expression "uVar3 * 3 + 1" (binary_expression "uVar3 * 3" (identifier "uVar3") (* "*") (number_literal "3")) (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "piVar13[6] - aiStack_154[uVar3 * 3]" (subscript_expression "piVar13[6]" (identifier "piVar13") ([ "[") (number_literal "6") (] "]")) (- "-") (subscript_expression "aiStack_154[uVar3 * 3]" (identifier "aiStack_154") ([ "[") (binary_expression "uVar3 * 3" (identifier "uVar3") (* "*") (number_literal "3")) (] "]")))) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) 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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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: (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: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (return_statement (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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))))))) (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (number_literal)))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_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 (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (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))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (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: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list)))) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)) (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) 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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) 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: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) 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: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) 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: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (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 (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (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: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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))))) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (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)) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) 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: (number_literal)) right: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))))))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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))))) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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))))) (number_literal)))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))))) (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (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))))) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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))))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) 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: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier)))) right: (identifier)) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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)) (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)) (number_literal) (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)))))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))) right: (number_literal)) 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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))) right: (number_literal)) 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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (pointer_expression argument: (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: (subscript_expression argument: (identifier) index: (number_literal)) 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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier) (identifier) (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: (subscript_expression argument: (identifier) index: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (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))) consequence: (compound_statement (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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))))) (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier) (number_literal) (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier) (identifier) (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier) (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) alternative: (else_clause (compound_statement (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) 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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) 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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) 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: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))))))))) condition: (parenthesized_expression (true)))))))

int MASKED(int *param_1,int param_2)

{
  int iVar1;
  uint *puVar2;
  uint uVar3;
  undefined1 uVar5;
  undefined4 uVar4;
  undefined4 extraout_v1;
  undefined1 *puVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  uint uVar11;
  int iVar12;
  int *piVar13;
  uint uVar14;
  int *piVar15;
  int *piVar16;
  int *piVar17;
  int *piVar18;
  undefined *puVar19;
  code *pcVar20;
  code *pcVar21;
  int iStack_15c;
  int iStack_158;
  int aiStack_154 [12];
  int iStack_124;
  int aiStack_120 [4];
  undefined4 uStack_110;
  int iStack_10c;
  int *piStack_108;
  int *piStack_104;
  uint *puStack_100;
  code *pcStack_fc;
  int *piStack_e8;
  undefined4 uStack_e4;
  int iStack_e0;
  int *piStack_dc;
  undefined4 uStack_d8;
  undefined4 uStack_d4;
  undefined4 uStack_d0;
  code *pcStack_c8;
  int iStack_bc;
  int iStack_b8;
  int aiStack_b4 [12];
  int iStack_84;
  int *piStack_80;
  int *piStack_7c;
  int *piStack_78;
  int local_10;
  int local_c;
  
  puVar19 = PTR___stack_chk_guard_00112630;
  piVar15 = &local_10;
  local_c = *(int *)PTR___stack_chk_guard_00112630;
  local_10 = param_2;
  FUN_0004b364(param_1,piVar15,4);
  if (local_c == *(int *)puVar19) {
    return *(int *)puVar19;
  }
  puVar19 = PTR___stack_chk_fail_001122c8;
  (*(code *)PTR___stack_chk_fail_001122c8)();
  piVar13 = *(int **)(puVar19 + 0xc6f84);
  iVar1 = *piVar13;
  FUN_0004b364();
  pcVar20 = *(code **)(puVar19 + 0xc6e88);
  param_1[6] = *param_1;
  puVar2 = (uint *)(*pcVar20)(piVar15);
  piVar17 = param_1;
  piVar16 = piVar15;
  FUN_0004b594();
  if (iVar1 == *piVar13) {
    return *piVar13;
  }
  pcVar21 = *(code **)(puVar19 + 0xc6c1c);
  (*pcVar21)();
  pcVar20 = pcVar21 + 0xcdb48;
  piVar18 = *(int **)(pcVar21 + 0xc6ec8);
  iStack_84 = *piVar18;
  iVar1 = *piVar16;
  pcStack_c8 = pcVar20;
  piStack_80 = param_1;
  piStack_7c = piVar13;
  piStack_78 = piVar15;
  if (piVar17[6] != 0) {
    iVar10 = piVar17[0x93];
    uVar3 = piVar16[2];
    piVar16[6] = 0;
    *piVar16 = iVar1 - (piVar16[5] - piVar16[4]);
    if (iVar10 == 0) {
LAB_0004b804:
      pcVar21 = *(code **)(pcVar20 + -0x7efc);
      if ((uVar3 & 0xffffffdf) == 9) goto LAB_0004ba3c;
LAB_0004b818:
      if (uVar3 == 0x48) {
        pcVar21 = *(code **)(pcVar20 + -0x7efc);
        goto LAB_0004ba3c;
      }
      pcVar20 = *(code **)(pcVar20 + -0x7efc);
      iVar1 = iVar10;
joined_r0x0004b824:
      if ((uVar3 == 0x22) && (iVar10 = (*pcVar20)(piVar17[0x92],0x7b), iVar10 != 0)) {
        piVar16[6] = 0;
        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);
        aiStack_b4[iVar1 * 3] = piVar16[6];
        aiStack_b4[iVar1 * 3 + 2] = 1;
        FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);
        if (iStack_bc != 0) {
          aiStack_b4[iVar1 * 3 + 1] = piVar16[6] - aiStack_b4[iVar1 * 3];
          iVar1 = iVar1 + 1;
        }
      }
    }
    else {
      if (uVar3 == 0x10) {
        aiStack_b4[0] = 4;
      }
      else {
        iVar10 = 0;
        if (uVar3 != 0x17) goto LAB_0004b804;
        FUN_00047058(piVar16);
        aiStack_b4[0] = piVar16[6] + 4;
      }
      aiStack_b4[2] = 2;
      FUN_00047b74(piVar16,&iStack_bc,&iStack_b8);
      pcVar20 = pcStack_c8;
      if (iStack_bc == 0) {
        uVar3 = piVar16[2];
        iVar10 = 0;
        goto LAB_0004b804;
      }
      uVar3 = piVar16[2];
      iVar10 = 1;
      if ((uVar3 & 0xffffffdf) != 9) goto LAB_0004b818;
      pcVar21 = *(code **)(pcStack_c8 + -0x7efc);
LAB_0004ba3c:
      iVar1 = (*pcVar21)(piVar17[0x92],0x7b);
      if (iVar1 == 0) {
        uVar3 = piVar16[2];
        pcVar20 = *(code **)(pcStack_c8 + -0x7efc);
        iVar1 = iVar10;
        goto joined_r0x0004b824;
      }
      iVar7 = *piVar16;
      iVar1 = iVar10 + 1;
      aiStack_b4[iVar10 * 3] = 0;
      aiStack_b4[iVar10 * 3 + 1] = iVar7;
      aiStack_b4[iVar10 * 3 + 2] = 1;
    }
    FUN_00049aac(*(undefined1 *)(piVar16[4] + 0xc));
    piStack_e8 = (int *)piVar16[5];
    piStack_dc = aiStack_b4;
    uStack_d0 = 0;
    uStack_d4 = 0;
    uStack_d8 = 0;
    uStack_e4 = extraout_v1;
    iStack_e0 = iVar1;
    log_packet(piVar17[6],1);
    pcVar20 = pcStack_c8;
    iVar1 = (piVar16[5] - piVar16[4]) + *piVar16;
    *piVar16 = iVar1;
  }
  if (piVar17[0xf] != 0) {
    piStack_e8 = &iStack_b8;
    (**(code **)(pcVar20 + -0x7af0))(piVar17[0x24],piVar16[4] + 0xc,iVar1 + -0xc,&iStack_bc);
    if (piVar16[7] < iStack_b8 + 2) {
      FUN_0004b2d8(piVar16);
    }
    (**(code **)(pcStack_c8 + -0x6d44))(piVar16[4] + 0xc,iStack_bc,iStack_b8);
    safefree(iStack_bc);
    pcVar20 = pcStack_c8;
    iVar1 = iStack_b8 + 0xc;
    *piVar16 = iVar1;
  }
  iVar10 = iVar1 + 4;
  if (piVar16[7] < iVar10) {
    FUN_0004b2d8(piVar16);
    iVar1 = *piVar16;
    iVar10 = iVar1 + 4;
    pcVar20 = pcStack_c8;
  }
  uVar14 = iVar1 - 8;
  uVar3 = uVar14 & 0x80000007;
  *piVar16 = iVar10;
  if ((int)uVar3 < 0) {
    uVar3 = (uVar3 - 1 | 0xfffffff8) + 1;
  }
  iVar1 = uVar14 - uVar3;
  piVar15 = (int *)0xc;
  iVar10 = iVar1 + 8;
  uVar11 = uVar3;
  do {
    uVar5 = (**(code **)(pcVar20 + -0x7af8))();
    puVar6 = (undefined1 *)(piVar16[4] + uVar11);
    uVar11 = uVar11 + 1;
    *puVar6 = uVar5;
    pcVar20 = pcStack_c8;
  } while (uVar11 != 0xc);
  iVar12 = uVar3 + 4;
  uVar4 = (**(code **)(pcStack_c8 + -0x7af4))(piVar16[4] + iVar12,iVar1 + 4);
  iVar7 = iVar10 + uVar3;
  *(char *)(piVar16[4] + iVar7) = (char)((uint)uVar4 >> 0x18);
  piVar13 = (int *)((int)uVar14 >> 8);
  *(char *)(piVar16[4] + iVar7 + 1) = (char)((uint)uVar4 >> 0x10);
  *(char *)(piVar16[4] + iVar7 + 2) = (char)((uint)uVar4 >> 8);
  *(char *)(piVar16[4] + iVar7 + 3) = (char)uVar4;
  *(char *)(piVar16[4] + uVar3) = (char)(uVar14 >> 0x18);
  *(char *)(piVar16[4] + uVar3 + 1) = (char)(uVar14 >> 0x10);
  *(char *)(piVar16[4] + uVar3 + 2) = (char)(uVar14 >> 8);
  *(char *)(piVar16[4] + uVar3 + 3) = (char)uVar14;
  if (piVar17[0x15] != 0) {
    piVar13 = (int *)(piVar16[4] + iVar12);
    (**(code **)(piVar17[0x15] + 0xc))(piVar17[0x16],piVar13,iVar10);
  }
  iVar7 = *piVar18;
  *puVar2 = uVar3;
  if (iStack_84 == iVar7) {
    return iVar1 + 0xc;
  }
  pcVar20 = *(code **)(pcStack_c8 + -0x6fe8);
  pcVar21 = FUN_0004bc54;
  iVar1 = iStack_84;
  (*pcVar20)();
  iVar7 = *piVar13;
  piVar16 = *(int **)(pcVar20 + 0xc69dc);
  uStack_110 = 0xc;
  iStack_124 = *piVar16;
  aiStack_120[1] = iVar12;
  aiStack_120[2] = uVar3;
  aiStack_120[3] = uVar14;
  iStack_10c = iVar10;
  piStack_108 = piVar17;
  piStack_104 = piVar18;
  puStack_100 = puVar2;
  pcStack_fc = pcVar21;
  if (*(int *)(iVar1 + 0x18) == 0) goto LAB_0004bd94;
  uVar3 = *(uint *)(iVar1 + 0x24c);
  iVar10 = piVar13[2];
  piVar13[6] = 0;
  *piVar13 = iVar7 - (piVar13[5] - piVar13[4]);
  if ((uVar3 != 0) && (uVar3 = 0, iVar10 - 0x5eU < 2)) {
    FUN_00047058(piVar13);
    if (piVar13[2] == 0x5f) {
      FUN_00047058();
    }
    aiStack_154[2] = 2;
    aiStack_154[0] = piVar13[6] + 4;
    FUN_00047b74(piVar13,&iStack_15c,&iStack_158);
    if (iStack_15c == 0) {
      iVar10 = piVar13[2];
      uVar3 = 0;
    }
    else {
      uVar3 = 1;
      iVar10 = piVar13[2];
    }
  }
  if (iVar10 == 0x32) {
    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);
    if (iVar10 != 0) {
      piVar17 = &iStack_158;
      piVar15 = &iStack_15c;
      piVar13[6] = 0;
      FUN_00047b74(piVar13,piVar15,piVar17);
      FUN_00047b74(piVar13,piVar15,piVar17);
      FUN_00047b74(piVar13,piVar15,piVar17);
      if (iStack_158 == 8) {
        iVar10 = (**(code **)(pcVar20 + 0xc67dc))
                           (iStack_15c,*(int *)(pcVar20 + 0xc56a4) + -0x469c,8);
        if (iVar10 == 0) {
          iVar10 = piVar13[6];
          if (0 < *piVar13 - iVar10) {
            iVar10 = iVar10 + 1;
            piVar13[6] = iVar10;
          }
          aiStack_154[uVar3 * 3] = iVar10;
          aiStack_154[uVar3 * 3 + 2] = 1;
          FUN_00047b74(piVar13,piVar15,piVar17);
          if (iStack_15c != 0) {
            piVar18 = (int *)(uVar3 + 1);
            aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];
            FUN_00047b74(piVar13,piVar15,piVar17);
            piVar15 = piVar18;
            if (iStack_15c != 0) {
              aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[(int)piVar18 * 3];
            }
          }
        }
      }
      goto LAB_0004bd10;
    }
    iVar10 = piVar13[2];
  }
  if ((*(int *)(iVar1 + 0x188) == 4) && (iVar10 == 0x3d)) {
    iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b);
    if (iVar10 != 0) {
      piVar13[6] = 0;
      piVar17 = &iStack_158;
      FUN_00047058(piVar13);
      aiStack_154[uVar3 * 3] = piVar13[6];
      aiStack_154[uVar3 * 3 + 2] = 1;
      do {
        FUN_00047b74(piVar13,&iStack_15c,piVar17);
      } while (iStack_15c != 0);
      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];
      piVar15 = &iStack_15c;
      goto LAB_0004bd10;
    }
    iVar10 = piVar13[2];
  }
  if ((iVar10 == 0x62) &&
     (iVar10 = (**(code **)(pcVar20 + 0xc5760))(*(undefined4 *)(iVar1 + 0x248),0x7b), iVar10 != 0))
  {
    piVar13[6] = 0;
    piVar17 = &iStack_158;
    piVar15 = &iStack_15c;
    FUN_00047058(piVar13);
    FUN_00047b74();
    if (iStack_158 == 7) {
      iVar7 = piVar13[6];
      iVar10 = iVar7 + 1;
      piVar18 = piVar15;
      if (*piVar13 - iVar7 < 1) goto LAB_0004c1fc;
      if (*piVar13 - iVar10 < 1) goto LAB_0004c510;
      piVar13[6] = iVar7 + 2;
      goto LAB_0004c1fc;
    }
  }
LAB_0004bd10:
  do {
    FUN_00049dfc(*(undefined4 *)(iVar1 + 0x184),*(undefined4 *)(iVar1 + 0x188),
                 *(undefined1 *)(piVar13[4] + 5));
    log_packet(*(undefined4 *)(iVar1 + 0x18),1);
    iVar7 = (piVar13[5] - piVar13[4]) + *piVar13;
    *piVar13 = iVar7;
LAB_0004bd94:
    uVar3 = *(uint *)(iVar1 + 0xec);
    if (uVar3 == 0) {
      if (*(int *)(iVar1 + 0x88) != 0) {
        iVar10 = (**(code **)(*(int *)(iVar1 + 0x88) + 0x10))
                           (*(undefined4 *)(iVar1 + 0x90),piVar13[4] + 5,iVar7 + -5,&iStack_15c,
                            &iStack_158);
        if (iVar10 == 0) {
          iVar7 = *piVar13;
        }
        else {
          *piVar13 = 5;
          FUN_0004b364(piVar13,iStack_15c,iStack_158);
          safefree(iStack_15c);
          iVar7 = *piVar13;
        }
      }
      if (*(int *)(iVar1 + 0x60) == 0) {
        iVar10 = 8;
      }
      else {
        iVar12 = *(int *)(*(int *)(iVar1 + 0x60) + 0x24);
        iVar10 = 8;
        if (7 < iVar12) {
          iVar10 = iVar12;
        }
      }
      iVar12 = *(int *)(iVar1 + 0x70);
      if ((iVar12 == 0) || (*(int *)(iVar1 + 0x78) == 0)) {
        iVar8 = piVar13[1];
        iVar9 = iVar7;
        if (iVar8 <= iVar7 + 4) goto LAB_0004c04c;
LAB_0004be1c:
        iVar8 = iVar8 - iVar7;
      }
      else {
        iVar8 = piVar13[1];
        iVar9 = iVar7 + -4;
        if (iVar7 + 4 < iVar8) goto LAB_0004be1c;
LAB_0004c04c:
        iVar8 = 4;
      }
      if (iVar10 == 0) {
        trap(7);
      }
      if (iVar10 == 0) {
        trap(7);
      }
      uVar14 = (iVar10 - (iVar8 + iVar9) % iVar10) % iVar10 + iVar8;
      if (0xff < (int)uVar14) {
        iVar1 = (**(code **)(pcVar20 + 0xc62fc))
                          (*(int *)(pcVar20 + 0xc56a4) + -0x54a0,
                           *(int *)(pcVar20 + 0xc56a4) + -0x6580,0x92d,
                           *(int *)(pcVar20 + 0xc56a4) + -0x1ce0);
        return iVar1;
      }
      piVar15 = (int *)0x0;
      if (iVar12 != 0) {
        piVar15 = *(int **)(iVar12 + 0x2c);
      }
      if (piVar13[7] < (int)(uVar14 + iVar7 + (int)piVar15)) {
        FUN_0004b2d8(piVar13);
      }
      *(char *)(piVar13[4] + 4) = (char)uVar14;
      uVar11 = 0;
      if (0 < (int)uVar14) {
        do {
          uVar5 = (**(code **)(pcVar20 + 0xc5b64))();
          iVar10 = piVar13[4] + uVar11;
          uVar11 = uVar11 + 1;
          *(undefined1 *)(iVar10 + *piVar13) = uVar5;
          uVar3 = uVar11;
        } while (uVar14 != uVar11);
      }
      *(char *)piVar13[4] = (char)(uVar14 + *piVar13 + -4 >> 0x18);
      *(char *)(piVar13[4] + 1) = (char)(uVar14 + *piVar13 + -4 >> 0x10);
      *(char *)(piVar13[4] + 2) = (char)(uVar14 + *piVar13 + -4 >> 8);
      piVar17 = (int *)((uVar14 & 0xff) + *piVar13 + -4);
      *(char *)(piVar13[4] + 3) = (char)piVar17;
      iVar10 = *(int *)(iVar1 + 0x60);
      if (iVar10 == 0) {
        iVar7 = *(int *)(iVar1 + 0x70);
        iVar12 = piVar13[4];
        if (iVar7 != 0) {
          iVar9 = uVar14 + *piVar13;
          if (*(int *)(iVar1 + 0x78) == 0) goto LAB_0004bfa4;
LAB_0004c100:
          pcVar21 = *(code **)(iVar7 + 0xc);
LAB_0004c104:
          (*pcVar21)(*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));
          iVar12 = piVar13[4];
        }
      }
      else {
        iVar12 = piVar13[4];
        if ((*(uint *)(iVar10 + 0x30) & 2) == 0) {
          iVar7 = *(int *)(iVar1 + 0x70);
          if (iVar7 != 0) {
            iVar9 = uVar14 + *piVar13;
            if (*(int *)(iVar1 + 0x78) != 0) {
LAB_0004c0dc:
              (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12 + 4,iVar9 + -4);
              iVar12 = piVar13[4];
              iVar7 = *(int *)(iVar1 + 0x70);
              iVar9 = uVar14 + *piVar13;
              goto LAB_0004c100;
            }
            goto LAB_0004bfa4;
          }
        }
        else {
          (**(code **)(iVar10 + 0x18))
                    (*(undefined4 *)(iVar1 + 0x68),iVar12,4,*(undefined4 *)(iVar1 + 0x1ac));
          iVar7 = *(int *)(iVar1 + 0x70);
          if (iVar7 != 0) {
            iVar12 = piVar13[4];
            iVar9 = uVar14 + *piVar13;
            if (*(int *)(iVar1 + 0x78) != 0) {
              iVar10 = *(int *)(iVar1 + 0x60);
              if (iVar10 != 0) goto LAB_0004c0dc;
              pcVar21 = *(code **)(iVar7 + 0xc);
              goto LAB_0004c104;
            }
LAB_0004bfa4:
            (**(code **)(iVar7 + 0xc))
                      (*(undefined4 *)(iVar1 + 0x80),iVar12,iVar9,*(undefined4 *)(iVar1 + 0x1ac));
          }
          iVar10 = *(int *)(iVar1 + 0x60);
          iVar12 = piVar13[4];
          if (iVar10 == 0) goto LAB_0004bfe0;
        }
        (**(code **)(iVar10 + 0x10))(*(undefined4 *)(iVar1 + 0x68),iVar12,uVar14 + *piVar13);
        iVar12 = piVar13[4];
      }
LAB_0004bfe0:
      iVar7 = *piVar13;
      iVar10 = uVar14 + iVar7 + (int)piVar15;
      *(int *)(iVar1 + 0x1ac) = *(int *)(iVar1 + 0x1ac) + 1;
      piVar13[8] = uVar14 + iVar7;
      piVar13[5] = iVar12;
    }
    else {
      *(char *)(piVar13[4] + 1) = (char)((uint)(iVar7 + -5) >> 0x18);
      *(char *)(piVar13[4] + 2) = (char)((uint)(*piVar13 + -5) >> 0x10);
      *(char *)(piVar13[4] + 3) = (char)((uint)(*piVar13 + -5) >> 8);
      *(char *)(piVar13[4] + 4) = (char)*piVar13 + -5;
      iVar7 = *(int *)(iVar1 + 0x1ac);
      iVar10 = *piVar13 + -1;
      piVar13[5] = piVar13[4] + 1;
      *(int *)(iVar1 + 0x1ac) = iVar7 + 1;
    }
    if (iStack_124 == *piVar16) {
      return iVar10;
    }
    iVar10 = iStack_124;
    (**(code **)(pcVar20 + 0xc6674))();
LAB_0004c510:
    piVar13[6] = iVar10;
    piVar18 = piVar15;
LAB_0004c1fc:
    FUN_00047b74(piVar13,piVar18,piVar17);
    iVar10 = piVar13[6];
    piVar15 = aiStack_120 + uVar3 * 3;
    aiStack_154[uVar3 * 3 + 2] = 1;
    aiStack_154[uVar3 * 3] = iVar10;
    FUN_00047b74(piVar13,piVar18,piVar17);
    if (iStack_15c != 0) {
      aiStack_154[uVar3 * 3 + 1] = piVar13[6] - aiStack_154[uVar3 * 3];
    }
  } while( true );
}

