
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

int ssh2_pkt_construct(Ssh_conflict ssh,Packet *pkt)

{
  char *texttype;
  uchar uVar2;
  ssh2_cipher *psVar1;
  int iVar3;
  int iVar4;
  ulong uVar5;
  long lVar6;
  Ssh_conflict ssh_00;
  ssh_mac *psVar7;
  Packet *pPVar8;
  size_t n;
  uchar *puVar9;
  uint type;
  int iVar10;
  uchar **ppuVar11;
  uchar **ppuVar12;
  uchar **ppuVar13;
  uchar *puVar14;
  uchar **unaff_s3;
  int *piVar15;
  int *unaff_s5;
  int in_t9;
  _func_void_void_ptr_uchar_ptr_int_ulong *p_Var16;
  code *pcVar17;
  code *pcVar18;
  undefined4 uStackY_c0;
  undefined4 uStackY_bc;
  Packet *pPStackY_b4;
  uchar **ppuStackY_b0;
  uchar **ppuStackY_ac;
  uchar **ppuStackY_a8;
  code *pcStackY_a4;
  uchar *newpayload;
  int newlen;
  logblank_t blanks [4];
  uchar *puStack_28;
  
  puVar9 = (uchar *)pkt->length;
  piVar15 = *(int **)(in_t9 + 0x7a070);
  iVar3 = *piVar15;
  if (ssh->logctx == (void *)0x0) goto LAB_00033da4;
  ppuVar11 = (uchar **)ssh->logomitdata;
  iVar4 = pkt->type;
  pkt->savedpos = 0;
  pkt->length = (int)puVar9 - ((int)pkt->body - (int)pkt->data);
  if ((ppuVar11 != (uchar **)0x0) && (ppuVar11 = (uchar **)0x0, iVar4 - 0x5eU < 2)) {
    pPVar8 = pkt;
    ssh_pkt_getuint32(pkt);
    if (pkt->type == 0x5f) {
      ssh_pkt_getuint32(pPVar8);
    }
    blanks[0].type = 2;
    blanks[0].offset = pkt->savedpos + 4;
    ssh_pkt_getstring(pkt,(char **)&newpayload,&newlen);
    if (newpayload == (uchar *)0x0) {
      iVar4 = pkt->type;
      ppuVar11 = (uchar **)0x0;
    }
    else {
      ppuVar11 = (uchar **)0x1;
      iVar4 = pkt->type;
    }
  }
  if (iVar4 == 0x32) {
    iVar4 = conf_get_int(ssh->conf,0x7b);
    if (iVar4 != 0) {
      unaff_s5 = &newlen;
      unaff_s3 = &newpayload;
      pkt->savedpos = 0;
      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);
      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);
      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);
      if (newlen == 8) {
        iVar4 = (**(code **)(in_t9 + 0x7a054))(newpayload,*(int *)(del234 + in_t9 + 4) + -0x1d5c,8);
        iVar10 = pkt->length;
        ppuVar13 = ppuVar11;
        if (iVar4 != 0) goto LAB_00033d20;
        iVar4 = pkt->savedpos;
        if (0 < iVar10 - iVar4) {
          iVar4 = iVar4 + 1;
          pkt->savedpos = iVar4;
        }
        blanks[(int)ppuVar11].offset = iVar4;
        blanks[(int)ppuVar11].type = 1;
        ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);
        if (newpayload != (uchar *)0x0) {
          ppuVar13 = (uchar **)((int)ppuVar11 + 1);
          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;
          ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);
          unaff_s3 = ppuVar13;
          if (newpayload == (uchar *)0x0) {
            iVar10 = pkt->length;
            goto LAB_00033d20;
          }
          iVar10 = pkt->length;
          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar13].offset;
          goto LAB_00033d20;
        }
      }
      goto LAB_00033d1c;
    }
    iVar4 = pkt->type;
  }
  if ((ssh->pkt_actx == SSH2_PKTCTX_KBDINTER) && (iVar4 == 0x3d)) {
    iVar4 = conf_get_int(ssh->conf,0x7b);
    if (iVar4 != 0) {
      pkt->savedpos = 0;
      unaff_s5 = &newlen;
      ssh_pkt_getuint32(pkt);
      blanks[(int)ppuVar11].offset = pkt->savedpos;
      blanks[(int)ppuVar11].type = 1;
      do {
        ssh_pkt_getstring(pkt,(char **)&newpayload,unaff_s5);
      } while (newpayload != (uchar *)0x0);
      iVar10 = pkt->length;
      blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;
      ppuVar13 = (uchar **)((int)ppuVar11 + 1);
      unaff_s3 = &newpayload;
      goto LAB_00033d20;
    }
    iVar4 = pkt->type;
  }
  if ((iVar4 == 0x62) && (iVar4 = conf_get_int(ssh->conf,0x7b), iVar4 != 0)) {
    pkt->savedpos = 0;
    unaff_s5 = &newlen;
    unaff_s3 = &newpayload;
    pPVar8 = pkt;
    ssh_pkt_getuint32(pkt);
    ssh_pkt_getstring(pPVar8,(char **)unaff_s3,unaff_s5);
    if (newlen == 7) {
      iVar10 = pkt->savedpos;
      iVar4 = iVar10 + 1;
      ppuVar13 = unaff_s3;
      if (pkt->length - iVar10 < 1) goto LAB_0003420c;
      if (pkt->length - iVar4 < 1) goto LAB_00034520;
      pkt->savedpos = iVar10 + 2;
      goto LAB_0003420c;
    }
  }
LAB_00033d1c:
  iVar10 = pkt->length;
  ppuVar13 = ppuVar11;
LAB_00033d20:
  do {
    type = (uint)pkt->data[5];
    texttype = ssh2_pkt_type(ssh->pkt_kctx,ssh->pkt_actx,type);
    log_packet(ssh->logctx,1,type,texttype,pkt->body,iVar10,(int)ppuVar13,blanks,
               &ssh->v2_outgoing_sequence,pkt->downstream_id,pkt->additional_log_text);
    puVar9 = pkt->body + (pkt->length - (int)pkt->data);
    pkt->length = (long)puVar9;
LAB_00033da4:
    ppuVar11 = (uchar **)ssh->bare_connection;
    if (ppuVar11 == (uchar **)0x0) {
      if (ssh->cscomp != (ssh_compress *)0x0) {
        iVar4 = (*ssh->cscomp->compress)
                          (ssh->cs_comp_ctx,pkt->data + 5,(int)(puVar9 + -5),&newpayload,&newlen);
        if (iVar4 != 0) {
                    /* WARNING: Subroutine does not return */
          pkt->length = 5;
          ssh_pkt_adddata(pkt,newpayload,newlen);
        }
        puVar9 = (uchar *)pkt->length;
      }
      if (ssh->cscipher == (ssh2_cipher *)0x0) {
        iVar4 = 8;
      }
      else {
        iVar10 = ssh->cscipher->blksize;
        iVar4 = 8;
        if (7 < iVar10) {
          iVar4 = iVar10;
        }
      }
      psVar7 = ssh->csmac;
      if ((psVar7 == (ssh_mac *)0x0) || (ssh->csmac_etm == 0)) {
        iVar10 = pkt->forcepad;
        puVar14 = puVar9;
        if ((int)(puVar9 + 4) < iVar10) goto LAB_00033e2c;
LAB_0003405c:
        iVar10 = 4;
      }
      else {
        iVar10 = pkt->forcepad;
        puVar14 = puVar9 + -4;
        if (iVar10 <= (int)(puVar9 + 4)) goto LAB_0003405c;
LAB_00033e2c:
        iVar10 = iVar10 - (int)puVar9;
      }
      if (iVar4 == 0) {
        trap(7);
      }
      if (iVar4 == 0) {
        trap(7);
      }
      ppuVar13 = (uchar **)((iVar4 - (int)(puVar14 + iVar10) % iVar4) % iVar4 + iVar10);
      if (0xff < (int)ppuVar13) {
        iVar3 = 0x92d;
        pcVar17 = *(code **)(in_t9 + 0x79e9c);
        pPVar8 = (Packet *)(*(int *)(del234 + in_t9 + 4) + -0x3c40);
        pcVar18 = ssh2_pkt_defer_noqueue;
        ssh_00 = (Ssh_conflict)(*(int *)(del234 + in_t9 + 4) + -0x2b60);
        (*pcVar17)();
        uStackY_bc = **(undefined4 **)(pcVar17 + 0x7978c);
        pPStackY_b4 = pkt;
        ppuStackY_b0 = ppuVar11;
        ppuStackY_ac = ppuVar13;
        ppuStackY_a8 = unaff_s3;
        pcStackY_a4 = pcVar18;
        if ((((ssh_00->cscipher != (ssh2_cipher *)0x0) && ((ssh_00->cscipher->flags & 1) != 0)) &&
            (iVar3 == 0 && ssh_00->deferred_len == 0)) && ((ssh_00->remote_bugs & 0x200U) == 0)) {
          pPVar8 = ssh2_pkt_init(2);
          uStackY_c0 = 0;
                    /* WARNING: Subroutine does not return */
          ssh_pkt_adddata(pPVar8,&uStackY_c0,4);
        }
        iVar3 = ssh2_pkt_construct(ssh_00,pPVar8);
        iVar4 = ssh_00->deferred_len;
        if (ssh_00->deferred_size < iVar4 + iVar3) {
          n = iVar4 + iVar3 + 0x80;
          ssh_00->deferred_size = n;
          puVar9 = (uchar *)saferealloc(ssh_00->deferred_send_data,n,1);
          iVar4 = ssh_00->deferred_len;
          ssh_00->deferred_send_data = puVar9;
        }
        else {
          puVar9 = ssh_00->deferred_send_data;
        }
        (**(code **)(pcVar17 + 0x79790))(puVar9 + iVar4,pPVar8->body,iVar3);
        iVar4 = pPVar8->encrypted_len;
        puVar9 = pPVar8->data;
        ssh_00->deferred_len = ssh_00->deferred_len + iVar3;
                    /* WARNING: Subroutine does not return */
        ssh_00->deferred_data_size = ssh_00->deferred_data_size + iVar4;
        safefree(puVar9);
      }
      unaff_s3 = (uchar **)0x0;
      if (psVar7 != (ssh_mac *)0x0) {
        unaff_s3 = (uchar **)psVar7->len;
      }
      if (pkt->maxlen < (int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3)) {
        ssh_pkt_ensure(pkt,(int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3));
      }
      pkt->data[4] = (uchar)ppuVar13;
      ppuVar12 = (uchar **)0x0;
      if (0 < (int)ppuVar13) {
        do {
          uVar2 = (**(code **)(in_t9 + 0x79a48))();
          puVar9 = pkt->data + (int)ppuVar12;
          ppuVar12 = (uchar **)((int)ppuVar12 + 1);
          puVar9[pkt->length] = uVar2;
          ppuVar11 = ppuVar12;
        } while (ppuVar13 != ppuVar12);
      }
      *pkt->data = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x18);
      pkt->data[1] = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x10);
      pkt->data[2] = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 8);
      unaff_s5 = (int *)(((uint)ppuVar13 & 0xff) + pkt->length + -4);
      pkt->data[3] = (uchar)unaff_s5;
      psVar1 = ssh->cscipher;
      if (psVar1 == (ssh2_cipher *)0x0) {
        psVar7 = ssh->csmac;
        puVar9 = pkt->data;
        if (psVar7 != (ssh_mac *)0x0) {
          iVar4 = (int)ppuVar13 + pkt->length;
          if (ssh->csmac_etm == 0) goto LAB_00033fb4;
LAB_00034110:
          p_Var16 = psVar7->generate;
LAB_00034114:
          (*p_Var16)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);
          puVar9 = pkt->data;
        }
      }
      else {
        puVar9 = pkt->data;
        if ((psVar1->flags & 2) == 0) {
          psVar7 = ssh->csmac;
          if (psVar7 != (ssh_mac *)0x0) {
            iVar4 = (int)ppuVar13 + pkt->length;
            if (ssh->csmac_etm != 0) {
LAB_000340ec:
              (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9 + 4,iVar4 + -4);
              puVar9 = pkt->data;
              psVar7 = ssh->csmac;
              iVar4 = (int)ppuVar13 + pkt->length;
              goto LAB_00034110;
            }
            goto LAB_00033fb4;
          }
        }
        else {
          (*psVar1->encrypt_length)(ssh->cs_cipher_ctx,puVar9,4,ssh->v2_outgoing_sequence);
          psVar7 = ssh->csmac;
          if (psVar7 != (ssh_mac *)0x0) {
            puVar9 = pkt->data;
            iVar4 = (int)ppuVar13 + pkt->length;
            if (ssh->csmac_etm != 0) {
              psVar1 = ssh->cscipher;
              if (psVar1 != (ssh2_cipher *)0x0) goto LAB_000340ec;
              p_Var16 = psVar7->generate;
              goto LAB_00034114;
            }
LAB_00033fb4:
            (*psVar7->generate)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);
          }
          psVar1 = ssh->cscipher;
          puVar9 = pkt->data;
          if (psVar1 == (ssh2_cipher *)0x0) goto LAB_00033ff0;
        }
        (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9,(int)ppuVar13 + pkt->length);
        puVar9 = pkt->data;
      }
LAB_00033ff0:
      iVar10 = (int)ppuVar13 + pkt->length;
      iVar4 = iVar10 + (int)unaff_s3;
      ssh->v2_outgoing_sequence = ssh->v2_outgoing_sequence + 1;
      pkt->encrypted_len = iVar10;
      pkt->body = puVar9;
    }
    else {
      pkt->data[1] = (uchar)((uint)(puVar9 + -5) >> 0x18);
      pkt->data[2] = (uchar)((uint)(pkt->length + -5) >> 0x10);
      pkt->data[3] = (uchar)((uint)(pkt->length + -5) >> 8);
      pkt->data[4] = (char)pkt->length + 0xfb;
      uVar5 = ssh->v2_outgoing_sequence;
      iVar4 = pkt->length + -1;
      pkt->body = pkt->data + 1;
      ssh->v2_outgoing_sequence = uVar5 + 1;
    }
    if (iVar3 == *piVar15) {
      return iVar4;
    }
    iVar4 = iVar3;
    (**(code **)(in_t9 + 0x7a040))();
LAB_00034520:
    pkt->savedpos = iVar4;
    ppuVar13 = unaff_s3;
LAB_0003420c:
    ssh_pkt_getstring(pkt,(char **)ppuVar13,unaff_s5);
    lVar6 = pkt->savedpos;
    unaff_s3 = &puStack_28 + (int)ppuVar11 * 3;
    blanks[(int)ppuVar11].type = 1;
    blanks[(int)ppuVar11].offset = lVar6;
    ssh_pkt_getstring(pkt,(char **)ppuVar13,unaff_s5);
    if (newpayload == (uchar *)0x0) goto LAB_00033d1c;
    iVar10 = pkt->length;
    blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;
    ppuVar13 = (uchar **)((int)ppuVar11 + 1);
  } while( true );
}



int FUN_00033c64(int param_1,int *param_2)

{
  undefined *puVar1;
  undefined1 uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  int iVar9;
  uint uVar10;
  int *unaff_s3;
  int *piVar11;
  int *unaff_s5;
  code *pcVar12;
  int local_64;
  int local_60;
  int local_5c [12];
  int local_2c;
  int iStack_28;
  
  puVar1 = PTR___stack_chk_guard_000adcd4;
  iVar5 = *param_2;
  local_2c = *(int *)PTR___stack_chk_guard_000adcd4;
  if (*(int *)(param_1 + 0x18) == 0) goto LAB_00033da4;
  uVar7 = *(uint *)(param_1 + 0x24c);
  iVar3 = param_2[2];
  param_2[6] = 0;
  *param_2 = iVar5 - (param_2[5] - param_2[4]);
  if ((uVar7 != 0) && (uVar7 = 0, iVar3 - 0x5eU < 2)) {
    FUN_0002f068(param_2);
    if (param_2[2] == 0x5f) {
      FUN_0002f068();
    }
    local_5c[2] = 2;
    local_5c[0] = param_2[6] + 4;
    FUN_0002fb84(param_2,&local_64,&local_60);
    if (local_64 == 0) {
      iVar3 = param_2[2];
      uVar7 = 0;
    }
    else {
      uVar7 = 1;
      iVar3 = param_2[2];
    }
  }
  if (iVar3 == 0x32) {
    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);
    if (iVar5 != 0) {
      unaff_s5 = &local_60;
      unaff_s3 = &local_64;
      param_2[6] = 0;
      FUN_0002fb84(param_2,unaff_s3,unaff_s5);
      FUN_0002fb84(param_2,unaff_s3,unaff_s5);
      FUN_0002fb84(param_2,unaff_s3,unaff_s5);
      if (local_60 == 8) {
        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);
        if (iVar5 == 0) {
          iVar5 = param_2[6];
          if (0 < *param_2 - iVar5) {
            iVar5 = iVar5 + 1;
            param_2[6] = iVar5;
          }
          local_5c[uVar7 * 3] = iVar5;
          local_5c[uVar7 * 3 + 2] = 1;
          FUN_0002fb84(param_2,unaff_s3,unaff_s5);
          if (local_64 != 0) {
            piVar11 = (int *)(uVar7 + 1);
            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];
            FUN_0002fb84(param_2,unaff_s3,unaff_s5);
            unaff_s3 = piVar11;
            if (local_64 != 0) {
              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];
            }
          }
        }
      }
      goto LAB_00033d20;
    }
    iVar3 = param_2[2];
  }
  if ((*(int *)(param_1 + 0x188) == 4) && (iVar3 == 0x3d)) {
    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);
    if (iVar5 != 0) {
      param_2[6] = 0;
      unaff_s5 = &local_60;
      FUN_0002f068(param_2);
      local_5c[uVar7 * 3] = param_2[6];
      local_5c[uVar7 * 3 + 2] = 1;
      do {
        FUN_0002fb84(param_2,&local_64,unaff_s5);
      } while (local_64 != 0);
      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];
      unaff_s3 = &local_64;
      goto LAB_00033d20;
    }
    iVar3 = param_2[2];
  }
  if ((iVar3 == 0x62) && (iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0))
  {
    param_2[6] = 0;
    unaff_s5 = &local_60;
    unaff_s3 = &local_64;
    FUN_0002f068(param_2);
    FUN_0002fb84();
    if (local_60 == 7) {
      iVar3 = param_2[6];
      iVar5 = iVar3 + 1;
      piVar11 = unaff_s3;
      if (*param_2 - iVar3 < 1) goto LAB_0003420c;
      if (*param_2 - iVar5 < 1) goto LAB_00034520;
      param_2[6] = iVar3 + 2;
      goto LAB_0003420c;
    }
  }
LAB_00033d20:
  do {
    FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),
                 *(undefined1 *)(param_2[4] + 5));
    log_packet(*(undefined4 *)(param_1 + 0x18),1);
    iVar5 = (param_2[5] - param_2[4]) + *param_2;
    *param_2 = iVar5;
LAB_00033da4:
    uVar7 = *(uint *)(param_1 + 0xec);
    if (uVar7 == 0) {
      if (*(int *)(param_1 + 0x88) != 0) {
        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))
                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,
                           &local_60);
        if (iVar5 == 0) {
          iVar5 = *param_2;
        }
        else {
          *param_2 = 5;
          FUN_00033374(param_2,local_64,local_60);
          safefree(local_64);
          iVar5 = *param_2;
        }
      }
      if (*(int *)(param_1 + 0x60) == 0) {
        iVar3 = 8;
      }
      else {
        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);
        iVar3 = 8;
        if (7 < iVar9) {
          iVar3 = iVar9;
        }
      }
      iVar9 = *(int *)(param_1 + 0x70);
      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {
        iVar4 = param_2[1];
        iVar6 = iVar5;
        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;
LAB_0003405c:
        iVar4 = 4;
      }
      else {
        iVar4 = param_2[1];
        iVar6 = iVar5 + -4;
        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;
LAB_00033e2c:
        iVar4 = iVar4 - iVar5;
      }
      if (iVar3 == 0) {
        trap(7);
      }
      if (iVar3 == 0) {
        trap(7);
      }
      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;
      if (0xff < (int)uVar10) {
        iVar5 = (*(code *)PTR___assert_fail_000adb00)
                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,
                           PTR_DAT_000ad2c8 + 0xc80);
        return iVar5;
      }
      unaff_s3 = (int *)0x0;
      if (iVar9 != 0) {
        unaff_s3 = *(int **)(iVar9 + 0x2c);
      }
      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {
        FUN_000332e8(param_2);
      }
      *(char *)(param_2[4] + 4) = (char)uVar10;
      uVar8 = 0;
      if (0 < (int)uVar10) {
        do {
          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();
          iVar5 = param_2[4] + uVar8;
          uVar8 = uVar8 + 1;
          *(undefined1 *)(iVar5 + *param_2) = uVar2;
          uVar7 = uVar8;
        } while (uVar10 != uVar8);
      }
      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);
      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);
      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);
      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);
      *(char *)(param_2[4] + 3) = (char)unaff_s5;
      iVar5 = *(int *)(param_1 + 0x60);
      if (iVar5 == 0) {
        iVar3 = *(int *)(param_1 + 0x70);
        iVar9 = param_2[4];
        if (iVar3 != 0) {
          iVar6 = uVar10 + *param_2;
          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;
LAB_00034110:
          pcVar12 = *(code **)(iVar3 + 0xc);
LAB_00034114:
          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));
          iVar9 = param_2[4];
        }
      }
      else {
        iVar9 = param_2[4];
        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {
          iVar3 = *(int *)(param_1 + 0x70);
          if (iVar3 != 0) {
            iVar6 = uVar10 + *param_2;
            if (*(int *)(param_1 + 0x78) != 0) {
LAB_000340ec:
              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);
              iVar9 = param_2[4];
              iVar3 = *(int *)(param_1 + 0x70);
              iVar6 = uVar10 + *param_2;
              goto LAB_00034110;
            }
            goto LAB_00033fb4;
          }
        }
        else {
          (**(code **)(iVar5 + 0x18))
                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));
          iVar3 = *(int *)(param_1 + 0x70);
          if (iVar3 != 0) {
            iVar9 = param_2[4];
            iVar6 = uVar10 + *param_2;
            if (*(int *)(param_1 + 0x78) != 0) {
              iVar5 = *(int *)(param_1 + 0x60);
              if (iVar5 != 0) goto LAB_000340ec;
              pcVar12 = *(code **)(iVar3 + 0xc);
              goto LAB_00034114;
            }
LAB_00033fb4:
            (**(code **)(iVar3 + 0xc))
                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))
            ;
          }
          iVar5 = *(int *)(param_1 + 0x60);
          iVar9 = param_2[4];
          if (iVar5 == 0) goto LAB_00033ff0;
        }
        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);
        iVar9 = param_2[4];
      }
LAB_00033ff0:
      iVar3 = *param_2;
      iVar5 = uVar10 + iVar3 + (int)unaff_s3;
      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;
      param_2[8] = uVar10 + iVar3;
      param_2[5] = iVar9;
    }
    else {
      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);
      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);
      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);
      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;
      iVar3 = *(int *)(param_1 + 0x1ac);
      iVar5 = *param_2 + -1;
      param_2[5] = param_2[4] + 1;
      *(int *)(param_1 + 0x1ac) = iVar3 + 1;
    }
    if (local_2c == *(int *)puVar1) {
      return iVar5;
    }
    iVar5 = local_2c;
    (*(code *)PTR___stack_chk_fail_000adca4)();
LAB_00034520:
    param_2[6] = iVar5;
    piVar11 = unaff_s3;
LAB_0003420c:
    FUN_0002fb84(param_2,piVar11,unaff_s5);
    iVar5 = param_2[6];
    unaff_s3 = &iStack_28 + uVar7 * 3;
    local_5c[uVar7 * 3 + 2] = 1;
    local_5c[uVar7 * 3] = iVar5;
    FUN_0002fb84(param_2,piVar11,unaff_s5);
    if (local_64 != 0) {
      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];
    }
  } while( true );
}


lui gp,0x8
addiu gp,gp,0x162c
addu gp,gp,t9
addiu sp,sp,-0xa0
lw v0,0x18(a0)
lw a2,0x0(a1)
sw s4,0x8c(sp)
lw s4,-0x75bc(gp)
sw gp,0x30(sp)
sw s6,0x94(sp)
or s6,a0,zero
sw s0,0x7c(sp)
or s0,a1,zero
sw ra,0x9c(sp)
sw s7,0x98(sp)
sw s5,0x90(sp)
sw s3,0x88(sp)
sw s2,0x84(sp)
sw s1,0x80(sp)
lw v1,0x0(s4)
sw v1,0x74(sp)
beq v0,zero,0x00033da4
_nop
lw v0,0x14(a1)
lw a0,0x10(a1)
lw s1,0x24c(s6)
lw v1,0x8(a1)
subu v0,v0,a0
sw zero,0x18(a1)
subu a2,a2,v0
beq s1,zero,0x00033cf4
_sw a2,0x0(a1)
addiu v0,v1,-0x5e
sltiu v0,v0,0x2
bne v0,zero,0x00034280
_or s1,zero,zero
li v0,0x32
beq v1,v0,0x00034170
_lw t9,-0x7f44(gp)
lw a0,0x188(s6)
li v0,0x4
beq a0,v0,0x000342f0
_li v0,0x3d
li v0,0x62
beq v1,v0,0x0003418c
_lw t9,-0x7f44(gp)
lw t1,0x0(s0)
lw v0,0x10(s0)
lw t9,-0x7ce0(gp)
lw a1,0x188(s6)
lw a0,0x184(s6)
lbu t0,0x5(v0)
addiu t9,t9,0x1e0c
bal 0x00031e0c
_or a2,t0,zero
addiu v1,s6,0x1ac
lw gp,0x30(sp)
or a3,v0,zero
lw t4,0x28(s0)
addiu v0,sp,0x44
lw t3,0x24(s0)
li a1,0x1
lw t2,0x14(s0)
lw a0,0x18(s6)
lw t9,-0x7c20(gp)
sw v0,0x1c(sp)
sw t4,0x28(sp)
sw t3,0x24(sp)
sw v1,0x20(sp)
sw s1,0x18(sp)
sw t1,0x14(sp)
bal 0x00020ac4
_sw t2,0x10(sp)
lw a2,0x14(s0)
lw v0,0x10(s0)
lw a1,0x0(s0)
lw gp,0x30(sp)
subu a2,a2,v0
addu a2,a2,a1
sw a2,0x0(s0)
lw s1,0xec(s6)
bne s1,zero,0x00034064
_nop
lw v0,0x88(s6)
beq v0,zero,0x00033de8
_addiu v1,sp,0x40
lw a1,0x10(s0)
lw a0,0x90(s6)
addiu a3,sp,0x3c
sw v1,0x10(sp)
addiu a2,a2,-0x5
lw t9,0x10(v0)
jalr t9
_addiu a1,a1,0x5
bne v0,zero,0x00034134
_lw gp,0x30(sp)
lw a2,0x0(s0)
lw v0,0x60(s6)
beq v0,zero,0x0003412c
_li v1,0x8
lw s2,0x24(v0)
slti v0,s2,0x8
movz v1,s2,v0
or v0,v1,zero
lw a1,0x70(s6)
beq a1,zero,0x00034048
_nop
lw v1,0x78(s6)
beq v1,zero,0x00034048
_addiu a0,a2,0x4
lw v1,0x4(s0)
slt a0,a0,v1
beq a0,zero,0x0003405c
_addiu s2,a2,-0x4
subu v1,v1,a2
addu s2,v1,s2
teq v0,zero
div s2,v0
mfhi s2
subu s2,v0,s2
teq v0,zero
div s2,v0
mfhi s2
addu s2,s2,v1
slti v0,s2,0x100
beq v0,zero,0x00034528
_lw a3,-0x7fc8(gp)
beq a1,zero,0x00033e6c
_or s3,zero,zero
lw s3,0x2c(a1)
addu a2,s2,a2
lw v0,0x1c(s0)
addu a1,a2,s3
slt v0,v0,a1
beq v0,zero,0x00033e94
_lw t9,-0x7ce0(gp)
addiu t9,t9,0x32e8
bal 0x000332e8
_or a0,s0,zero
lw gp,0x30(sp)
lw v0,0x10(s0)
andi s5,s2,0xff
blez s2,0x00033ed0
_sb s5,0x4(v0)
lw t9,-0x7be4(gp)
jalr t9
_nop
lw v1,0x10(s0)
lw a0,0x0(s0)
lw gp,0x30(sp)
addu v1,v1,s1
addiu s1,s1,0x1
addu v1,v1,a0
bne s2,s1,0x00033ea4
_sb v0,0x0(v1)
lw v0,0x0(s0)
lw v1,0x10(s0)
addu v0,s2,v0
addiu v0,v0,-0x4
sra v0,v0,0x18
sb v0,0x0(v1)
lw v0,0x0(s0)
lw v1,0x10(s0)
addu v0,s2,v0
addiu v0,v0,-0x4
sra v0,v0,0x10
sb v0,0x1(v1)
lw v0,0x0(s0)
lw v1,0x10(s0)
addu v0,s2,v0
addiu v0,v0,-0x4
sra v0,v0,0x8
sb v0,0x2(v1)
lw v0,0x0(s0)
lw v1,0x10(s0)
addiu v0,v0,-0x4
addu s5,s5,v0
sb s5,0x3(v1)
lw v0,0x60(s6)
beq v0,zero,0x00033f94
_nop
lw v1,0x30(v0)
andi v1,v1,0x2
beq v1,zero,0x000340d0
_lw a1,0x10(s0)
lw a0,0x68(s6)
li a2,0x4
lw t9,0x18(v0)
jalr t9
_lw a3,0x1ac(s6)
lw v1,0x70(s6)
lw gp,0x30(sp)
beq v1,zero,0x00033fc8
_or a0,v1,zero
lw a2,0x0(s0)
lw v0,0x78(s6)
lw a1,0x10(s0)
beq v0,zero,0x00033fb4
_addu a2,s2,a2
lw v0,0x60(s6)
bne v0,zero,0x000340ec
_nop
b 0x00034114
_lw t9,0xc(v1)
lw v1,0x70(s6)
lw a1,0x10(s0)
beq v1,zero,0x00033ff0
_or a0,v1,zero
lw a2,0x0(s0)
lw v0,0x78(s6)
bne v0,zero,0x00034110
_addu a2,s2,a2
lw t9,0xc(a0)
lw a3,0x1ac(s6)
jalr t9
_lw a0,0x80(s6)
lw gp,0x30(sp)
lw v0,0x60(s6)
beq v0,zero,0x00033ff0
_lw a1,0x10(s0)
lw a2,0x0(s0)
lw t9,0x10(v0)
lw a0,0x68(s6)
jalr t9
_addu a2,s2,a2
lw gp,0x30(sp)
lw a1,0x10(s0)
lw v0,0x0(s0)
lw v1,0x1ac(s6)
addu s2,s2,v0
addiu v1,v1,0x1
addu v0,s2,s3
sw v1,0x1ac(s6)
sw s2,0x20(s0)
sw a1,0x14(s0)
lw a0,0x74(sp)
lw v1,0x0(s4)
bne a0,v1,0x00034514
_lw ra,0x9c(sp)
lw s7,0x98(sp)
lw s6,0x94(sp)
lw s5,0x90(sp)
lw s4,0x8c(sp)
lw s3,0x88(sp)
lw s2,0x84(sp)
lw s1,0x80(sp)
lw s0,0x7c(sp)
jr ra
_addiu sp,sp,0xa0
lw v1,0x4(s0)
addiu a0,a2,0x4
slt a0,a0,v1
bne a0,zero,0x00033e2c
_or s2,a2,zero
b 0x00033e30
_li v1,0x4
lw v0,0x10(s0)
addiu a2,a2,-0x5
sra a2,a2,0x18
sb a2,0x1(v0)
lw v0,0x0(s0)
lw v1,0x10(s0)
addiu v0,v0,-0x5
sra v0,v0,0x10
sb v0,0x2(v1)
lw v0,0x0(s0)
lw v1,0x10(s0)
addiu v0,v0,-0x5
sra v0,v0,0x8
sb v0,0x3(v1)
lw v0,0x0(s0)
lw v1,0x10(s0)
addiu v0,v0,-0x5
sb v0,0x4(v1)
lw v1,0x1ac(s6)
lw a0,0x10(s0)
lw v0,0x0(s0)
addiu v1,v1,0x1
addiu a0,a0,0x1
addiu v0,v0,-0x1
sw a0,0x14(s0)
b 0x00034010
_sw v1,0x1ac(s6)
lw a0,0x70(s6)
beq a0,zero,0x00033fd4
_nop
lw a2,0x0(s0)
lw v1,0x78(s6)
beq v1,zero,0x00033fb4
_addu a2,s2,a2
lw t9,0x10(v0)
addiu a2,a2,-0x4
lw a0,0x68(s6)
jalr t9
_addiu a1,a1,0x4
lw a2,0x0(s0)
lw a1,0x10(s0)
lw v1,0x70(s6)
addu a2,s2,a2
lw t9,0xc(v1)
lw a3,0x1ac(s6)
jalr t9
_lw a0,0x80(s6)
lw gp,0x30(sp)
b 0x00033ff0
_lw a1,0x10(s0)
b 0x00033e04
_li v0,0x8
lw t9,-0x7ce0(gp)
li v0,0x5
lw a2,0x40(sp)
or a0,s0,zero
lw a1,0x3c(sp)
addiu t9,t9,0x3374
bal 0x00033374
_sw v0,0x0(s0)
lw gp,0x30(sp)
lw t9,-0x7f10(gp)
bal 0x00022dc4
_lw a0,0x3c(sp)
lw gp,0x30(sp)
b 0x00033de8
_lw a2,0x0(s0)
li a1,0x7b
bal 0x0001cde0
_lw a0,0x248(s6)
bne v0,zero,0x00034324
_lw gp,0x30(sp)
b 0x00033d00
_lw v1,0x8(s0)
li a1,0x7b
bal 0x0001cde0
_lw a0,0x248(s6)
beq v0,zero,0x00033d1c
_lw gp,0x30(sp)
lw t9,-0x7ce0(gp)
or a0,s0,zero
sw zero,0x18(s0)
addiu s5,sp,0x40
addiu t9,t9,-0xf98
bal 0x0002f068
_addiu s3,sp,0x3c
or a2,s5,zero
lw gp,0x30(sp)
lw s2,-0x7ce0(gp)
addiu s2,s2,-0x47c
or t9,s2,zero
bal 0x0002fb84
_or a1,s3,zero
li v0,0x7
lw v1,0x40(sp)
bne v1,v0,0x00033d1c
_lw gp,0x30(sp)
lw v1,0x0(s0)
lw v0,0x18(s0)
subu a0,v1,v0
blez a0,0x0003420c
_addiu a0,v0,0x1
subu v1,v1,a0
blez v1,0x00034520
_addiu v0,v0,0x2
sw v0,0x18(s0)
or a1,s3,zero
or a2,s5,zero
or t9,s2,zero
bal 0x0002fb84
_or a0,s0,zero
sll v0,s1,0x1
addiu a0,sp,0x78
lw v1,0x18(s0)
addu v0,v0,s1
or a1,s3,zero
sll v0,v0,0x2
or a2,s5,zero
addu s3,a0,v0
li v0,0x1
or a0,s0,zero
sw v0,-0x2c(s3)
or t9,s2,zero
bal 0x0002fb84
_sw v1,-0x34(s3)
lw v0,0x3c(sp)
beq v0,zero,0x00033d1c
_lw gp,0x30(sp)
lw v0,0x18(s0)
addiu s1,s1,0x1
lw v1,-0x34(s3)
lw t1,0x0(s0)
subu v0,v0,v1
b 0x00033d20
_sw v0,-0x30(s3)
lw t9,-0x7ce0(gp)
addiu t9,t9,-0xf98
bal 0x0002f068
_or a0,a1,zero
li v0,0x5f
lw v1,0x8(s0)
beq v1,v0,0x00034460
_lw gp,0x30(sp)
lw s2,-0x7ce0(gp)
li v1,0x2
lw v0,0x18(s0)
addiu a2,sp,0x40
addiu a1,sp,0x3c
sw v1,0x4c(sp)
addiu s2,s2,-0x47c
addiu v0,v0,0x4
or a0,s0,zero
or t9,s2,zero
bal 0x0002fb84
_sw v0,0x44(sp)
lw v0,0x3c(sp)
beq v0,zero,0x00034318
_lw gp,0x30(sp)
lw v0,0x40(sp)
li s1,0x1
lw v1,0x8(s0)
b 0x00033cf4
_sw v0,0x48(sp)
bne v1,v0,0x00033d14
_li v0,0x62
lw t9,-0x7f44(gp)
li a1,0x7b
bal 0x0001cde0
_lw a0,0x248(s6)
bne v0,zero,0x00034470
_lw gp,0x30(sp)
b 0x00033d10
_lw v1,0x8(s0)
lw v1,0x8(s0)
b 0x00033cf4
_or s1,zero,zero
lw s2,-0x7ce0(gp)
addiu s5,sp,0x40
addiu s3,sp,0x3c
sw zero,0x18(s0)
or a2,s5,zero
addiu s2,s2,-0x47c
or a1,s3,zero
or t9,s2,zero
bal 0x0002fb84
_or a0,s0,zero
or a2,s5,zero
or a1,s3,zero
or t9,s2,zero
bal 0x0002fb84
_or a0,s0,zero
or a2,s5,zero
or a1,s3,zero
or t9,s2,zero
bal 0x0002fb84
_or a0,s0,zero
li v0,0x8
lw v1,0x40(sp)
bne v1,v0,0x00033d1c
_lw gp,0x30(sp)
lw a1,-0x7fc8(gp)
li a2,0x8
lw t9,-0x75d8(gp)
lw a0,0x3c(sp)
jalr t9
_addiu a1,a1,-0x1d5c
lw gp,0x30(sp)
bne v0,zero,0x00033d20
_lw t1,0x0(s0)
lw v0,0x18(s0)
subu t1,t1,v0
blez t1,0x000343c0
_sll s7,s1,0x1
addiu v0,v0,0x1
sw v0,0x18(s0)
addiu v1,sp,0x78
addu s7,s7,s1
or a2,s5,zero
sll s7,s7,0x2
or a1,s3,zero
addu s7,v1,s7
or a0,s0,zero
or t9,s2,zero
sw v0,-0x34(s7)
li v0,0x1
bal 0x0002fb84
_sw v0,-0x2c(s7)
lw v0,0x3c(sp)
beq v0,zero,0x00033d1c
_lw gp,0x30(sp)
lw v0,0x18(s0)
or a1,s3,zero
lw v1,-0x34(s7)
or a2,s5,zero
or a0,s0,zero
or t9,s2,zero
subu v0,v0,v1
addiu s3,s1,0x1
bal 0x0002fb84
_sw v0,-0x30(s7)
lw v0,0x3c(sp)
beq v0,zero,0x00034508
_lw gp,0x30(sp)
sll v0,s3,0x1
lw v1,0x18(s0)
addiu a0,sp,0x78
lw t1,0x0(s0)
addu v0,v0,s3
or s1,s3,zero
sll v0,v0,0x2
addu v0,a0,v0
lw v0,-0x34(v0)
subu v0,v1,v0
b 0x00033d20
_sw v0,-0x30(s7)
bal 0x0002f068
_nop
b 0x000342a0
_lw gp,0x30(sp)
lw t9,-0x7ce0(gp)
sll s7,s1,0x1
or a0,s0,zero
sw zero,0x18(s0)
addiu s5,sp,0x40
addiu t9,t9,-0xf98
bal 0x0002f068
_addiu s3,sp,0x3c
addu v0,s7,s1
lw gp,0x30(sp)
addiu a0,sp,0x78
sll v0,v0,0x2
lw v1,0x18(s0)
addu v0,a0,v0
lw s2,-0x7ce0(gp)
sw v1,-0x34(v0)
li v1,0x1
addiu s2,s2,-0x47c
sw v1,-0x2c(v0)
or a2,s5,zero
or a1,s3,zero
or t9,s2,zero
bal 0x0002fb84
_or a0,s0,zero
lw v0,0x3c(sp)
bne v0,zero,0x000344bc
_lw gp,0x30(sp)
addu v0,s7,s1
lw v1,0x18(s0)
addiu a0,sp,0x78
lw t1,0x0(s0)
sll v0,v0,0x2
addiu s1,s1,0x1
addu v0,a0,v0
lw a0,-0x34(v0)
subu v1,v1,a0
b 0x00033d20
_sw v1,-0x30(v0)
lw t1,0x0(s0)
b 0x00033d20
_or s1,s3,zero
lw t9,-0x75ec(gp)
jalr t9
_nop
b 0x0003420c
_sw a0,0x18(s0)
li a2,0x92d
lw a1,-0x7fc8(gp)
lw a0,-0x7fc8(gp)
lw t9,-0x7790(gp)
addiu a3,a3,0xc80
addiu a1,a1,-0x3c40
jalr t9
_addiu a0,a0,-0x2b60
(translation_unit "int FUN_00033c64(int param_1,int *param_2)\n\n{\n  undefined *puVar1;\n  undefined1 uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  int *unaff_s3;\n  int *piVar11;\n  int *unaff_s5;\n  code *pcVar12;\n  int local_64;\n  int local_60;\n  int local_5c [12];\n  int local_2c;\n  int iStack_28;\n  \n  puVar1 = PTR___stack_chk_guard_000adcd4;\n  iVar5 = *param_2;\n  local_2c = *(int *)PTR___stack_chk_guard_000adcd4;\n  if (*(int *)(param_1 + 0x18) == 0) goto LAB_00033da4;\n  uVar7 = *(uint *)(param_1 + 0x24c);\n  iVar3 = param_2[2];\n  param_2[6] = 0;\n  *param_2 = iVar5 - (param_2[5] - param_2[4]);\n  if ((uVar7 != 0) && (uVar7 = 0, iVar3 - 0x5eU < 2)) {\n    FUN_0002f068(param_2);\n    if (param_2[2] == 0x5f) {\n      FUN_0002f068();\n    }\n    local_5c[2] = 2;\n    local_5c[0] = param_2[6] + 4;\n    FUN_0002fb84(param_2,&local_64,&local_60);\n    if (local_64 == 0) {\n      iVar3 = param_2[2];\n      uVar7 = 0;\n    }\n    else {\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }\n  }\n  if (iVar3 == 0x32) {\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      unaff_s5 = &local_60;\n      unaff_s3 = &local_64;\n      param_2[6] = 0;\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }\n  if ((*(int *)(param_1 + 0x188) == 4) && (iVar3 == 0x3d)) {\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      param_2[6] = 0;\n      unaff_s5 = &local_60;\n      FUN_0002f068(param_2);\n      local_5c[uVar7 * 3] = param_2[6];\n      local_5c[uVar7 * 3 + 2] = 1;\n      do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n      unaff_s3 = &local_64;\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }\n  if ((iVar3 == 0x62) && (iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0))\n  {\n    param_2[6] = 0;\n    unaff_s5 = &local_60;\n    unaff_s3 = &local_64;\n    FUN_0002f068(param_2);\n    FUN_0002fb84();\n    if (local_60 == 7) {\n      iVar3 = param_2[6];\n      iVar5 = iVar3 + 1;\n      piVar11 = unaff_s3;\n      if (*param_2 - iVar3 < 1) goto LAB_0003420c;\n      if (*param_2 - iVar5 < 1) goto LAB_00034520;\n      param_2[6] = iVar3 + 2;\n      goto LAB_0003420c;\n    }\n  }\nLAB_00033d20:\n  do {\n    FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5));\n    log_packet(*(undefined4 *)(param_1 + 0x18),1);\n    iVar5 = (param_2[5] - param_2[4]) + *param_2;\n    *param_2 = iVar5;\nLAB_00033da4:\n    uVar7 = *(uint *)(param_1 + 0xec);\n    if (uVar7 == 0) {\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }\n    else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }\n    if (local_2c == *(int *)puVar1) {\n      return iVar5;\n    }\n    iVar5 = local_2c;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\nLAB_00034520:\n    param_2[6] = iVar5;\n    piVar11 = unaff_s3;\nLAB_0003420c:\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    iVar5 = param_2[6];\n    unaff_s3 = &iStack_28 + uVar7 * 3;\n    local_5c[uVar7 * 3 + 2] = 1;\n    local_5c[uVar7 * 3] = iVar5;\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    if (local_64 != 0) {\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }\n  } while( true );\n}\n\n" (function_definition "int FUN_00033c64(int param_1,int *param_2)\n\n{\n  undefined *puVar1;\n  undefined1 uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  int *unaff_s3;\n  int *piVar11;\n  int *unaff_s5;\n  code *pcVar12;\n  int local_64;\n  int local_60;\n  int local_5c [12];\n  int local_2c;\n  int iStack_28;\n  \n  puVar1 = PTR___stack_chk_guard_000adcd4;\n  iVar5 = *param_2;\n  local_2c = *(int *)PTR___stack_chk_guard_000adcd4;\n  if (*(int *)(param_1 + 0x18) == 0) goto LAB_00033da4;\n  uVar7 = *(uint *)(param_1 + 0x24c);\n  iVar3 = param_2[2];\n  param_2[6] = 0;\n  *param_2 = iVar5 - (param_2[5] - param_2[4]);\n  if ((uVar7 != 0) && (uVar7 = 0, iVar3 - 0x5eU < 2)) {\n    FUN_0002f068(param_2);\n    if (param_2[2] == 0x5f) {\n      FUN_0002f068();\n    }\n    local_5c[2] = 2;\n    local_5c[0] = param_2[6] + 4;\n    FUN_0002fb84(param_2,&local_64,&local_60);\n    if (local_64 == 0) {\n      iVar3 = param_2[2];\n      uVar7 = 0;\n    }\n    else {\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }\n  }\n  if (iVar3 == 0x32) {\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      unaff_s5 = &local_60;\n      unaff_s3 = &local_64;\n      param_2[6] = 0;\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }\n  if ((*(int *)(param_1 + 0x188) == 4) && (iVar3 == 0x3d)) {\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      param_2[6] = 0;\n      unaff_s5 = &local_60;\n      FUN_0002f068(param_2);\n      local_5c[uVar7 * 3] = param_2[6];\n      local_5c[uVar7 * 3 + 2] = 1;\n      do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n      unaff_s3 = &local_64;\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }\n  if ((iVar3 == 0x62) && (iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0))\n  {\n    param_2[6] = 0;\n    unaff_s5 = &local_60;\n    unaff_s3 = &local_64;\n    FUN_0002f068(param_2);\n    FUN_0002fb84();\n    if (local_60 == 7) {\n      iVar3 = param_2[6];\n      iVar5 = iVar3 + 1;\n      piVar11 = unaff_s3;\n      if (*param_2 - iVar3 < 1) goto LAB_0003420c;\n      if (*param_2 - iVar5 < 1) goto LAB_00034520;\n      param_2[6] = iVar3 + 2;\n      goto LAB_0003420c;\n    }\n  }\nLAB_00033d20:\n  do {\n    FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5));\n    log_packet(*(undefined4 *)(param_1 + 0x18),1);\n    iVar5 = (param_2[5] - param_2[4]) + *param_2;\n    *param_2 = iVar5;\nLAB_00033da4:\n    uVar7 = *(uint *)(param_1 + 0xec);\n    if (uVar7 == 0) {\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }\n    else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }\n    if (local_2c == *(int *)puVar1) {\n      return iVar5;\n    }\n    iVar5 = local_2c;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\nLAB_00034520:\n    param_2[6] = iVar5;\n    piVar11 = unaff_s3;\nLAB_0003420c:\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    iVar5 = param_2[6];\n    unaff_s3 = &iStack_28 + uVar7 * 3;\n    local_5c[uVar7 * 3 + 2] = 1;\n    local_5c[uVar7 * 3] = iVar5;\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    if (local_64 != 0) {\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_00033c64(int param_1,int *param_2)" identifier (parameter_list "(int param_1,int *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined1 uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  int *unaff_s3;\n  int *piVar11;\n  int *unaff_s5;\n  code *pcVar12;\n  int local_64;\n  int local_60;\n  int local_5c [12];\n  int local_2c;\n  int iStack_28;\n  \n  puVar1 = PTR___stack_chk_guard_000adcd4;\n  iVar5 = *param_2;\n  local_2c = *(int *)PTR___stack_chk_guard_000adcd4;\n  if (*(int *)(param_1 + 0x18) == 0) goto LAB_00033da4;\n  uVar7 = *(uint *)(param_1 + 0x24c);\n  iVar3 = param_2[2];\n  param_2[6] = 0;\n  *param_2 = iVar5 - (param_2[5] - param_2[4]);\n  if ((uVar7 != 0) && (uVar7 = 0, iVar3 - 0x5eU < 2)) {\n    FUN_0002f068(param_2);\n    if (param_2[2] == 0x5f) {\n      FUN_0002f068();\n    }\n    local_5c[2] = 2;\n    local_5c[0] = param_2[6] + 4;\n    FUN_0002fb84(param_2,&local_64,&local_60);\n    if (local_64 == 0) {\n      iVar3 = param_2[2];\n      uVar7 = 0;\n    }\n    else {\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }\n  }\n  if (iVar3 == 0x32) {\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      unaff_s5 = &local_60;\n      unaff_s3 = &local_64;\n      param_2[6] = 0;\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }\n  if ((*(int *)(param_1 + 0x188) == 4) && (iVar3 == 0x3d)) {\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      param_2[6] = 0;\n      unaff_s5 = &local_60;\n      FUN_0002f068(param_2);\n      local_5c[uVar7 * 3] = param_2[6];\n      local_5c[uVar7 * 3 + 2] = 1;\n      do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n      unaff_s3 = &local_64;\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }\n  if ((iVar3 == 0x62) && (iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0))\n  {\n    param_2[6] = 0;\n    unaff_s5 = &local_60;\n    unaff_s3 = &local_64;\n    FUN_0002f068(param_2);\n    FUN_0002fb84();\n    if (local_60 == 7) {\n      iVar3 = param_2[6];\n      iVar5 = iVar3 + 1;\n      piVar11 = unaff_s3;\n      if (*param_2 - iVar3 < 1) goto LAB_0003420c;\n      if (*param_2 - iVar5 < 1) goto LAB_00034520;\n      param_2[6] = iVar3 + 2;\n      goto LAB_0003420c;\n    }\n  }\nLAB_00033d20:\n  do {\n    FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5));\n    log_packet(*(undefined4 *)(param_1 + 0x18),1);\n    iVar5 = (param_2[5] - param_2[4]) + *param_2;\n    *param_2 = iVar5;\nLAB_00033da4:\n    uVar7 = *(uint *)(param_1 + 0xec);\n    if (uVar7 == 0) {\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }\n    else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }\n    if (local_2c == *(int *)puVar1) {\n      return iVar5;\n    }\n    iVar5 = local_2c;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\nLAB_00034520:\n    param_2[6] = iVar5;\n    piVar11 = unaff_s3;\nLAB_0003420c:\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    iVar5 = param_2[6];\n    unaff_s3 = &iStack_28 + uVar7 * 3;\n    local_5c[uVar7 * 3 + 2] = 1;\n    local_5c[uVar7 * 3] = iVar5;\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    if (local_64 != 0) {\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }\n  } while( true );\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined1 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int *unaff_s3;" primitive_type (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "int *unaff_s5;" primitive_type (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "code *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "int local_64;" primitive_type identifier ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "int local_5c [12];" primitive_type (array_declarator "local_5c [12]" identifier [ number_literal ]) ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int iStack_28;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_000adcd4;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000adcd4" identifier = identifier) ;) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_000adcd4;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_000adcd4" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000adcd4" * (cast_expression "(int *)PTR___stack_chk_guard_000adcd4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (*(int *)(param_1 + 0x18) == 0) goto LAB_00033da4;" if (parenthesized_expression "(*(int *)(param_1 + 0x18) == 0)" ( (binary_expression "*(int *)(param_1 + 0x18) == 0" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00033da4;" goto statement_identifier ;)) (expression_statement "uVar7 = *(uint *)(param_1 + 0x24c);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0x24c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x24c)" * (cast_expression "(uint *)(param_1 + 0x24c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24c)" ( (binary_expression "param_1 + 0x24c" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = param_2[2];" (assignment_expression "iVar3 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "param_2[6] = 0;" (assignment_expression "param_2[6] = 0" (subscript_expression "param_2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_2 = iVar5 - (param_2[5] - param_2[4]);" (assignment_expression "*param_2 = iVar5 - (param_2[5] - param_2[4])" (pointer_expression "*param_2" * identifier) = (binary_expression "iVar5 - (param_2[5] - param_2[4])" identifier - (parenthesized_expression "(param_2[5] - param_2[4])" ( (binary_expression "param_2[5] - param_2[4]" (subscript_expression "param_2[5]" identifier [ number_literal ]) - (subscript_expression "param_2[4]" identifier [ number_literal ])) )))) ;) (if_statement "if ((uVar7 != 0) && (uVar7 = 0, iVar3 - 0x5eU < 2)) {\n    FUN_0002f068(param_2);\n    if (param_2[2] == 0x5f) {\n      FUN_0002f068();\n    }\n    local_5c[2] = 2;\n    local_5c[0] = param_2[6] + 4;\n    FUN_0002fb84(param_2,&local_64,&local_60);\n    if (local_64 == 0) {\n      iVar3 = param_2[2];\n      uVar7 = 0;\n    }\n    else {\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }\n  }" if (parenthesized_expression "((uVar7 != 0) && (uVar7 = 0, iVar3 - 0x5eU < 2))" ( (binary_expression "(uVar7 != 0) && (uVar7 = 0, iVar3 - 0x5eU < 2)" (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar7 = 0, iVar3 - 0x5eU < 2)" ( (comma_expression "uVar7 = 0, iVar3 - 0x5eU < 2" (assignment_expression "uVar7 = 0" identifier = number_literal) , (binary_expression "iVar3 - 0x5eU < 2" (binary_expression "iVar3 - 0x5eU" identifier - number_literal) < number_literal)) ))) )) (compound_statement "{\n    FUN_0002f068(param_2);\n    if (param_2[2] == 0x5f) {\n      FUN_0002f068();\n    }\n    local_5c[2] = 2;\n    local_5c[0] = param_2[6] + 4;\n    FUN_0002fb84(param_2,&local_64,&local_60);\n    if (local_64 == 0) {\n      iVar3 = param_2[2];\n      uVar7 = 0;\n    }\n    else {\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }\n  }" { (expression_statement "FUN_0002f068(param_2);" (call_expression "FUN_0002f068(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) (if_statement "if (param_2[2] == 0x5f) {\n      FUN_0002f068();\n    }" if (parenthesized_expression "(param_2[2] == 0x5f)" ( (binary_expression "param_2[2] == 0x5f" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      FUN_0002f068();\n    }" { (expression_statement "FUN_0002f068();" (call_expression "FUN_0002f068()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_5c[2] = 2;" (assignment_expression "local_5c[2] = 2" (subscript_expression "local_5c[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_5c[0] = param_2[6] + 4;" (assignment_expression "local_5c[0] = param_2[6] + 4" (subscript_expression "local_5c[0]" identifier [ number_literal ]) = (binary_expression "param_2[6] + 4" (subscript_expression "param_2[6]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "FUN_0002fb84(param_2,&local_64,&local_60);" (call_expression "FUN_0002fb84(param_2,&local_64,&local_60)" identifier (argument_list "(param_2,&local_64,&local_60)" ( identifier , (pointer_expression "&local_64" & identifier) , (pointer_expression "&local_60" & identifier) ))) ;) (if_statement "if (local_64 == 0) {\n      iVar3 = param_2[2];\n      uVar7 = 0;\n    }\n    else {\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }" if (parenthesized_expression "(local_64 == 0)" ( (binary_expression "local_64 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar3 = param_2[2];\n      uVar7 = 0;\n    }" { (expression_statement "iVar3 = param_2[2];" (assignment_expression "iVar3 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }" else (compound_statement "{\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }" { (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) (expression_statement "iVar3 = param_2[2];" (assignment_expression "iVar3 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) }))) })) (if_statement "if (iVar3 == 0x32) {\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      unaff_s5 = &local_60;\n      unaff_s3 = &local_64;\n      param_2[6] = 0;\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }" if (parenthesized_expression "(iVar3 == 0x32)" ( (binary_expression "iVar3 == 0x32" identifier == number_literal) )) (compound_statement "{\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      unaff_s5 = &local_60;\n      unaff_s3 = &local_64;\n      param_2[6] = 0;\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }" { (expression_statement "iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);" (assignment_expression "iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b)" identifier = (call_expression "conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x248),0x7b)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x248)" * (cast_expression "(undefined4 *)(param_1 + 0x248)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (iVar5 != 0) {\n      unaff_s5 = &local_60;\n      unaff_s3 = &local_64;\n      param_2[6] = 0;\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_00033d20;\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      unaff_s5 = &local_60;\n      unaff_s3 = &local_64;\n      param_2[6] = 0;\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_00033d20;\n    }" { (expression_statement "unaff_s5 = &local_60;" (assignment_expression "unaff_s5 = &local_60" identifier = (pointer_expression "&local_60" & identifier)) ;) (expression_statement "unaff_s3 = &local_64;" (assignment_expression "unaff_s3 = &local_64" identifier = (pointer_expression "&local_64" & identifier)) ;) (expression_statement "param_2[6] = 0;" (assignment_expression "param_2[6] = 0" (subscript_expression "param_2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_0002fb84(param_2,unaff_s3,unaff_s5);" (call_expression "FUN_0002fb84(param_2,unaff_s3,unaff_s5)" identifier (argument_list "(param_2,unaff_s3,unaff_s5)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_0002fb84(param_2,unaff_s3,unaff_s5);" (call_expression "FUN_0002fb84(param_2,unaff_s3,unaff_s5)" identifier (argument_list "(param_2,unaff_s3,unaff_s5)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_0002fb84(param_2,unaff_s3,unaff_s5);" (call_expression "FUN_0002fb84(param_2,unaff_s3,unaff_s5)" identifier (argument_list "(param_2,unaff_s3,unaff_s5)" ( identifier , identifier , identifier ))) ;) (if_statement "if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }" if (parenthesized_expression "(local_60 == 8)" ( (binary_expression "local_60 == 8" identifier == number_literal) )) (compound_statement "{\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }" { (expression_statement "iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);" (assignment_expression "iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8)" identifier = (call_expression "(*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8)" (parenthesized_expression "(*(code *)PTR_memcmp_000adcb8)" ( (pointer_expression "*(code *)PTR_memcmp_000adcb8" * (cast_expression "(code *)PTR_memcmp_000adcb8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8)" ( identifier , (binary_expression "PTR_DAT_000ad2c8 + -0x1d5c" identifier + number_literal) , number_literal )))) ;) (if_statement "if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }" { (expression_statement "iVar5 = param_2[6];" (assignment_expression "iVar5 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (if_statement "if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }" if (parenthesized_expression "(0 < *param_2 - iVar5)" ( (binary_expression "0 < *param_2 - iVar5" number_literal < (binary_expression "*param_2 - iVar5" (pointer_expression "*param_2" * identifier) - identifier)) )) (compound_statement "{\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }" { (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "param_2[6] = iVar5;" (assignment_expression "param_2[6] = iVar5" (subscript_expression "param_2[6]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "local_5c[uVar7 * 3] = iVar5;" (assignment_expression "local_5c[uVar7 * 3] = iVar5" (subscript_expression "local_5c[uVar7 * 3]" identifier [ (binary_expression "uVar7 * 3" identifier * number_literal) ]) = identifier) ;) (expression_statement "local_5c[uVar7 * 3 + 2] = 1;" (assignment_expression "local_5c[uVar7 * 3 + 2] = 1" (subscript_expression "local_5c[uVar7 * 3 + 2]" identifier [ (binary_expression "uVar7 * 3 + 2" (binary_expression "uVar7 * 3" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "FUN_0002fb84(param_2,unaff_s3,unaff_s5);" (call_expression "FUN_0002fb84(param_2,unaff_s3,unaff_s5)" identifier (argument_list "(param_2,unaff_s3,unaff_s5)" ( identifier , identifier , identifier ))) ;) (if_statement "if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }" if (parenthesized_expression "(local_64 != 0)" ( (binary_expression "local_64 != 0" identifier != number_literal) )) (compound_statement "{\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }" { (expression_statement "piVar11 = (int *)(uVar7 + 1);" (assignment_expression "piVar11 = (int *)(uVar7 + 1)" identifier = (cast_expression "(int *)(uVar7 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 1)" ( (binary_expression "uVar7 + 1" identifier + number_literal) )))) ;) (expression_statement "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];" (assignment_expression "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3]" (subscript_expression "local_5c[uVar7 * 3 + 1]" identifier [ (binary_expression "uVar7 * 3 + 1" (binary_expression "uVar7 * 3" identifier * number_literal) + number_literal) ]) = (binary_expression "param_2[6] - local_5c[uVar7 * 3]" (subscript_expression "param_2[6]" identifier [ number_literal ]) - (subscript_expression "local_5c[uVar7 * 3]" identifier [ (binary_expression "uVar7 * 3" identifier * number_literal) ]))) ;) (expression_statement "FUN_0002fb84(param_2,unaff_s3,unaff_s5);" (call_expression "FUN_0002fb84(param_2,unaff_s3,unaff_s5)" identifier (argument_list "(param_2,unaff_s3,unaff_s5)" ( identifier , identifier , identifier ))) ;) (expression_statement "unaff_s3 = piVar11;" (assignment_expression "unaff_s3 = piVar11" identifier = identifier) ;) (if_statement "if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }" if (parenthesized_expression "(local_64 != 0)" ( (binary_expression "local_64 != 0" identifier != number_literal) )) (compound_statement "{\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }" { (expression_statement "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];" (assignment_expression "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3]" (subscript_expression "local_5c[uVar7 * 3 + 1]" identifier [ (binary_expression "uVar7 * 3 + 1" (binary_expression "uVar7 * 3" identifier * number_literal) + number_literal) ]) = (binary_expression "param_2[6] - local_5c[(int)piVar11 * 3]" (subscript_expression "param_2[6]" identifier [ number_literal ]) - (subscript_expression "local_5c[(int)piVar11 * 3]" identifier [ (binary_expression "(int)piVar11 * 3" (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ]))) ;) })) })) })) })) (goto_statement "goto LAB_00033d20;" goto statement_identifier ;) })) (expression_statement "iVar3 = param_2[2];" (assignment_expression "iVar3 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) })) (if_statement "if ((*(int *)(param_1 + 0x188) == 4) && (iVar3 == 0x3d)) {\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      param_2[6] = 0;\n      unaff_s5 = &local_60;\n      FUN_0002f068(param_2);\n      local_5c[uVar7 * 3] = param_2[6];\n      local_5c[uVar7 * 3 + 2] = 1;\n      do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n      unaff_s3 = &local_64;\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }" if (parenthesized_expression "((*(int *)(param_1 + 0x188) == 4) && (iVar3 == 0x3d))" ( (binary_expression "(*(int *)(param_1 + 0x188) == 4) && (iVar3 == 0x3d)" (parenthesized_expression "(*(int *)(param_1 + 0x188) == 4)" ( (binary_expression "*(int *)(param_1 + 0x188) == 4" (pointer_expression "*(int *)(param_1 + 0x188)" * (cast_expression "(int *)(param_1 + 0x188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x188)" ( (binary_expression "param_1 + 0x188" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "(iVar3 == 0x3d)" ( (binary_expression "iVar3 == 0x3d" identifier == number_literal) ))) )) (compound_statement "{\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      param_2[6] = 0;\n      unaff_s5 = &local_60;\n      FUN_0002f068(param_2);\n      local_5c[uVar7 * 3] = param_2[6];\n      local_5c[uVar7 * 3 + 2] = 1;\n      do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n      unaff_s3 = &local_64;\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }" { (expression_statement "iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);" (assignment_expression "iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b)" identifier = (call_expression "conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x248),0x7b)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x248)" * (cast_expression "(undefined4 *)(param_1 + 0x248)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (iVar5 != 0) {\n      param_2[6] = 0;\n      unaff_s5 = &local_60;\n      FUN_0002f068(param_2);\n      local_5c[uVar7 * 3] = param_2[6];\n      local_5c[uVar7 * 3 + 2] = 1;\n      do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n      unaff_s3 = &local_64;\n      goto LAB_00033d20;\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      param_2[6] = 0;\n      unaff_s5 = &local_60;\n      FUN_0002f068(param_2);\n      local_5c[uVar7 * 3] = param_2[6];\n      local_5c[uVar7 * 3 + 2] = 1;\n      do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n      unaff_s3 = &local_64;\n      goto LAB_00033d20;\n    }" { (expression_statement "param_2[6] = 0;" (assignment_expression "param_2[6] = 0" (subscript_expression "param_2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "unaff_s5 = &local_60;" (assignment_expression "unaff_s5 = &local_60" identifier = (pointer_expression "&local_60" & identifier)) ;) (expression_statement "FUN_0002f068(param_2);" (call_expression "FUN_0002f068(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) (expression_statement "local_5c[uVar7 * 3] = param_2[6];" (assignment_expression "local_5c[uVar7 * 3] = param_2[6]" (subscript_expression "local_5c[uVar7 * 3]" identifier [ (binary_expression "uVar7 * 3" identifier * number_literal) ]) = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "local_5c[uVar7 * 3 + 2] = 1;" (assignment_expression "local_5c[uVar7 * 3 + 2] = 1" (subscript_expression "local_5c[uVar7 * 3 + 2]" identifier [ (binary_expression "uVar7 * 3 + 2" (binary_expression "uVar7 * 3" identifier * number_literal) + number_literal) ]) = number_literal) ;) (do_statement "do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);" do (compound_statement "{\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      }" { (expression_statement "FUN_0002fb84(param_2,&local_64,unaff_s5);" (call_expression "FUN_0002fb84(param_2,&local_64,unaff_s5)" identifier (argument_list "(param_2,&local_64,unaff_s5)" ( identifier , (pointer_expression "&local_64" & identifier) , identifier ))) ;) }) while (parenthesized_expression "(local_64 != 0)" ( (binary_expression "local_64 != 0" identifier != number_literal) )) ;) (expression_statement "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];" (assignment_expression "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3]" (subscript_expression "local_5c[uVar7 * 3 + 1]" identifier [ (binary_expression "uVar7 * 3 + 1" (binary_expression "uVar7 * 3" identifier * number_literal) + number_literal) ]) = (binary_expression "param_2[6] - local_5c[uVar7 * 3]" (subscript_expression "param_2[6]" identifier [ number_literal ]) - (subscript_expression "local_5c[uVar7 * 3]" identifier [ (binary_expression "uVar7 * 3" identifier * number_literal) ]))) ;) (expression_statement "unaff_s3 = &local_64;" (assignment_expression "unaff_s3 = &local_64" identifier = (pointer_expression "&local_64" & identifier)) ;) (goto_statement "goto LAB_00033d20;" goto statement_identifier ;) })) (expression_statement "iVar3 = param_2[2];" (assignment_expression "iVar3 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) })) (if_statement "if ((iVar3 == 0x62) && (iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0))\n  {\n    param_2[6] = 0;\n    unaff_s5 = &local_60;\n    unaff_s3 = &local_64;\n    FUN_0002f068(param_2);\n    FUN_0002fb84();\n    if (local_60 == 7) {\n      iVar3 = param_2[6];\n      iVar5 = iVar3 + 1;\n      piVar11 = unaff_s3;\n      if (*param_2 - iVar3 < 1) goto LAB_0003420c;\n      if (*param_2 - iVar5 < 1) goto LAB_00034520;\n      param_2[6] = iVar3 + 2;\n      goto LAB_0003420c;\n    }\n  }" if (parenthesized_expression "((iVar3 == 0x62) && (iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0))" ( (binary_expression "(iVar3 == 0x62) && (iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0)" (parenthesized_expression "(iVar3 == 0x62)" ( (binary_expression "iVar3 == 0x62" identifier == number_literal) )) && (parenthesized_expression "(iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0)" ( (comma_expression "iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0" (assignment_expression "iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b)" identifier = (call_expression "conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x248),0x7b)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x248)" * (cast_expression "(undefined4 *)(param_1 + 0x248)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) , number_literal )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    param_2[6] = 0;\n    unaff_s5 = &local_60;\n    unaff_s3 = &local_64;\n    FUN_0002f068(param_2);\n    FUN_0002fb84();\n    if (local_60 == 7) {\n      iVar3 = param_2[6];\n      iVar5 = iVar3 + 1;\n      piVar11 = unaff_s3;\n      if (*param_2 - iVar3 < 1) goto LAB_0003420c;\n      if (*param_2 - iVar5 < 1) goto LAB_00034520;\n      param_2[6] = iVar3 + 2;\n      goto LAB_0003420c;\n    }\n  }" { (expression_statement "param_2[6] = 0;" (assignment_expression "param_2[6] = 0" (subscript_expression "param_2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "unaff_s5 = &local_60;" (assignment_expression "unaff_s5 = &local_60" identifier = (pointer_expression "&local_60" & identifier)) ;) (expression_statement "unaff_s3 = &local_64;" (assignment_expression "unaff_s3 = &local_64" identifier = (pointer_expression "&local_64" & identifier)) ;) (expression_statement "FUN_0002f068(param_2);" (call_expression "FUN_0002f068(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) (expression_statement "FUN_0002fb84();" (call_expression "FUN_0002fb84()" identifier (argument_list "()" ( ))) ;) (if_statement "if (local_60 == 7) {\n      iVar3 = param_2[6];\n      iVar5 = iVar3 + 1;\n      piVar11 = unaff_s3;\n      if (*param_2 - iVar3 < 1) goto LAB_0003420c;\n      if (*param_2 - iVar5 < 1) goto LAB_00034520;\n      param_2[6] = iVar3 + 2;\n      goto LAB_0003420c;\n    }" if (parenthesized_expression "(local_60 == 7)" ( (binary_expression "local_60 == 7" identifier == number_literal) )) (compound_statement "{\n      iVar3 = param_2[6];\n      iVar5 = iVar3 + 1;\n      piVar11 = unaff_s3;\n      if (*param_2 - iVar3 < 1) goto LAB_0003420c;\n      if (*param_2 - iVar5 < 1) goto LAB_00034520;\n      param_2[6] = iVar3 + 2;\n      goto LAB_0003420c;\n    }" { (expression_statement "iVar3 = param_2[6];" (assignment_expression "iVar3 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "iVar5 = iVar3 + 1;" (assignment_expression "iVar5 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "piVar11 = unaff_s3;" (assignment_expression "piVar11 = unaff_s3" identifier = identifier) ;) (if_statement "if (*param_2 - iVar3 < 1) goto LAB_0003420c;" if (parenthesized_expression "(*param_2 - iVar3 < 1)" ( (binary_expression "*param_2 - iVar3 < 1" (binary_expression "*param_2 - iVar3" (pointer_expression "*param_2" * identifier) - identifier) < number_literal) )) (goto_statement "goto LAB_0003420c;" goto statement_identifier ;)) (if_statement "if (*param_2 - iVar5 < 1) goto LAB_00034520;" if (parenthesized_expression "(*param_2 - iVar5 < 1)" ( (binary_expression "*param_2 - iVar5 < 1" (binary_expression "*param_2 - iVar5" (pointer_expression "*param_2" * identifier) - identifier) < number_literal) )) (goto_statement "goto LAB_00034520;" goto statement_identifier ;)) (expression_statement "param_2[6] = iVar3 + 2;" (assignment_expression "param_2[6] = iVar3 + 2" (subscript_expression "param_2[6]" identifier [ number_literal ]) = (binary_expression "iVar3 + 2" identifier + number_literal)) ;) (goto_statement "goto LAB_0003420c;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00033d20:\n  do {\n    FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5));\n    log_packet(*(undefined4 *)(param_1 + 0x18),1);\n    iVar5 = (param_2[5] - param_2[4]) + *param_2;\n    *param_2 = iVar5;\nLAB_00033da4:\n    uVar7 = *(uint *)(param_1 + 0xec);\n    if (uVar7 == 0) {\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }\n    else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }\n    if (local_2c == *(int *)puVar1) {\n      return iVar5;\n    }\n    iVar5 = local_2c;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\nLAB_00034520:\n    param_2[6] = iVar5;\n    piVar11 = unaff_s3;\nLAB_0003420c:\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    iVar5 = param_2[6];\n    unaff_s3 = &iStack_28 + uVar7 * 3;\n    local_5c[uVar7 * 3 + 2] = 1;\n    local_5c[uVar7 * 3] = iVar5;\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    if (local_64 != 0) {\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }\n  } while( true );" statement_identifier : (do_statement "do {\n    FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5));\n    log_packet(*(undefined4 *)(param_1 + 0x18),1);\n    iVar5 = (param_2[5] - param_2[4]) + *param_2;\n    *param_2 = iVar5;\nLAB_00033da4:\n    uVar7 = *(uint *)(param_1 + 0xec);\n    if (uVar7 == 0) {\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }\n    else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }\n    if (local_2c == *(int *)puVar1) {\n      return iVar5;\n    }\n    iVar5 = local_2c;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\nLAB_00034520:\n    param_2[6] = iVar5;\n    piVar11 = unaff_s3;\nLAB_0003420c:\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    iVar5 = param_2[6];\n    unaff_s3 = &iStack_28 + uVar7 * 3;\n    local_5c[uVar7 * 3 + 2] = 1;\n    local_5c[uVar7 * 3] = iVar5;\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    if (local_64 != 0) {\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }\n  } while( true );" do (compound_statement "{\n    FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5));\n    log_packet(*(undefined4 *)(param_1 + 0x18),1);\n    iVar5 = (param_2[5] - param_2[4]) + *param_2;\n    *param_2 = iVar5;\nLAB_00033da4:\n    uVar7 = *(uint *)(param_1 + 0xec);\n    if (uVar7 == 0) {\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }\n    else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }\n    if (local_2c == *(int *)puVar1) {\n      return iVar5;\n    }\n    iVar5 = local_2c;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\nLAB_00034520:\n    param_2[6] = iVar5;\n    piVar11 = unaff_s3;\nLAB_0003420c:\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    iVar5 = param_2[6];\n    unaff_s3 = &iStack_28 + uVar7 * 3;\n    local_5c[uVar7 * 3 + 2] = 1;\n    local_5c[uVar7 * 3] = iVar5;\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    if (local_64 != 0) {\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }\n  }" { (expression_statement "FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5));" (call_expression "FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x184)" * (cast_expression "(undefined4 *)(param_1 + 0x184)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x184)" ( (binary_expression "param_1 + 0x184" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x188)" * (cast_expression "(undefined4 *)(param_1 + 0x188)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x188)" ( (binary_expression "param_1 + 0x188" identifier + number_literal) )))) , (pointer_expression "*(undefined1 *)(param_2[4] + 5)" * (cast_expression "(undefined1 *)(param_2[4] + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[4] + 5)" ( (binary_expression "param_2[4] + 5" (subscript_expression "param_2[4]" identifier [ number_literal ]) + number_literal) )))) ))) ;) (expression_statement "log_packet(*(undefined4 *)(param_1 + 0x18),1);" (call_expression "log_packet(*(undefined4 *)(param_1 + 0x18),1)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x18),1)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x18)" * (cast_expression "(undefined4 *)(param_1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "iVar5 = (param_2[5] - param_2[4]) + *param_2;" (assignment_expression "iVar5 = (param_2[5] - param_2[4]) + *param_2" identifier = (binary_expression "(param_2[5] - param_2[4]) + *param_2" (parenthesized_expression "(param_2[5] - param_2[4])" ( (binary_expression "param_2[5] - param_2[4]" (subscript_expression "param_2[5]" identifier [ number_literal ]) - (subscript_expression "param_2[4]" identifier [ number_literal ])) )) + (pointer_expression "*param_2" * identifier))) ;) (expression_statement "*param_2 = iVar5;" (assignment_expression "*param_2 = iVar5" (pointer_expression "*param_2" * identifier) = identifier) ;) (labeled_statement "LAB_00033da4:\n    uVar7 = *(uint *)(param_1 + 0xec);" statement_identifier : (expression_statement "uVar7 = *(uint *)(param_1 + 0xec);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0xec)" identifier = (pointer_expression "*(uint *)(param_1 + 0xec)" * (cast_expression "(uint *)(param_1 + 0xec)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xec)" ( (binary_expression "param_1 + 0xec" identifier + number_literal) ))))) ;)) (if_statement "if (uVar7 == 0) {\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }\n    else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }" { (if_statement "if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x88) != 0)" ( (binary_expression "*(int *)(param_1 + 0x88) != 0" (pointer_expression "*(int *)(param_1 + 0x88)" * (cast_expression "(int *)(param_1 + 0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x88)" ( (binary_expression "param_1 + 0x88" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }" { (expression_statement "iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);" (assignment_expression "iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60)" identifier = (call_expression "(**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60)" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x88) + 0x10))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 0x88) + 0x10)" * (pointer_expression "*(code **)(*(int *)(param_1 + 0x88) + 0x10)" * (cast_expression "(code **)(*(int *)(param_1 + 0x88) + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x88) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x88) + 0x10" (pointer_expression "*(int *)(param_1 + 0x88)" * (cast_expression "(int *)(param_1 + 0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x88)" ( (binary_expression "param_1 + 0x88" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x90)" * (cast_expression "(undefined4 *)(param_1 + 0x90)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x90)" ( (binary_expression "param_1 + 0x90" identifier + number_literal) )))) , (binary_expression "param_2[4] + 5" (subscript_expression "param_2[4]" identifier [ number_literal ]) + number_literal) , (binary_expression "iVar5 + -5" identifier + number_literal) , (pointer_expression "&local_64" & identifier) , (pointer_expression "&local_60" & identifier) )))) ;) (if_statement "if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar5 = *param_2;\n        }" { (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }) (else_clause "else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }" else (compound_statement "{\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }" { (expression_statement "*param_2 = 5;" (assignment_expression "*param_2 = 5" (pointer_expression "*param_2" * identifier) = number_literal) ;) (expression_statement "FUN_00033374(param_2,local_64,local_60);" (call_expression "FUN_00033374(param_2,local_64,local_60)" identifier (argument_list "(param_2,local_64,local_60)" ( identifier , identifier , identifier ))) ;) (expression_statement "safefree(local_64);" (call_expression "safefree(local_64)" identifier (argument_list "(local_64)" ( identifier ))) ;) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }))) })) (if_statement "if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x60) == 0)" ( (binary_expression "*(int *)(param_1 + 0x60) == 0" (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        iVar3 = 8;\n      }" { (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" identifier = number_literal) ;) }) (else_clause "else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }" else (compound_statement "{\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }" { (expression_statement "iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);" (assignment_expression "iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0x60) + 0x24)" * (cast_expression "(int *)(*(int *)(param_1 + 0x60) + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x60) + 0x24)" ( (binary_expression "*(int *)(param_1 + 0x60) + 0x24" (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" identifier = number_literal) ;) (if_statement "if (7 < iVar9) {\n          iVar3 = iVar9;\n        }" if (parenthesized_expression "(7 < iVar9)" ( (binary_expression "7 < iVar9" number_literal < identifier) )) (compound_statement "{\n          iVar3 = iVar9;\n        }" { (expression_statement "iVar3 = iVar9;" (assignment_expression "iVar3 = iVar9" identifier = identifier) ;) })) }))) (expression_statement "iVar9 = *(int *)(param_1 + 0x70);" (assignment_expression "iVar9 = *(int *)(param_1 + 0x70)" identifier = (pointer_expression "*(int *)(param_1 + 0x70)" * (cast_expression "(int *)(param_1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) ))))) ;) (if_statement "if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }" if (parenthesized_expression "((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0))" ( (binary_expression "(iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)" (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(int *)(param_1 + 0x78) == 0)" ( (binary_expression "*(int *)(param_1 + 0x78) == 0" (pointer_expression "*(int *)(param_1 + 0x78)" * (cast_expression "(int *)(param_1 + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }" { (expression_statement "iVar4 = param_2[1];" (assignment_expression "iVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "iVar6 = iVar5;" (assignment_expression "iVar6 = iVar5" identifier = identifier) ;) (if_statement "if (iVar5 + 4 < iVar4) goto LAB_00033e2c;" if (parenthesized_expression "(iVar5 + 4 < iVar4)" ( (binary_expression "iVar5 + 4 < iVar4" (binary_expression "iVar5 + 4" identifier + number_literal) < identifier) )) (goto_statement "goto LAB_00033e2c;" goto statement_identifier ;)) (labeled_statement "LAB_0003405c:\n        iVar4 = 4;" statement_identifier : (expression_statement "iVar4 = 4;" (assignment_expression "iVar4 = 4" identifier = number_literal) ;)) }) (else_clause "else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }" else (compound_statement "{\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }" { (expression_statement "iVar4 = param_2[1];" (assignment_expression "iVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "iVar6 = iVar5 + -4;" (assignment_expression "iVar6 = iVar5 + -4" identifier = (binary_expression "iVar5 + -4" identifier + number_literal)) ;) (if_statement "if (iVar4 <= iVar5 + 4) goto LAB_0003405c;" if (parenthesized_expression "(iVar4 <= iVar5 + 4)" ( (binary_expression "iVar4 <= iVar5 + 4" identifier <= (binary_expression "iVar5 + 4" identifier + number_literal)) )) (goto_statement "goto LAB_0003405c;" goto statement_identifier ;)) (labeled_statement "LAB_00033e2c:\n        iVar4 = iVar4 - iVar5;" statement_identifier : (expression_statement "iVar4 = iVar4 - iVar5;" (assignment_expression "iVar4 = iVar4 - iVar5" identifier = (binary_expression "iVar4 - iVar5" identifier - identifier)) ;)) }))) (if_statement "if (iVar3 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 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 (iVar3 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 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 "uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;" (assignment_expression "uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4" identifier = (binary_expression "(iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4" (binary_expression "(iVar3 - (iVar4 + iVar6) % iVar3) % iVar3" (parenthesized_expression "(iVar3 - (iVar4 + iVar6) % iVar3)" ( (binary_expression "iVar3 - (iVar4 + iVar6) % iVar3" identifier - (binary_expression "(iVar4 + iVar6) % iVar3" (parenthesized_expression "(iVar4 + iVar6)" ( (binary_expression "iVar4 + iVar6" identifier + identifier) )) % identifier)) )) % identifier) + identifier)) ;) (if_statement "if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }" if (parenthesized_expression "(0xff < (int)uVar10)" ( (binary_expression "0xff < (int)uVar10" number_literal < (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }" { (expression_statement "iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);" (assignment_expression "iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80)" identifier = (call_expression "(*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80)" (parenthesized_expression "(*(code *)PTR___assert_fail_000adb00)" ( (pointer_expression "*(code *)PTR___assert_fail_000adb00" * (cast_expression "(code *)PTR___assert_fail_000adb00" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80)" ( (binary_expression "PTR_DAT_000ad2c8 + -0x2b60" identifier + number_literal) , (binary_expression "PTR_DAT_000ad2c8 + -0x3c40" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_000ad2c8 + 0xc80" identifier + number_literal) )))) ;) (return_statement "return iVar5;" return identifier ;) })) (expression_statement "unaff_s3 = (int *)0x0;" (assignment_expression "unaff_s3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }" { (expression_statement "unaff_s3 = *(int **)(iVar9 + 0x2c);" (assignment_expression "unaff_s3 = *(int **)(iVar9 + 0x2c)" identifier = (pointer_expression "*(int **)(iVar9 + 0x2c)" * (cast_expression "(int **)(iVar9 + 0x2c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + 0x2c)" ( (binary_expression "iVar9 + 0x2c" identifier + number_literal) ))))) ;) })) (if_statement "if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }" if (parenthesized_expression "(param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3))" ( (binary_expression "param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)" (subscript_expression "param_2[7]" identifier [ number_literal ]) < (cast_expression "(int)(uVar10 + iVar5 + (int)unaff_s3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar10 + iVar5 + (int)unaff_s3)" ( (binary_expression "uVar10 + iVar5 + (int)unaff_s3" (binary_expression "uVar10 + iVar5" identifier + identifier) + (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n        FUN_000332e8(param_2);\n      }" { (expression_statement "FUN_000332e8(param_2);" (call_expression "FUN_000332e8(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) })) (expression_statement "*(char *)(param_2[4] + 4) = (char)uVar10;" (assignment_expression "*(char *)(param_2[4] + 4) = (char)uVar10" (pointer_expression "*(char *)(param_2[4] + 4)" * (cast_expression "(char *)(param_2[4] + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[4] + 4)" ( (binary_expression "param_2[4] + 4" (subscript_expression "param_2[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)uVar10" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (if_statement "if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }" if (parenthesized_expression "(0 < (int)uVar10)" ( (binary_expression "0 < (int)uVar10" number_literal < (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }" { (do_statement "do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);" do (compound_statement "{\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        }" { (expression_statement "uVar2 = (*(code *)PTR_random_byte_000ad6ac)();" (assignment_expression "uVar2 = (*(code *)PTR_random_byte_000ad6ac)()" identifier = (call_expression "(*(code *)PTR_random_byte_000ad6ac)()" (parenthesized_expression "(*(code *)PTR_random_byte_000ad6ac)" ( (pointer_expression "*(code *)PTR_random_byte_000ad6ac" * (cast_expression "(code *)PTR_random_byte_000ad6ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "iVar5 = param_2[4] + uVar8;" (assignment_expression "iVar5 = param_2[4] + uVar8" identifier = (binary_expression "param_2[4] + uVar8" (subscript_expression "param_2[4]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(iVar5 + *param_2) = uVar2;" (assignment_expression "*(undefined1 *)(iVar5 + *param_2) = uVar2" (pointer_expression "*(undefined1 *)(iVar5 + *param_2)" * (cast_expression "(undefined1 *)(iVar5 + *param_2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + *param_2)" ( (binary_expression "iVar5 + *param_2" identifier + (pointer_expression "*param_2" * identifier)) )))) = identifier) ;) (expression_statement "uVar7 = uVar8;" (assignment_expression "uVar7 = uVar8" identifier = identifier) ;) }) while (parenthesized_expression "(uVar10 != uVar8)" ( (binary_expression "uVar10 != uVar8" identifier != identifier) )) ;) })) (expression_statement "*(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);" (assignment_expression "*(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18)" (pointer_expression "*(char *)param_2[4]" * (cast_expression "(char *)param_2[4]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[4]" identifier [ number_literal ]))) = (cast_expression "(char)(uVar10 + *param_2 + -4 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar10 + *param_2 + -4 >> 0x18)" ( (binary_expression "uVar10 + *param_2 + -4 >> 0x18" (binary_expression "uVar10 + *param_2 + -4" (binary_expression "uVar10 + *param_2" identifier + (pointer_expression "*param_2" * identifier)) + number_literal) >> number_literal) )))) ;) (expression_statement "*(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);" (assignment_expression "*(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10)" (pointer_expression "*(char *)(param_2[4] + 1)" * (cast_expression "(char *)(param_2[4] + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[4] + 1)" ( (binary_expression "param_2[4] + 1" (subscript_expression "param_2[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)(uVar10 + *param_2 + -4 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar10 + *param_2 + -4 >> 0x10)" ( (binary_expression "uVar10 + *param_2 + -4 >> 0x10" (binary_expression "uVar10 + *param_2 + -4" (binary_expression "uVar10 + *param_2" identifier + (pointer_expression "*param_2" * identifier)) + number_literal) >> number_literal) )))) ;) (expression_statement "*(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);" (assignment_expression "*(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8)" (pointer_expression "*(char *)(param_2[4] + 2)" * (cast_expression "(char *)(param_2[4] + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[4] + 2)" ( (binary_expression "param_2[4] + 2" (subscript_expression "param_2[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)(uVar10 + *param_2 + -4 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar10 + *param_2 + -4 >> 8)" ( (binary_expression "uVar10 + *param_2 + -4 >> 8" (binary_expression "uVar10 + *param_2 + -4" (binary_expression "uVar10 + *param_2" identifier + (pointer_expression "*param_2" * identifier)) + number_literal) >> number_literal) )))) ;) (expression_statement "unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);" (assignment_expression "unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4)" identifier = (cast_expression "(int *)((uVar10 & 0xff) + *param_2 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar10 & 0xff) + *param_2 + -4)" ( (binary_expression "(uVar10 & 0xff) + *param_2 + -4" (binary_expression "(uVar10 & 0xff) + *param_2" (parenthesized_expression "(uVar10 & 0xff)" ( (binary_expression "uVar10 & 0xff" identifier & number_literal) )) + (pointer_expression "*param_2" * identifier)) + number_literal) )))) ;) (expression_statement "*(char *)(param_2[4] + 3) = (char)unaff_s5;" (assignment_expression "*(char *)(param_2[4] + 3) = (char)unaff_s5" (pointer_expression "*(char *)(param_2[4] + 3)" * (cast_expression "(char *)(param_2[4] + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[4] + 3)" ( (binary_expression "param_2[4] + 3" (subscript_expression "param_2[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)unaff_s5" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0x60);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x60)" identifier = (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }" { (expression_statement "iVar3 = *(int *)(param_1 + 0x70);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x70)" identifier = (pointer_expression "*(int *)(param_1 + 0x70)" * (cast_expression "(int *)(param_1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = param_2[4];" (assignment_expression "iVar9 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (if_statement "if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }" { (expression_statement "iVar6 = uVar10 + *param_2;" (assignment_expression "iVar6 = uVar10 + *param_2" identifier = (binary_expression "uVar10 + *param_2" identifier + (pointer_expression "*param_2" * identifier))) ;) (if_statement "if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;" if (parenthesized_expression "(*(int *)(param_1 + 0x78) == 0)" ( (binary_expression "*(int *)(param_1 + 0x78) == 0" (pointer_expression "*(int *)(param_1 + 0x78)" * (cast_expression "(int *)(param_1 + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00033fb4;" goto statement_identifier ;)) (labeled_statement "LAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);" statement_identifier : (expression_statement "pcVar12 = *(code **)(iVar3 + 0xc);" (assignment_expression "pcVar12 = *(code **)(iVar3 + 0xc)" identifier = (pointer_expression "*(code **)(iVar3 + 0xc)" * (cast_expression "(code **)(iVar3 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));" statement_identifier : (expression_statement "(*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));" (call_expression "(*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x80)" * (cast_expression "(undefined4 *)(param_1 + 0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) , identifier , identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x1ac)" * (cast_expression "(undefined4 *)(param_1 + 0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1ac)" ( (binary_expression "param_1 + 0x1ac" identifier + number_literal) )))) ))) ;)) (expression_statement "iVar9 = param_2[4];" (assignment_expression "iVar9 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) })) }) (else_clause "else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }" else (compound_statement "{\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }" { (expression_statement "iVar9 = param_2[4];" (assignment_expression "iVar9 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (if_statement "if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }" if (parenthesized_expression "((*(uint *)(iVar5 + 0x30) & 2) == 0)" ( (binary_expression "(*(uint *)(iVar5 + 0x30) & 2) == 0" (parenthesized_expression "(*(uint *)(iVar5 + 0x30) & 2)" ( (binary_expression "*(uint *)(iVar5 + 0x30) & 2" (pointer_expression "*(uint *)(iVar5 + 0x30)" * (cast_expression "(uint *)(iVar5 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x30)" ( (binary_expression "iVar5 + 0x30" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }" { (expression_statement "iVar3 = *(int *)(param_1 + 0x70);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x70)" identifier = (pointer_expression "*(int *)(param_1 + 0x70)" * (cast_expression "(int *)(param_1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }" { (expression_statement "iVar6 = uVar10 + *param_2;" (assignment_expression "iVar6 = uVar10 + *param_2" identifier = (binary_expression "uVar10 + *param_2" identifier + (pointer_expression "*param_2" * identifier))) ;) (if_statement "if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }" if (parenthesized_expression "(*(int *)(param_1 + 0x78) != 0)" ( (binary_expression "*(int *)(param_1 + 0x78) != 0" (pointer_expression "*(int *)(param_1 + 0x78)" * (cast_expression "(int *)(param_1 + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }" { (labeled_statement "LAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);" statement_identifier : (expression_statement "(**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);" (call_expression "(**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4)" (parenthesized_expression "(**(code **)(iVar5 + 0x10))" ( (pointer_expression "**(code **)(iVar5 + 0x10)" * (pointer_expression "*(code **)(iVar5 + 0x10)" * (cast_expression "(code **)(iVar5 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x68)" * (cast_expression "(undefined4 *)(param_1 + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) , (binary_expression "iVar9 + 4" identifier + number_literal) , (binary_expression "iVar6 + -4" identifier + number_literal) ))) ;)) (expression_statement "iVar9 = param_2[4];" (assignment_expression "iVar9 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x70);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x70)" identifier = (pointer_expression "*(int *)(param_1 + 0x70)" * (cast_expression "(int *)(param_1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = uVar10 + *param_2;" (assignment_expression "iVar6 = uVar10 + *param_2" identifier = (binary_expression "uVar10 + *param_2" identifier + (pointer_expression "*param_2" * identifier))) ;) (goto_statement "goto LAB_00034110;" goto statement_identifier ;) })) (goto_statement "goto LAB_00033fb4;" goto statement_identifier ;) })) }) (else_clause "else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }" else (compound_statement "{\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }" { (expression_statement "(**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));" (call_expression "(**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac))" (parenthesized_expression "(**(code **)(iVar5 + 0x18))" ( (pointer_expression "**(code **)(iVar5 + 0x18)" * (pointer_expression "*(code **)(iVar5 + 0x18)" * (cast_expression "(code **)(iVar5 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x68)" * (cast_expression "(undefined4 *)(param_1 + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) , identifier , number_literal , (pointer_expression "*(undefined4 *)(param_1 + 0x1ac)" * (cast_expression "(undefined4 *)(param_1 + 0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1ac)" ( (binary_expression "param_1 + 0x1ac" identifier + number_literal) )))) ))) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x70);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x70)" identifier = (pointer_expression "*(int *)(param_1 + 0x70)" * (cast_expression "(int *)(param_1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }" { (expression_statement "iVar9 = param_2[4];" (assignment_expression "iVar9 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "iVar6 = uVar10 + *param_2;" (assignment_expression "iVar6 = uVar10 + *param_2" identifier = (binary_expression "uVar10 + *param_2" identifier + (pointer_expression "*param_2" * identifier))) ;) (if_statement "if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }" if (parenthesized_expression "(*(int *)(param_1 + 0x78) != 0)" ( (binary_expression "*(int *)(param_1 + 0x78) != 0" (pointer_expression "*(int *)(param_1 + 0x78)" * (cast_expression "(int *)(param_1 + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }" { (expression_statement "iVar5 = *(int *)(param_1 + 0x60);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x60)" identifier = (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 != 0) goto LAB_000340ec;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000340ec;" goto statement_identifier ;)) (expression_statement "pcVar12 = *(code **)(iVar3 + 0xc);" (assignment_expression "pcVar12 = *(code **)(iVar3 + 0xc)" identifier = (pointer_expression "*(code **)(iVar3 + 0xc)" * (cast_expression "(code **)(iVar3 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00034114;" goto statement_identifier ;) })) (labeled_statement "LAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;" statement_identifier : (expression_statement "(**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;" (call_expression "(**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))" (parenthesized_expression "(**(code **)(iVar3 + 0xc))" ( (pointer_expression "**(code **)(iVar3 + 0xc)" * (pointer_expression "*(code **)(iVar3 + 0xc)" * (cast_expression "(code **)(iVar3 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x80)" * (cast_expression "(undefined4 *)(param_1 + 0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) , identifier , identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x1ac)" * (cast_expression "(undefined4 *)(param_1 + 0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1ac)" ( (binary_expression "param_1 + 0x1ac" identifier + number_literal) )))) ))) ;)) })) (expression_statement "iVar5 = *(int *)(param_1 + 0x60);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x60)" identifier = (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = param_2[4];" (assignment_expression "iVar9 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (if_statement "if (iVar5 == 0) goto LAB_00033ff0;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00033ff0;" goto statement_identifier ;)) }))) (expression_statement "(**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);" (call_expression "(**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2)" (parenthesized_expression "(**(code **)(iVar5 + 0x10))" ( (pointer_expression "**(code **)(iVar5 + 0x10)" * (pointer_expression "*(code **)(iVar5 + 0x10)" * (cast_expression "(code **)(iVar5 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x68)" * (cast_expression "(undefined4 *)(param_1 + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) , identifier , (binary_expression "uVar10 + *param_2" identifier + (pointer_expression "*param_2" * identifier)) ))) ;) (expression_statement "iVar9 = param_2[4];" (assignment_expression "iVar9 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) }))) (labeled_statement "LAB_00033ff0:\n      iVar3 = *param_2;" statement_identifier : (expression_statement "iVar3 = *param_2;" (assignment_expression "iVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;)) (expression_statement "iVar5 = uVar10 + iVar3 + (int)unaff_s3;" (assignment_expression "iVar5 = uVar10 + iVar3 + (int)unaff_s3" identifier = (binary_expression "uVar10 + iVar3 + (int)unaff_s3" (binary_expression "uVar10 + iVar3" identifier + identifier) + (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;" (assignment_expression "*(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1" (pointer_expression "*(int *)(param_1 + 0x1ac)" * (cast_expression "(int *)(param_1 + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1ac)" ( (binary_expression "param_1 + 0x1ac" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x1ac) + 1" (pointer_expression "*(int *)(param_1 + 0x1ac)" * (cast_expression "(int *)(param_1 + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1ac)" ( (binary_expression "param_1 + 0x1ac" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "param_2[8] = uVar10 + iVar3;" (assignment_expression "param_2[8] = uVar10 + iVar3" (subscript_expression "param_2[8]" identifier [ number_literal ]) = (binary_expression "uVar10 + iVar3" identifier + identifier)) ;) (expression_statement "param_2[5] = iVar9;" (assignment_expression "param_2[5] = iVar9" (subscript_expression "param_2[5]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }" else (compound_statement "{\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }" { (expression_statement "*(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);" (assignment_expression "*(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18)" (pointer_expression "*(char *)(param_2[4] + 1)" * (cast_expression "(char *)(param_2[4] + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[4] + 1)" ( (binary_expression "param_2[4] + 1" (subscript_expression "param_2[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)((uint)(iVar5 + -5) >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)(iVar5 + -5) >> 0x18)" ( (binary_expression "(uint)(iVar5 + -5) >> 0x18" (call_expression "(uint)(iVar5 + -5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar5 + -5)" ( (binary_expression "iVar5 + -5" identifier + number_literal) ))) >> number_literal) )))) ;) (expression_statement "*(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);" (assignment_expression "*(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10)" (pointer_expression "*(char *)(param_2[4] + 2)" * (cast_expression "(char *)(param_2[4] + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[4] + 2)" ( (binary_expression "param_2[4] + 2" (subscript_expression "param_2[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)((uint)(*param_2 + -5) >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)(*param_2 + -5) >> 0x10)" ( (binary_expression "(uint)(*param_2 + -5) >> 0x10" (call_expression "(uint)(*param_2 + -5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*param_2 + -5)" ( (binary_expression "*param_2 + -5" (pointer_expression "*param_2" * identifier) + number_literal) ))) >> number_literal) )))) ;) (expression_statement "*(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);" (assignment_expression "*(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8)" (pointer_expression "*(char *)(param_2[4] + 3)" * (cast_expression "(char *)(param_2[4] + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[4] + 3)" ( (binary_expression "param_2[4] + 3" (subscript_expression "param_2[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)((uint)(*param_2 + -5) >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)(*param_2 + -5) >> 8)" ( (binary_expression "(uint)(*param_2 + -5) >> 8" (call_expression "(uint)(*param_2 + -5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*param_2 + -5)" ( (binary_expression "*param_2 + -5" (pointer_expression "*param_2" * identifier) + number_literal) ))) >> number_literal) )))) ;) (expression_statement "*(char *)(param_2[4] + 4) = (char)*param_2 + -5;" (assignment_expression "*(char *)(param_2[4] + 4) = (char)*param_2 + -5" (pointer_expression "*(char *)(param_2[4] + 4)" * (cast_expression "(char *)(param_2[4] + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[4] + 4)" ( (binary_expression "param_2[4] + 4" (subscript_expression "param_2[4]" identifier [ number_literal ]) + number_literal) )))) = (binary_expression "(char)*param_2 + -5" (cast_expression "(char)*param_2" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_2" * identifier)) + number_literal)) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x1ac);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x1ac)" identifier = (pointer_expression "*(int *)(param_1 + 0x1ac)" * (cast_expression "(int *)(param_1 + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1ac)" ( (binary_expression "param_1 + 0x1ac" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *param_2 + -1;" (assignment_expression "iVar5 = *param_2 + -1" identifier = (binary_expression "*param_2 + -1" (pointer_expression "*param_2" * identifier) + number_literal)) ;) (expression_statement "param_2[5] = param_2[4] + 1;" (assignment_expression "param_2[5] = param_2[4] + 1" (subscript_expression "param_2[5]" identifier [ number_literal ]) = (binary_expression "param_2[4] + 1" (subscript_expression "param_2[4]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0x1ac) = iVar3 + 1;" (assignment_expression "*(int *)(param_1 + 0x1ac) = iVar3 + 1" (pointer_expression "*(int *)(param_1 + 0x1ac)" * (cast_expression "(int *)(param_1 + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1ac)" ( (binary_expression "param_1 + 0x1ac" identifier + number_literal) )))) = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) }))) (if_statement "if (local_2c == *(int *)puVar1) {\n      return iVar5;\n    }" if (parenthesized_expression "(local_2c == *(int *)puVar1)" ( (binary_expression "local_2c == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n      return iVar5;\n    }" { (return_statement "return iVar5;" return identifier ;) })) (expression_statement "iVar5 = local_2c;" (assignment_expression "iVar5 = local_2c" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000adca4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000adca4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000adca4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000adca4" * (cast_expression "(code *)PTR___stack_chk_fail_000adca4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_00034520:\n    param_2[6] = iVar5;" statement_identifier : (expression_statement "param_2[6] = iVar5;" (assignment_expression "param_2[6] = iVar5" (subscript_expression "param_2[6]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "piVar11 = unaff_s3;" (assignment_expression "piVar11 = unaff_s3" identifier = identifier) ;) (labeled_statement "LAB_0003420c:\n    FUN_0002fb84(param_2,piVar11,unaff_s5);" statement_identifier : (expression_statement "FUN_0002fb84(param_2,piVar11,unaff_s5);" (call_expression "FUN_0002fb84(param_2,piVar11,unaff_s5)" identifier (argument_list "(param_2,piVar11,unaff_s5)" ( identifier , identifier , identifier ))) ;)) (expression_statement "iVar5 = param_2[6];" (assignment_expression "iVar5 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "unaff_s3 = &iStack_28 + uVar7 * 3;" (assignment_expression "unaff_s3 = &iStack_28 + uVar7 * 3" identifier = (binary_expression "&iStack_28 + uVar7 * 3" (pointer_expression "&iStack_28" & identifier) + (binary_expression "uVar7 * 3" identifier * number_literal))) ;) (expression_statement "local_5c[uVar7 * 3 + 2] = 1;" (assignment_expression "local_5c[uVar7 * 3 + 2] = 1" (subscript_expression "local_5c[uVar7 * 3 + 2]" identifier [ (binary_expression "uVar7 * 3 + 2" (binary_expression "uVar7 * 3" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "local_5c[uVar7 * 3] = iVar5;" (assignment_expression "local_5c[uVar7 * 3] = iVar5" (subscript_expression "local_5c[uVar7 * 3]" identifier [ (binary_expression "uVar7 * 3" identifier * number_literal) ]) = identifier) ;) (expression_statement "FUN_0002fb84(param_2,piVar11,unaff_s5);" (call_expression "FUN_0002fb84(param_2,piVar11,unaff_s5)" identifier (argument_list "(param_2,piVar11,unaff_s5)" ( identifier , identifier , identifier ))) ;) (if_statement "if (local_64 != 0) {\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }" if (parenthesized_expression "(local_64 != 0)" ( (binary_expression "local_64 != 0" identifier != number_literal) )) (compound_statement "{\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }" { (expression_statement "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];" (assignment_expression "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3]" (subscript_expression "local_5c[uVar7 * 3 + 1]" identifier [ (binary_expression "uVar7 * 3 + 1" (binary_expression "uVar7 * 3" identifier * number_literal) + number_literal) ]) = (binary_expression "param_2[6] - local_5c[uVar7 * 3]" (subscript_expression "param_2[6]" identifier [ number_literal ]) - (subscript_expression "local_5c[uVar7 * 3]" identifier [ (binary_expression "uVar7 * 3" identifier * number_literal) ]))) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit "/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nint ssh2_pkt_construct(Ssh_conflict ssh,Packet *pkt)\n\n{\n  char *texttype;\n  uchar uVar2;\n  ssh2_cipher *psVar1;\n  int iVar3;\n  int iVar4;\n  ulong uVar5;\n  long lVar6;\n  Ssh_conflict ssh_00;\n  ssh_mac *psVar7;\n  Packet *pPVar8;\n  size_t n;\n  uchar *puVar9;\n  uint type;\n  int iVar10;\n  uchar **ppuVar11;\n  uchar **ppuVar12;\n  uchar **ppuVar13;\n  uchar *puVar14;\n  uchar **unaff_s3;\n  int *piVar15;\n  int *unaff_s5;\n  int in_t9;\n  _func_void_void_ptr_uchar_ptr_int_ulong *p_Var16;\n  code *pcVar17;\n  code *pcVar18;\n  undefined4 uStackY_c0;\n  undefined4 uStackY_bc;\n  Packet *pPStackY_b4;\n  uchar **ppuStackY_b0;\n  uchar **ppuStackY_ac;\n  uchar **ppuStackY_a8;\n  code *pcStackY_a4;\n  uchar *newpayload;\n  int newlen;\n  logblank_t blanks [4];\n  uchar *puStack_28;\n  \n  puVar9 = (uchar *)pkt->length;\n  piVar15 = *(int **)(in_t9 + 0x7a070);\n  iVar3 = *piVar15;\n  if (ssh->logctx == (void *)0x0) goto LAB_00033da4;\n  ppuVar11 = (uchar **)ssh->logomitdata;\n  iVar4 = pkt->type;\n  pkt->savedpos = 0;\n  pkt->length = (int)puVar9 - ((int)pkt->body - (int)pkt->data);\n  if ((ppuVar11 != (uchar **)0x0) && (ppuVar11 = (uchar **)0x0, iVar4 - 0x5eU < 2)) {\n    pPVar8 = pkt;\n    ssh_pkt_getuint32(pkt);\n    if (pkt->type == 0x5f) {\n      ssh_pkt_getuint32(pPVar8);\n    }\n    blanks[0].type = 2;\n    blanks[0].offset = pkt->savedpos + 4;\n    ssh_pkt_getstring(pkt,(char **)&newpayload,&newlen);\n    if (newpayload == (uchar *)0x0) {\n      iVar4 = pkt->type;\n      ppuVar11 = (uchar **)0x0;\n    }\n    else {\n      ppuVar11 = (uchar **)0x1;\n      iVar4 = pkt->type;\n    }\n  }\n  if (iVar4 == 0x32) {\n    iVar4 = conf_get_int(ssh->conf,0x7b);\n    if (iVar4 != 0) {\n      unaff_s5 = &newlen;\n      unaff_s3 = &newpayload;\n      pkt->savedpos = 0;\n      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n      if (newlen == 8) {\n        iVar4 = (**(code **)(in_t9 + 0x7a054))(newpayload,*(int *)(del234 + in_t9 + 4) + -0x1d5c,8);\n        iVar10 = pkt->length;\n        ppuVar13 = ppuVar11;\n        if (iVar4 != 0) goto LAB_00033d20;\n        iVar4 = pkt->savedpos;\n        if (0 < iVar10 - iVar4) {\n          iVar4 = iVar4 + 1;\n          pkt->savedpos = iVar4;\n        }\n        blanks[(int)ppuVar11].offset = iVar4;\n        blanks[(int)ppuVar11].type = 1;\n        ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n        if (newpayload != (uchar *)0x0) {\n          ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n          ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n          unaff_s3 = ppuVar13;\n          if (newpayload == (uchar *)0x0) {\n            iVar10 = pkt->length;\n            goto LAB_00033d20;\n          }\n          iVar10 = pkt->length;\n          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar13].offset;\n          goto LAB_00033d20;\n        }\n      }\n      goto LAB_00033d1c;\n    }\n    iVar4 = pkt->type;\n  }\n  if ((ssh->pkt_actx == SSH2_PKTCTX_KBDINTER) && (iVar4 == 0x3d)) {\n    iVar4 = conf_get_int(ssh->conf,0x7b);\n    if (iVar4 != 0) {\n      pkt->savedpos = 0;\n      unaff_s5 = &newlen;\n      ssh_pkt_getuint32(pkt);\n      blanks[(int)ppuVar11].offset = pkt->savedpos;\n      blanks[(int)ppuVar11].type = 1;\n      do {\n        ssh_pkt_getstring(pkt,(char **)&newpayload,unaff_s5);\n      } while (newpayload != (uchar *)0x0);\n      iVar10 = pkt->length;\n      blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n      ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n      unaff_s3 = &newpayload;\n      goto LAB_00033d20;\n    }\n    iVar4 = pkt->type;\n  }\n  if ((iVar4 == 0x62) && (iVar4 = conf_get_int(ssh->conf,0x7b), iVar4 != 0)) {\n    pkt->savedpos = 0;\n    unaff_s5 = &newlen;\n    unaff_s3 = &newpayload;\n    pPVar8 = pkt;\n    ssh_pkt_getuint32(pkt);\n    ssh_pkt_getstring(pPVar8,(char **)unaff_s3,unaff_s5);\n    if (newlen == 7) {\n      iVar10 = pkt->savedpos;\n      iVar4 = iVar10 + 1;\n      ppuVar13 = unaff_s3;\n      if (pkt->length - iVar10 < 1) goto LAB_0003420c;\n      if (pkt->length - iVar4 < 1) goto LAB_00034520;\n      pkt->savedpos = iVar10 + 2;\n      goto LAB_0003420c;\n    }\n  }\nLAB_00033d1c:\n  iVar10 = pkt->length;\n  ppuVar13 = ppuVar11;\nLAB_00033d20:\n  do {\n    type = (uint)pkt->data[5];\n    texttype = ssh2_pkt_type(ssh->pkt_kctx,ssh->pkt_actx,type);\n    log_packet(ssh->logctx,1,type,texttype,pkt->body,iVar10,(int)ppuVar13,blanks,\n               &ssh->v2_outgoing_sequence,pkt->downstream_id,pkt->additional_log_text);\n    puVar9 = pkt->body + (pkt->length - (int)pkt->data);\n    pkt->length = (long)puVar9;\nLAB_00033da4:\n    ppuVar11 = (uchar **)ssh->bare_connection;\n    if (ppuVar11 == (uchar **)0x0) {\n      if (ssh->cscomp != (ssh_compress *)0x0) {\n        iVar4 = (*ssh->cscomp->compress)\n                          (ssh->cs_comp_ctx,pkt->data + 5,(int)(puVar9 + -5),&newpayload,&newlen);\n        if (iVar4 != 0) {\n                    /* WARNING: Subroutine does not return */\n          pkt->length = 5;\n          ssh_pkt_adddata(pkt,newpayload,newlen);\n        }\n        puVar9 = (uchar *)pkt->length;\n      }\n      if (ssh->cscipher == (ssh2_cipher *)0x0) {\n        iVar4 = 8;\n      }\n      else {\n        iVar10 = ssh->cscipher->blksize;\n        iVar4 = 8;\n        if (7 < iVar10) {\n          iVar4 = iVar10;\n        }\n      }\n      psVar7 = ssh->csmac;\n      if ((psVar7 == (ssh_mac *)0x0) || (ssh->csmac_etm == 0)) {\n        iVar10 = pkt->forcepad;\n        puVar14 = puVar9;\n        if ((int)(puVar9 + 4) < iVar10) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar10 = 4;\n      }\n      else {\n        iVar10 = pkt->forcepad;\n        puVar14 = puVar9 + -4;\n        if (iVar10 <= (int)(puVar9 + 4)) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar10 = iVar10 - (int)puVar9;\n      }\n      if (iVar4 == 0) {\n        trap(7);\n      }\n      if (iVar4 == 0) {\n        trap(7);\n      }\n      ppuVar13 = (uchar **)((iVar4 - (int)(puVar14 + iVar10) % iVar4) % iVar4 + iVar10);\n      if (0xff < (int)ppuVar13) {\n        iVar3 = 0x92d;\n        pcVar17 = *(code **)(in_t9 + 0x79e9c);\n        pPVar8 = (Packet *)(*(int *)(del234 + in_t9 + 4) + -0x3c40);\n        pcVar18 = ssh2_pkt_defer_noqueue;\n        ssh_00 = (Ssh_conflict)(*(int *)(del234 + in_t9 + 4) + -0x2b60);\n        (*pcVar17)();\n        uStackY_bc = **(undefined4 **)(pcVar17 + 0x7978c);\n        pPStackY_b4 = pkt;\n        ppuStackY_b0 = ppuVar11;\n        ppuStackY_ac = ppuVar13;\n        ppuStackY_a8 = unaff_s3;\n        pcStackY_a4 = pcVar18;\n        if ((((ssh_00->cscipher != (ssh2_cipher *)0x0) && ((ssh_00->cscipher->flags & 1) != 0)) &&\n            (iVar3 == 0 && ssh_00->deferred_len == 0)) && ((ssh_00->remote_bugs & 0x200U) == 0)) {\n          pPVar8 = ssh2_pkt_init(2);\n          uStackY_c0 = 0;\n                    /* WARNING: Subroutine does not return */\n          ssh_pkt_adddata(pPVar8,&uStackY_c0,4);\n        }\n        iVar3 = ssh2_pkt_construct(ssh_00,pPVar8);\n        iVar4 = ssh_00->deferred_len;\n        if (ssh_00->deferred_size < iVar4 + iVar3) {\n          n = iVar4 + iVar3 + 0x80;\n          ssh_00->deferred_size = n;\n          puVar9 = (uchar *)saferealloc(ssh_00->deferred_send_data,n,1);\n          iVar4 = ssh_00->deferred_len;\n          ssh_00->deferred_send_data = puVar9;\n        }\n        else {\n          puVar9 = ssh_00->deferred_send_data;\n        }\n        (**(code **)(pcVar17 + 0x79790))(puVar9 + iVar4,pPVar8->body,iVar3);\n        iVar4 = pPVar8->encrypted_len;\n        puVar9 = pPVar8->data;\n        ssh_00->deferred_len = ssh_00->deferred_len + iVar3;\n                    /* WARNING: Subroutine does not return */\n        ssh_00->deferred_data_size = ssh_00->deferred_data_size + iVar4;\n        safefree(puVar9);\n      }\n      unaff_s3 = (uchar **)0x0;\n      if (psVar7 != (ssh_mac *)0x0) {\n        unaff_s3 = (uchar **)psVar7->len;\n      }\n      if (pkt->maxlen < (int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3)) {\n        ssh_pkt_ensure(pkt,(int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3));\n      }\n      pkt->data[4] = (uchar)ppuVar13;\n      ppuVar12 = (uchar **)0x0;\n      if (0 < (int)ppuVar13) {\n        do {\n          uVar2 = (**(code **)(in_t9 + 0x79a48))();\n          puVar9 = pkt->data + (int)ppuVar12;\n          ppuVar12 = (uchar **)((int)ppuVar12 + 1);\n          puVar9[pkt->length] = uVar2;\n          ppuVar11 = ppuVar12;\n        } while (ppuVar13 != ppuVar12);\n      }\n      *pkt->data = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x18);\n      pkt->data[1] = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x10);\n      pkt->data[2] = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 8);\n      unaff_s5 = (int *)(((uint)ppuVar13 & 0xff) + pkt->length + -4);\n      pkt->data[3] = (uchar)unaff_s5;\n      psVar1 = ssh->cscipher;\n      if (psVar1 == (ssh2_cipher *)0x0) {\n        psVar7 = ssh->csmac;\n        puVar9 = pkt->data;\n        if (psVar7 != (ssh_mac *)0x0) {\n          iVar4 = (int)ppuVar13 + pkt->length;\n          if (ssh->csmac_etm == 0) goto LAB_00033fb4;\nLAB_00034110:\n          p_Var16 = psVar7->generate;\nLAB_00034114:\n          (*p_Var16)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          puVar9 = pkt->data;\n        }\n      }\n      else {\n        puVar9 = pkt->data;\n        if ((psVar1->flags & 2) == 0) {\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\nLAB_000340ec:\n              (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9 + 4,iVar4 + -4);\n              puVar9 = pkt->data;\n              psVar7 = ssh->csmac;\n              iVar4 = (int)ppuVar13 + pkt->length;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (*psVar1->encrypt_length)(ssh->cs_cipher_ctx,puVar9,4,ssh->v2_outgoing_sequence);\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            puVar9 = pkt->data;\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\n              psVar1 = ssh->cscipher;\n              if (psVar1 != (ssh2_cipher *)0x0) goto LAB_000340ec;\n              p_Var16 = psVar7->generate;\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (*psVar7->generate)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          }\n          psVar1 = ssh->cscipher;\n          puVar9 = pkt->data;\n          if (psVar1 == (ssh2_cipher *)0x0) goto LAB_00033ff0;\n        }\n        (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9,(int)ppuVar13 + pkt->length);\n        puVar9 = pkt->data;\n      }\nLAB_00033ff0:\n      iVar10 = (int)ppuVar13 + pkt->length;\n      iVar4 = iVar10 + (int)unaff_s3;\n      ssh->v2_outgoing_sequence = ssh->v2_outgoing_sequence + 1;\n      pkt->encrypted_len = iVar10;\n      pkt->body = puVar9;\n    }\n    else {\n      pkt->data[1] = (uchar)((uint)(puVar9 + -5) >> 0x18);\n      pkt->data[2] = (uchar)((uint)(pkt->length + -5) >> 0x10);\n      pkt->data[3] = (uchar)((uint)(pkt->length + -5) >> 8);\n      pkt->data[4] = (char)pkt->length + 0xfb;\n      uVar5 = ssh->v2_outgoing_sequence;\n      iVar4 = pkt->length + -1;\n      pkt->body = pkt->data + 1;\n      ssh->v2_outgoing_sequence = uVar5 + 1;\n    }\n    if (iVar3 == *piVar15) {\n      return iVar4;\n    }\n    iVar4 = iVar3;\n    (**(code **)(in_t9 + 0x7a040))();\nLAB_00034520:\n    pkt->savedpos = iVar4;\n    ppuVar13 = unaff_s3;\nLAB_0003420c:\n    ssh_pkt_getstring(pkt,(char **)ppuVar13,unaff_s5);\n    lVar6 = pkt->savedpos;\n    unaff_s3 = &puStack_28 + (int)ppuVar11 * 3;\n    blanks[(int)ppuVar11].type = 1;\n    blanks[(int)ppuVar11].offset = lVar6;\n    ssh_pkt_getstring(pkt,(char **)ppuVar13,unaff_s5);\n    if (newpayload == (uchar *)0x0) goto LAB_00033d1c;\n    iVar10 = pkt->length;\n    blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n    ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n  } while( true );\n}\n\n" comment (function_definition "int ssh2_pkt_construct(Ssh_conflict ssh,Packet *pkt)\n\n{\n  char *texttype;\n  uchar uVar2;\n  ssh2_cipher *psVar1;\n  int iVar3;\n  int iVar4;\n  ulong uVar5;\n  long lVar6;\n  Ssh_conflict ssh_00;\n  ssh_mac *psVar7;\n  Packet *pPVar8;\n  size_t n;\n  uchar *puVar9;\n  uint type;\n  int iVar10;\n  uchar **ppuVar11;\n  uchar **ppuVar12;\n  uchar **ppuVar13;\n  uchar *puVar14;\n  uchar **unaff_s3;\n  int *piVar15;\n  int *unaff_s5;\n  int in_t9;\n  _func_void_void_ptr_uchar_ptr_int_ulong *p_Var16;\n  code *pcVar17;\n  code *pcVar18;\n  undefined4 uStackY_c0;\n  undefined4 uStackY_bc;\n  Packet *pPStackY_b4;\n  uchar **ppuStackY_b0;\n  uchar **ppuStackY_ac;\n  uchar **ppuStackY_a8;\n  code *pcStackY_a4;\n  uchar *newpayload;\n  int newlen;\n  logblank_t blanks [4];\n  uchar *puStack_28;\n  \n  puVar9 = (uchar *)pkt->length;\n  piVar15 = *(int **)(in_t9 + 0x7a070);\n  iVar3 = *piVar15;\n  if (ssh->logctx == (void *)0x0) goto LAB_00033da4;\n  ppuVar11 = (uchar **)ssh->logomitdata;\n  iVar4 = pkt->type;\n  pkt->savedpos = 0;\n  pkt->length = (int)puVar9 - ((int)pkt->body - (int)pkt->data);\n  if ((ppuVar11 != (uchar **)0x0) && (ppuVar11 = (uchar **)0x0, iVar4 - 0x5eU < 2)) {\n    pPVar8 = pkt;\n    ssh_pkt_getuint32(pkt);\n    if (pkt->type == 0x5f) {\n      ssh_pkt_getuint32(pPVar8);\n    }\n    blanks[0].type = 2;\n    blanks[0].offset = pkt->savedpos + 4;\n    ssh_pkt_getstring(pkt,(char **)&newpayload,&newlen);\n    if (newpayload == (uchar *)0x0) {\n      iVar4 = pkt->type;\n      ppuVar11 = (uchar **)0x0;\n    }\n    else {\n      ppuVar11 = (uchar **)0x1;\n      iVar4 = pkt->type;\n    }\n  }\n  if (iVar4 == 0x32) {\n    iVar4 = conf_get_int(ssh->conf,0x7b);\n    if (iVar4 != 0) {\n      unaff_s5 = &newlen;\n      unaff_s3 = &newpayload;\n      pkt->savedpos = 0;\n      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n      if (newlen == 8) {\n        iVar4 = (**(code **)(in_t9 + 0x7a054))(newpayload,*(int *)(del234 + in_t9 + 4) + -0x1d5c,8);\n        iVar10 = pkt->length;\n        ppuVar13 = ppuVar11;\n        if (iVar4 != 0) goto LAB_00033d20;\n        iVar4 = pkt->savedpos;\n        if (0 < iVar10 - iVar4) {\n          iVar4 = iVar4 + 1;\n          pkt->savedpos = iVar4;\n        }\n        blanks[(int)ppuVar11].offset = iVar4;\n        blanks[(int)ppuVar11].type = 1;\n        ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n        if (newpayload != (uchar *)0x0) {\n          ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n          ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n          unaff_s3 = ppuVar13;\n          if (newpayload == (uchar *)0x0) {\n            iVar10 = pkt->length;\n            goto LAB_00033d20;\n          }\n          iVar10 = pkt->length;\n          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar13].offset;\n          goto LAB_00033d20;\n        }\n      }\n      goto LAB_00033d1c;\n    }\n    iVar4 = pkt->type;\n  }\n  if ((ssh->pkt_actx == SSH2_PKTCTX_KBDINTER) && (iVar4 == 0x3d)) {\n    iVar4 = conf_get_int(ssh->conf,0x7b);\n    if (iVar4 != 0) {\n      pkt->savedpos = 0;\n      unaff_s5 = &newlen;\n      ssh_pkt_getuint32(pkt);\n      blanks[(int)ppuVar11].offset = pkt->savedpos;\n      blanks[(int)ppuVar11].type = 1;\n      do {\n        ssh_pkt_getstring(pkt,(char **)&newpayload,unaff_s5);\n      } while (newpayload != (uchar *)0x0);\n      iVar10 = pkt->length;\n      blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n      ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n      unaff_s3 = &newpayload;\n      goto LAB_00033d20;\n    }\n    iVar4 = pkt->type;\n  }\n  if ((iVar4 == 0x62) && (iVar4 = conf_get_int(ssh->conf,0x7b), iVar4 != 0)) {\n    pkt->savedpos = 0;\n    unaff_s5 = &newlen;\n    unaff_s3 = &newpayload;\n    pPVar8 = pkt;\n    ssh_pkt_getuint32(pkt);\n    ssh_pkt_getstring(pPVar8,(char **)unaff_s3,unaff_s5);\n    if (newlen == 7) {\n      iVar10 = pkt->savedpos;\n      iVar4 = iVar10 + 1;\n      ppuVar13 = unaff_s3;\n      if (pkt->length - iVar10 < 1) goto LAB_0003420c;\n      if (pkt->length - iVar4 < 1) goto LAB_00034520;\n      pkt->savedpos = iVar10 + 2;\n      goto LAB_0003420c;\n    }\n  }\nLAB_00033d1c:\n  iVar10 = pkt->length;\n  ppuVar13 = ppuVar11;\nLAB_00033d20:\n  do {\n    type = (uint)pkt->data[5];\n    texttype = ssh2_pkt_type(ssh->pkt_kctx,ssh->pkt_actx,type);\n    log_packet(ssh->logctx,1,type,texttype,pkt->body,iVar10,(int)ppuVar13,blanks,\n               &ssh->v2_outgoing_sequence,pkt->downstream_id,pkt->additional_log_text);\n    puVar9 = pkt->body + (pkt->length - (int)pkt->data);\n    pkt->length = (long)puVar9;\nLAB_00033da4:\n    ppuVar11 = (uchar **)ssh->bare_connection;\n    if (ppuVar11 == (uchar **)0x0) {\n      if (ssh->cscomp != (ssh_compress *)0x0) {\n        iVar4 = (*ssh->cscomp->compress)\n                          (ssh->cs_comp_ctx,pkt->data + 5,(int)(puVar9 + -5),&newpayload,&newlen);\n        if (iVar4 != 0) {\n                    /* WARNING: Subroutine does not return */\n          pkt->length = 5;\n          ssh_pkt_adddata(pkt,newpayload,newlen);\n        }\n        puVar9 = (uchar *)pkt->length;\n      }\n      if (ssh->cscipher == (ssh2_cipher *)0x0) {\n        iVar4 = 8;\n      }\n      else {\n        iVar10 = ssh->cscipher->blksize;\n        iVar4 = 8;\n        if (7 < iVar10) {\n          iVar4 = iVar10;\n        }\n      }\n      psVar7 = ssh->csmac;\n      if ((psVar7 == (ssh_mac *)0x0) || (ssh->csmac_etm == 0)) {\n        iVar10 = pkt->forcepad;\n        puVar14 = puVar9;\n        if ((int)(puVar9 + 4) < iVar10) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar10 = 4;\n      }\n      else {\n        iVar10 = pkt->forcepad;\n        puVar14 = puVar9 + -4;\n        if (iVar10 <= (int)(puVar9 + 4)) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar10 = iVar10 - (int)puVar9;\n      }\n      if (iVar4 == 0) {\n        trap(7);\n      }\n      if (iVar4 == 0) {\n        trap(7);\n      }\n      ppuVar13 = (uchar **)((iVar4 - (int)(puVar14 + iVar10) % iVar4) % iVar4 + iVar10);\n      if (0xff < (int)ppuVar13) {\n        iVar3 = 0x92d;\n        pcVar17 = *(code **)(in_t9 + 0x79e9c);\n        pPVar8 = (Packet *)(*(int *)(del234 + in_t9 + 4) + -0x3c40);\n        pcVar18 = ssh2_pkt_defer_noqueue;\n        ssh_00 = (Ssh_conflict)(*(int *)(del234 + in_t9 + 4) + -0x2b60);\n        (*pcVar17)();\n        uStackY_bc = **(undefined4 **)(pcVar17 + 0x7978c);\n        pPStackY_b4 = pkt;\n        ppuStackY_b0 = ppuVar11;\n        ppuStackY_ac = ppuVar13;\n        ppuStackY_a8 = unaff_s3;\n        pcStackY_a4 = pcVar18;\n        if ((((ssh_00->cscipher != (ssh2_cipher *)0x0) && ((ssh_00->cscipher->flags & 1) != 0)) &&\n            (iVar3 == 0 && ssh_00->deferred_len == 0)) && ((ssh_00->remote_bugs & 0x200U) == 0)) {\n          pPVar8 = ssh2_pkt_init(2);\n          uStackY_c0 = 0;\n                    /* WARNING: Subroutine does not return */\n          ssh_pkt_adddata(pPVar8,&uStackY_c0,4);\n        }\n        iVar3 = ssh2_pkt_construct(ssh_00,pPVar8);\n        iVar4 = ssh_00->deferred_len;\n        if (ssh_00->deferred_size < iVar4 + iVar3) {\n          n = iVar4 + iVar3 + 0x80;\n          ssh_00->deferred_size = n;\n          puVar9 = (uchar *)saferealloc(ssh_00->deferred_send_data,n,1);\n          iVar4 = ssh_00->deferred_len;\n          ssh_00->deferred_send_data = puVar9;\n        }\n        else {\n          puVar9 = ssh_00->deferred_send_data;\n        }\n        (**(code **)(pcVar17 + 0x79790))(puVar9 + iVar4,pPVar8->body,iVar3);\n        iVar4 = pPVar8->encrypted_len;\n        puVar9 = pPVar8->data;\n        ssh_00->deferred_len = ssh_00->deferred_len + iVar3;\n                    /* WARNING: Subroutine does not return */\n        ssh_00->deferred_data_size = ssh_00->deferred_data_size + iVar4;\n        safefree(puVar9);\n      }\n      unaff_s3 = (uchar **)0x0;\n      if (psVar7 != (ssh_mac *)0x0) {\n        unaff_s3 = (uchar **)psVar7->len;\n      }\n      if (pkt->maxlen < (int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3)) {\n        ssh_pkt_ensure(pkt,(int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3));\n      }\n      pkt->data[4] = (uchar)ppuVar13;\n      ppuVar12 = (uchar **)0x0;\n      if (0 < (int)ppuVar13) {\n        do {\n          uVar2 = (**(code **)(in_t9 + 0x79a48))();\n          puVar9 = pkt->data + (int)ppuVar12;\n          ppuVar12 = (uchar **)((int)ppuVar12 + 1);\n          puVar9[pkt->length] = uVar2;\n          ppuVar11 = ppuVar12;\n        } while (ppuVar13 != ppuVar12);\n      }\n      *pkt->data = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x18);\n      pkt->data[1] = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x10);\n      pkt->data[2] = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 8);\n      unaff_s5 = (int *)(((uint)ppuVar13 & 0xff) + pkt->length + -4);\n      pkt->data[3] = (uchar)unaff_s5;\n      psVar1 = ssh->cscipher;\n      if (psVar1 == (ssh2_cipher *)0x0) {\n        psVar7 = ssh->csmac;\n        puVar9 = pkt->data;\n        if (psVar7 != (ssh_mac *)0x0) {\n          iVar4 = (int)ppuVar13 + pkt->length;\n          if (ssh->csmac_etm == 0) goto LAB_00033fb4;\nLAB_00034110:\n          p_Var16 = psVar7->generate;\nLAB_00034114:\n          (*p_Var16)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          puVar9 = pkt->data;\n        }\n      }\n      else {\n        puVar9 = pkt->data;\n        if ((psVar1->flags & 2) == 0) {\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\nLAB_000340ec:\n              (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9 + 4,iVar4 + -4);\n              puVar9 = pkt->data;\n              psVar7 = ssh->csmac;\n              iVar4 = (int)ppuVar13 + pkt->length;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (*psVar1->encrypt_length)(ssh->cs_cipher_ctx,puVar9,4,ssh->v2_outgoing_sequence);\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            puVar9 = pkt->data;\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\n              psVar1 = ssh->cscipher;\n              if (psVar1 != (ssh2_cipher *)0x0) goto LAB_000340ec;\n              p_Var16 = psVar7->generate;\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (*psVar7->generate)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          }\n          psVar1 = ssh->cscipher;\n          puVar9 = pkt->data;\n          if (psVar1 == (ssh2_cipher *)0x0) goto LAB_00033ff0;\n        }\n        (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9,(int)ppuVar13 + pkt->length);\n        puVar9 = pkt->data;\n      }\nLAB_00033ff0:\n      iVar10 = (int)ppuVar13 + pkt->length;\n      iVar4 = iVar10 + (int)unaff_s3;\n      ssh->v2_outgoing_sequence = ssh->v2_outgoing_sequence + 1;\n      pkt->encrypted_len = iVar10;\n      pkt->body = puVar9;\n    }\n    else {\n      pkt->data[1] = (uchar)((uint)(puVar9 + -5) >> 0x18);\n      pkt->data[2] = (uchar)((uint)(pkt->length + -5) >> 0x10);\n      pkt->data[3] = (uchar)((uint)(pkt->length + -5) >> 8);\n      pkt->data[4] = (char)pkt->length + 0xfb;\n      uVar5 = ssh->v2_outgoing_sequence;\n      iVar4 = pkt->length + -1;\n      pkt->body = pkt->data + 1;\n      ssh->v2_outgoing_sequence = uVar5 + 1;\n    }\n    if (iVar3 == *piVar15) {\n      return iVar4;\n    }\n    iVar4 = iVar3;\n    (**(code **)(in_t9 + 0x7a040))();\nLAB_00034520:\n    pkt->savedpos = iVar4;\n    ppuVar13 = unaff_s3;\nLAB_0003420c:\n    ssh_pkt_getstring(pkt,(char **)ppuVar13,unaff_s5);\n    lVar6 = pkt->savedpos;\n    unaff_s3 = &puStack_28 + (int)ppuVar11 * 3;\n    blanks[(int)ppuVar11].type = 1;\n    blanks[(int)ppuVar11].offset = lVar6;\n    ssh_pkt_getstring(pkt,(char **)ppuVar13,unaff_s5);\n    if (newpayload == (uchar *)0x0) goto LAB_00033d1c;\n    iVar10 = pkt->length;\n    blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n    ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n  } while( true );\n}" primitive_type (function_declarator "ssh2_pkt_construct(Ssh_conflict ssh,Packet *pkt)" identifier (parameter_list "(Ssh_conflict ssh,Packet *pkt)" ( (parameter_declaration "Ssh_conflict ssh" type_identifier identifier) , (parameter_declaration "Packet *pkt" type_identifier (pointer_declarator "*pkt" * identifier)) ))) (compound_statement "{\n  char *texttype;\n  uchar uVar2;\n  ssh2_cipher *psVar1;\n  int iVar3;\n  int iVar4;\n  ulong uVar5;\n  long lVar6;\n  Ssh_conflict ssh_00;\n  ssh_mac *psVar7;\n  Packet *pPVar8;\n  size_t n;\n  uchar *puVar9;\n  uint type;\n  int iVar10;\n  uchar **ppuVar11;\n  uchar **ppuVar12;\n  uchar **ppuVar13;\n  uchar *puVar14;\n  uchar **unaff_s3;\n  int *piVar15;\n  int *unaff_s5;\n  int in_t9;\n  _func_void_void_ptr_uchar_ptr_int_ulong *p_Var16;\n  code *pcVar17;\n  code *pcVar18;\n  undefined4 uStackY_c0;\n  undefined4 uStackY_bc;\n  Packet *pPStackY_b4;\n  uchar **ppuStackY_b0;\n  uchar **ppuStackY_ac;\n  uchar **ppuStackY_a8;\n  code *pcStackY_a4;\n  uchar *newpayload;\n  int newlen;\n  logblank_t blanks [4];\n  uchar *puStack_28;\n  \n  puVar9 = (uchar *)pkt->length;\n  piVar15 = *(int **)(in_t9 + 0x7a070);\n  iVar3 = *piVar15;\n  if (ssh->logctx == (void *)0x0) goto LAB_00033da4;\n  ppuVar11 = (uchar **)ssh->logomitdata;\n  iVar4 = pkt->type;\n  pkt->savedpos = 0;\n  pkt->length = (int)puVar9 - ((int)pkt->body - (int)pkt->data);\n  if ((ppuVar11 != (uchar **)0x0) && (ppuVar11 = (uchar **)0x0, iVar4 - 0x5eU < 2)) {\n    pPVar8 = pkt;\n    ssh_pkt_getuint32(pkt);\n    if (pkt->type == 0x5f) {\n      ssh_pkt_getuint32(pPVar8);\n    }\n    blanks[0].type = 2;\n    blanks[0].offset = pkt->savedpos + 4;\n    ssh_pkt_getstring(pkt,(char **)&newpayload,&newlen);\n    if (newpayload == (uchar *)0x0) {\n      iVar4 = pkt->type;\n      ppuVar11 = (uchar **)0x0;\n    }\n    else {\n      ppuVar11 = (uchar **)0x1;\n      iVar4 = pkt->type;\n    }\n  }\n  if (iVar4 == 0x32) {\n    iVar4 = conf_get_int(ssh->conf,0x7b);\n    if (iVar4 != 0) {\n      unaff_s5 = &newlen;\n      unaff_s3 = &newpayload;\n      pkt->savedpos = 0;\n      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n      if (newlen == 8) {\n        iVar4 = (**(code **)(in_t9 + 0x7a054))(newpayload,*(int *)(del234 + in_t9 + 4) + -0x1d5c,8);\n        iVar10 = pkt->length;\n        ppuVar13 = ppuVar11;\n        if (iVar4 != 0) goto LAB_00033d20;\n        iVar4 = pkt->savedpos;\n        if (0 < iVar10 - iVar4) {\n          iVar4 = iVar4 + 1;\n          pkt->savedpos = iVar4;\n        }\n        blanks[(int)ppuVar11].offset = iVar4;\n        blanks[(int)ppuVar11].type = 1;\n        ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n        if (newpayload != (uchar *)0x0) {\n          ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n          ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n          unaff_s3 = ppuVar13;\n          if (newpayload == (uchar *)0x0) {\n            iVar10 = pkt->length;\n            goto LAB_00033d20;\n          }\n          iVar10 = pkt->length;\n          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar13].offset;\n          goto LAB_00033d20;\n        }\n      }\n      goto LAB_00033d1c;\n    }\n    iVar4 = pkt->type;\n  }\n  if ((ssh->pkt_actx == SSH2_PKTCTX_KBDINTER) && (iVar4 == 0x3d)) {\n    iVar4 = conf_get_int(ssh->conf,0x7b);\n    if (iVar4 != 0) {\n      pkt->savedpos = 0;\n      unaff_s5 = &newlen;\n      ssh_pkt_getuint32(pkt);\n      blanks[(int)ppuVar11].offset = pkt->savedpos;\n      blanks[(int)ppuVar11].type = 1;\n      do {\n        ssh_pkt_getstring(pkt,(char **)&newpayload,unaff_s5);\n      } while (newpayload != (uchar *)0x0);\n      iVar10 = pkt->length;\n      blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n      ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n      unaff_s3 = &newpayload;\n      goto LAB_00033d20;\n    }\n    iVar4 = pkt->type;\n  }\n  if ((iVar4 == 0x62) && (iVar4 = conf_get_int(ssh->conf,0x7b), iVar4 != 0)) {\n    pkt->savedpos = 0;\n    unaff_s5 = &newlen;\n    unaff_s3 = &newpayload;\n    pPVar8 = pkt;\n    ssh_pkt_getuint32(pkt);\n    ssh_pkt_getstring(pPVar8,(char **)unaff_s3,unaff_s5);\n    if (newlen == 7) {\n      iVar10 = pkt->savedpos;\n      iVar4 = iVar10 + 1;\n      ppuVar13 = unaff_s3;\n      if (pkt->length - iVar10 < 1) goto LAB_0003420c;\n      if (pkt->length - iVar4 < 1) goto LAB_00034520;\n      pkt->savedpos = iVar10 + 2;\n      goto LAB_0003420c;\n    }\n  }\nLAB_00033d1c:\n  iVar10 = pkt->length;\n  ppuVar13 = ppuVar11;\nLAB_00033d20:\n  do {\n    type = (uint)pkt->data[5];\n    texttype = ssh2_pkt_type(ssh->pkt_kctx,ssh->pkt_actx,type);\n    log_packet(ssh->logctx,1,type,texttype,pkt->body,iVar10,(int)ppuVar13,blanks,\n               &ssh->v2_outgoing_sequence,pkt->downstream_id,pkt->additional_log_text);\n    puVar9 = pkt->body + (pkt->length - (int)pkt->data);\n    pkt->length = (long)puVar9;\nLAB_00033da4:\n    ppuVar11 = (uchar **)ssh->bare_connection;\n    if (ppuVar11 == (uchar **)0x0) {\n      if (ssh->cscomp != (ssh_compress *)0x0) {\n        iVar4 = (*ssh->cscomp->compress)\n                          (ssh->cs_comp_ctx,pkt->data + 5,(int)(puVar9 + -5),&newpayload,&newlen);\n        if (iVar4 != 0) {\n                    /* WARNING: Subroutine does not return */\n          pkt->length = 5;\n          ssh_pkt_adddata(pkt,newpayload,newlen);\n        }\n        puVar9 = (uchar *)pkt->length;\n      }\n      if (ssh->cscipher == (ssh2_cipher *)0x0) {\n        iVar4 = 8;\n      }\n      else {\n        iVar10 = ssh->cscipher->blksize;\n        iVar4 = 8;\n        if (7 < iVar10) {\n          iVar4 = iVar10;\n        }\n      }\n      psVar7 = ssh->csmac;\n      if ((psVar7 == (ssh_mac *)0x0) || (ssh->csmac_etm == 0)) {\n        iVar10 = pkt->forcepad;\n        puVar14 = puVar9;\n        if ((int)(puVar9 + 4) < iVar10) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar10 = 4;\n      }\n      else {\n        iVar10 = pkt->forcepad;\n        puVar14 = puVar9 + -4;\n        if (iVar10 <= (int)(puVar9 + 4)) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar10 = iVar10 - (int)puVar9;\n      }\n      if (iVar4 == 0) {\n        trap(7);\n      }\n      if (iVar4 == 0) {\n        trap(7);\n      }\n      ppuVar13 = (uchar **)((iVar4 - (int)(puVar14 + iVar10) % iVar4) % iVar4 + iVar10);\n      if (0xff < (int)ppuVar13) {\n        iVar3 = 0x92d;\n        pcVar17 = *(code **)(in_t9 + 0x79e9c);\n        pPVar8 = (Packet *)(*(int *)(del234 + in_t9 + 4) + -0x3c40);\n        pcVar18 = ssh2_pkt_defer_noqueue;\n        ssh_00 = (Ssh_conflict)(*(int *)(del234 + in_t9 + 4) + -0x2b60);\n        (*pcVar17)();\n        uStackY_bc = **(undefined4 **)(pcVar17 + 0x7978c);\n        pPStackY_b4 = pkt;\n        ppuStackY_b0 = ppuVar11;\n        ppuStackY_ac = ppuVar13;\n        ppuStackY_a8 = unaff_s3;\n        pcStackY_a4 = pcVar18;\n        if ((((ssh_00->cscipher != (ssh2_cipher *)0x0) && ((ssh_00->cscipher->flags & 1) != 0)) &&\n            (iVar3 == 0 && ssh_00->deferred_len == 0)) && ((ssh_00->remote_bugs & 0x200U) == 0)) {\n          pPVar8 = ssh2_pkt_init(2);\n          uStackY_c0 = 0;\n                    /* WARNING: Subroutine does not return */\n          ssh_pkt_adddata(pPVar8,&uStackY_c0,4);\n        }\n        iVar3 = ssh2_pkt_construct(ssh_00,pPVar8);\n        iVar4 = ssh_00->deferred_len;\n        if (ssh_00->deferred_size < iVar4 + iVar3) {\n          n = iVar4 + iVar3 + 0x80;\n          ssh_00->deferred_size = n;\n          puVar9 = (uchar *)saferealloc(ssh_00->deferred_send_data,n,1);\n          iVar4 = ssh_00->deferred_len;\n          ssh_00->deferred_send_data = puVar9;\n        }\n        else {\n          puVar9 = ssh_00->deferred_send_data;\n        }\n        (**(code **)(pcVar17 + 0x79790))(puVar9 + iVar4,pPVar8->body,iVar3);\n        iVar4 = pPVar8->encrypted_len;\n        puVar9 = pPVar8->data;\n        ssh_00->deferred_len = ssh_00->deferred_len + iVar3;\n                    /* WARNING: Subroutine does not return */\n        ssh_00->deferred_data_size = ssh_00->deferred_data_size + iVar4;\n        safefree(puVar9);\n      }\n      unaff_s3 = (uchar **)0x0;\n      if (psVar7 != (ssh_mac *)0x0) {\n        unaff_s3 = (uchar **)psVar7->len;\n      }\n      if (pkt->maxlen < (int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3)) {\n        ssh_pkt_ensure(pkt,(int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3));\n      }\n      pkt->data[4] = (uchar)ppuVar13;\n      ppuVar12 = (uchar **)0x0;\n      if (0 < (int)ppuVar13) {\n        do {\n          uVar2 = (**(code **)(in_t9 + 0x79a48))();\n          puVar9 = pkt->data + (int)ppuVar12;\n          ppuVar12 = (uchar **)((int)ppuVar12 + 1);\n          puVar9[pkt->length] = uVar2;\n          ppuVar11 = ppuVar12;\n        } while (ppuVar13 != ppuVar12);\n      }\n      *pkt->data = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x18);\n      pkt->data[1] = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x10);\n      pkt->data[2] = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 8);\n      unaff_s5 = (int *)(((uint)ppuVar13 & 0xff) + pkt->length + -4);\n      pkt->data[3] = (uchar)unaff_s5;\n      psVar1 = ssh->cscipher;\n      if (psVar1 == (ssh2_cipher *)0x0) {\n        psVar7 = ssh->csmac;\n        puVar9 = pkt->data;\n        if (psVar7 != (ssh_mac *)0x0) {\n          iVar4 = (int)ppuVar13 + pkt->length;\n          if (ssh->csmac_etm == 0) goto LAB_00033fb4;\nLAB_00034110:\n          p_Var16 = psVar7->generate;\nLAB_00034114:\n          (*p_Var16)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          puVar9 = pkt->data;\n        }\n      }\n      else {\n        puVar9 = pkt->data;\n        if ((psVar1->flags & 2) == 0) {\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\nLAB_000340ec:\n              (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9 + 4,iVar4 + -4);\n              puVar9 = pkt->data;\n              psVar7 = ssh->csmac;\n              iVar4 = (int)ppuVar13 + pkt->length;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (*psVar1->encrypt_length)(ssh->cs_cipher_ctx,puVar9,4,ssh->v2_outgoing_sequence);\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            puVar9 = pkt->data;\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\n              psVar1 = ssh->cscipher;\n              if (psVar1 != (ssh2_cipher *)0x0) goto LAB_000340ec;\n              p_Var16 = psVar7->generate;\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (*psVar7->generate)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          }\n          psVar1 = ssh->cscipher;\n          puVar9 = pkt->data;\n          if (psVar1 == (ssh2_cipher *)0x0) goto LAB_00033ff0;\n        }\n        (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9,(int)ppuVar13 + pkt->length);\n        puVar9 = pkt->data;\n      }\nLAB_00033ff0:\n      iVar10 = (int)ppuVar13 + pkt->length;\n      iVar4 = iVar10 + (int)unaff_s3;\n      ssh->v2_outgoing_sequence = ssh->v2_outgoing_sequence + 1;\n      pkt->encrypted_len = iVar10;\n      pkt->body = puVar9;\n    }\n    else {\n      pkt->data[1] = (uchar)((uint)(puVar9 + -5) >> 0x18);\n      pkt->data[2] = (uchar)((uint)(pkt->length + -5) >> 0x10);\n      pkt->data[3] = (uchar)((uint)(pkt->length + -5) >> 8);\n      pkt->data[4] = (char)pkt->length + 0xfb;\n      uVar5 = ssh->v2_outgoing_sequence;\n      iVar4 = pkt->length + -1;\n      pkt->body = pkt->data + 1;\n      ssh->v2_outgoing_sequence = uVar5 + 1;\n    }\n    if (iVar3 == *piVar15) {\n      return iVar4;\n    }\n    iVar4 = iVar3;\n    (**(code **)(in_t9 + 0x7a040))();\nLAB_00034520:\n    pkt->savedpos = iVar4;\n    ppuVar13 = unaff_s3;\nLAB_0003420c:\n    ssh_pkt_getstring(pkt,(char **)ppuVar13,unaff_s5);\n    lVar6 = pkt->savedpos;\n    unaff_s3 = &puStack_28 + (int)ppuVar11 * 3;\n    blanks[(int)ppuVar11].type = 1;\n    blanks[(int)ppuVar11].offset = lVar6;\n    ssh_pkt_getstring(pkt,(char **)ppuVar13,unaff_s5);\n    if (newpayload == (uchar *)0x0) goto LAB_00033d1c;\n    iVar10 = pkt->length;\n    blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n    ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n  } while( true );\n}" { (declaration "char *texttype;" primitive_type (pointer_declarator "*texttype" * identifier) ;) (declaration "uchar uVar2;" type_identifier identifier ;) (declaration "ssh2_cipher *psVar1;" type_identifier (pointer_declarator "*psVar1" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "Ssh_conflict ssh_00;" type_identifier identifier ;) (declaration "ssh_mac *psVar7;" type_identifier (pointer_declarator "*psVar7" * identifier) ;) (declaration "Packet *pPVar8;" type_identifier (pointer_declarator "*pPVar8" * identifier) ;) (declaration "size_t n;" primitive_type identifier ;) (declaration "uchar *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint type;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uchar **ppuVar11;" type_identifier (pointer_declarator "**ppuVar11" * (pointer_declarator "*ppuVar11" * identifier)) ;) (declaration "uchar **ppuVar12;" type_identifier (pointer_declarator "**ppuVar12" * (pointer_declarator "*ppuVar12" * identifier)) ;) (declaration "uchar **ppuVar13;" type_identifier (pointer_declarator "**ppuVar13" * (pointer_declarator "*ppuVar13" * identifier)) ;) (declaration "uchar *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "uchar **unaff_s3;" type_identifier (pointer_declarator "**unaff_s3" * (pointer_declarator "*unaff_s3" * identifier)) ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int *unaff_s5;" primitive_type (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "_func_void_void_ptr_uchar_ptr_int_ulong *p_Var16;" type_identifier (pointer_declarator "*p_Var16" * identifier) ;) (declaration "code *pcVar17;" type_identifier (pointer_declarator "*pcVar17" * identifier) ;) (declaration "code *pcVar18;" type_identifier (pointer_declarator "*pcVar18" * identifier) ;) (declaration "undefined4 uStackY_c0;" type_identifier identifier ;) (declaration "undefined4 uStackY_bc;" type_identifier identifier ;) (declaration "Packet *pPStackY_b4;" type_identifier (pointer_declarator "*pPStackY_b4" * identifier) ;) (declaration "uchar **ppuStackY_b0;" type_identifier (pointer_declarator "**ppuStackY_b0" * (pointer_declarator "*ppuStackY_b0" * identifier)) ;) (declaration "uchar **ppuStackY_ac;" type_identifier (pointer_declarator "**ppuStackY_ac" * (pointer_declarator "*ppuStackY_ac" * identifier)) ;) (declaration "uchar **ppuStackY_a8;" type_identifier (pointer_declarator "**ppuStackY_a8" * (pointer_declarator "*ppuStackY_a8" * identifier)) ;) (declaration "code *pcStackY_a4;" type_identifier (pointer_declarator "*pcStackY_a4" * identifier) ;) (declaration "uchar *newpayload;" type_identifier (pointer_declarator "*newpayload" * identifier) ;) (declaration "int newlen;" primitive_type identifier ;) (declaration "logblank_t blanks [4];" type_identifier (array_declarator "blanks [4]" identifier [ number_literal ]) ;) (declaration "uchar *puStack_28;" type_identifier (pointer_declarator "*puStack_28" * identifier) ;) (expression_statement "puVar9 = (uchar *)pkt->length;" (assignment_expression "puVar9 = (uchar *)pkt->length" identifier = (cast_expression "(uchar *)pkt->length" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pkt->length" identifier -> field_identifier))) ;) (expression_statement "piVar15 = *(int **)(in_t9 + 0x7a070);" (assignment_expression "piVar15 = *(int **)(in_t9 + 0x7a070)" identifier = (pointer_expression "*(int **)(in_t9 + 0x7a070)" * (cast_expression "(int **)(in_t9 + 0x7a070)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x7a070)" ( (binary_expression "in_t9 + 0x7a070" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *piVar15;" (assignment_expression "iVar3 = *piVar15" identifier = (pointer_expression "*piVar15" * identifier)) ;) (if_statement "if (ssh->logctx == (void *)0x0) goto LAB_00033da4;" if (parenthesized_expression "(ssh->logctx == (void *)0x0)" ( (binary_expression "ssh->logctx == (void *)0x0" (field_expression "ssh->logctx" identifier -> field_identifier) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00033da4;" goto statement_identifier ;)) (expression_statement "ppuVar11 = (uchar **)ssh->logomitdata;" (assignment_expression "ppuVar11 = (uchar **)ssh->logomitdata" identifier = (cast_expression "(uchar **)ssh->logomitdata" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (field_expression "ssh->logomitdata" identifier -> field_identifier))) ;) (expression_statement "iVar4 = pkt->type;" (assignment_expression "iVar4 = pkt->type" identifier = (field_expression "pkt->type" identifier -> field_identifier)) ;) (expression_statement "pkt->savedpos = 0;" (assignment_expression "pkt->savedpos = 0" (field_expression "pkt->savedpos" identifier -> field_identifier) = number_literal) ;) (expression_statement "pkt->length = (int)puVar9 - ((int)pkt->body - (int)pkt->data);" (assignment_expression "pkt->length = (int)puVar9 - ((int)pkt->body - (int)pkt->data)" (field_expression "pkt->length" identifier -> field_identifier) = (binary_expression "(int)puVar9 - ((int)pkt->body - (int)pkt->data)" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (parenthesized_expression "((int)pkt->body - (int)pkt->data)" ( (binary_expression "(int)pkt->body - (int)pkt->data" (cast_expression "(int)pkt->body" ( (type_descriptor "int" primitive_type) ) (field_expression "pkt->body" identifier -> field_identifier)) - (cast_expression "(int)pkt->data" ( (type_descriptor "int" primitive_type) ) (field_expression "pkt->data" identifier -> field_identifier))) )))) ;) (if_statement "if ((ppuVar11 != (uchar **)0x0) && (ppuVar11 = (uchar **)0x0, iVar4 - 0x5eU < 2)) {\n    pPVar8 = pkt;\n    ssh_pkt_getuint32(pkt);\n    if (pkt->type == 0x5f) {\n      ssh_pkt_getuint32(pPVar8);\n    }\n    blanks[0].type = 2;\n    blanks[0].offset = pkt->savedpos + 4;\n    ssh_pkt_getstring(pkt,(char **)&newpayload,&newlen);\n    if (newpayload == (uchar *)0x0) {\n      iVar4 = pkt->type;\n      ppuVar11 = (uchar **)0x0;\n    }\n    else {\n      ppuVar11 = (uchar **)0x1;\n      iVar4 = pkt->type;\n    }\n  }" if (parenthesized_expression "((ppuVar11 != (uchar **)0x0) && (ppuVar11 = (uchar **)0x0, iVar4 - 0x5eU < 2))" ( (binary_expression "(ppuVar11 != (uchar **)0x0) && (ppuVar11 = (uchar **)0x0, iVar4 - 0x5eU < 2)" (parenthesized_expression "(ppuVar11 != (uchar **)0x0)" ( (binary_expression "ppuVar11 != (uchar **)0x0" identifier != (cast_expression "(uchar **)0x0" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) && (parenthesized_expression "(ppuVar11 = (uchar **)0x0, iVar4 - 0x5eU < 2)" ( (comma_expression "ppuVar11 = (uchar **)0x0, iVar4 - 0x5eU < 2" (assignment_expression "ppuVar11 = (uchar **)0x0" identifier = (cast_expression "(uchar **)0x0" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) , (binary_expression "iVar4 - 0x5eU < 2" (binary_expression "iVar4 - 0x5eU" identifier - number_literal) < number_literal)) ))) )) (compound_statement "{\n    pPVar8 = pkt;\n    ssh_pkt_getuint32(pkt);\n    if (pkt->type == 0x5f) {\n      ssh_pkt_getuint32(pPVar8);\n    }\n    blanks[0].type = 2;\n    blanks[0].offset = pkt->savedpos + 4;\n    ssh_pkt_getstring(pkt,(char **)&newpayload,&newlen);\n    if (newpayload == (uchar *)0x0) {\n      iVar4 = pkt->type;\n      ppuVar11 = (uchar **)0x0;\n    }\n    else {\n      ppuVar11 = (uchar **)0x1;\n      iVar4 = pkt->type;\n    }\n  }" { (expression_statement "pPVar8 = pkt;" (assignment_expression "pPVar8 = pkt" identifier = identifier) ;) (expression_statement "ssh_pkt_getuint32(pkt);" (call_expression "ssh_pkt_getuint32(pkt)" identifier (argument_list "(pkt)" ( identifier ))) ;) (if_statement "if (pkt->type == 0x5f) {\n      ssh_pkt_getuint32(pPVar8);\n    }" if (parenthesized_expression "(pkt->type == 0x5f)" ( (binary_expression "pkt->type == 0x5f" (field_expression "pkt->type" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      ssh_pkt_getuint32(pPVar8);\n    }" { (expression_statement "ssh_pkt_getuint32(pPVar8);" (call_expression "ssh_pkt_getuint32(pPVar8)" identifier (argument_list "(pPVar8)" ( identifier ))) ;) })) (expression_statement "blanks[0].type = 2;" (assignment_expression "blanks[0].type = 2" (field_expression "blanks[0].type" (subscript_expression "blanks[0]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "blanks[0].offset = pkt->savedpos + 4;" (assignment_expression "blanks[0].offset = pkt->savedpos + 4" (field_expression "blanks[0].offset" (subscript_expression "blanks[0]" identifier [ number_literal ]) . field_identifier) = (binary_expression "pkt->savedpos + 4" (field_expression "pkt->savedpos" identifier -> field_identifier) + number_literal)) ;) (expression_statement "ssh_pkt_getstring(pkt,(char **)&newpayload,&newlen);" (call_expression "ssh_pkt_getstring(pkt,(char **)&newpayload,&newlen)" identifier (argument_list "(pkt,(char **)&newpayload,&newlen)" ( identifier , (cast_expression "(char **)&newpayload" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&newpayload" & identifier)) , (pointer_expression "&newlen" & identifier) ))) ;) (if_statement "if (newpayload == (uchar *)0x0) {\n      iVar4 = pkt->type;\n      ppuVar11 = (uchar **)0x0;\n    }\n    else {\n      ppuVar11 = (uchar **)0x1;\n      iVar4 = pkt->type;\n    }" if (parenthesized_expression "(newpayload == (uchar *)0x0)" ( (binary_expression "newpayload == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar4 = pkt->type;\n      ppuVar11 = (uchar **)0x0;\n    }" { (expression_statement "iVar4 = pkt->type;" (assignment_expression "iVar4 = pkt->type" identifier = (field_expression "pkt->type" identifier -> field_identifier)) ;) (expression_statement "ppuVar11 = (uchar **)0x0;" (assignment_expression "ppuVar11 = (uchar **)0x0" identifier = (cast_expression "(uchar **)0x0" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) }) (else_clause "else {\n      ppuVar11 = (uchar **)0x1;\n      iVar4 = pkt->type;\n    }" else (compound_statement "{\n      ppuVar11 = (uchar **)0x1;\n      iVar4 = pkt->type;\n    }" { (expression_statement "ppuVar11 = (uchar **)0x1;" (assignment_expression "ppuVar11 = (uchar **)0x1" identifier = (cast_expression "(uchar **)0x1" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "iVar4 = pkt->type;" (assignment_expression "iVar4 = pkt->type" identifier = (field_expression "pkt->type" identifier -> field_identifier)) ;) }))) })) (if_statement "if (iVar4 == 0x32) {\n    iVar4 = conf_get_int(ssh->conf,0x7b);\n    if (iVar4 != 0) {\n      unaff_s5 = &newlen;\n      unaff_s3 = &newpayload;\n      pkt->savedpos = 0;\n      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n      if (newlen == 8) {\n        iVar4 = (**(code **)(in_t9 + 0x7a054))(newpayload,*(int *)(del234 + in_t9 + 4) + -0x1d5c,8);\n        iVar10 = pkt->length;\n        ppuVar13 = ppuVar11;\n        if (iVar4 != 0) goto LAB_00033d20;\n        iVar4 = pkt->savedpos;\n        if (0 < iVar10 - iVar4) {\n          iVar4 = iVar4 + 1;\n          pkt->savedpos = iVar4;\n        }\n        blanks[(int)ppuVar11].offset = iVar4;\n        blanks[(int)ppuVar11].type = 1;\n        ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n        if (newpayload != (uchar *)0x0) {\n          ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n          ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n          unaff_s3 = ppuVar13;\n          if (newpayload == (uchar *)0x0) {\n            iVar10 = pkt->length;\n            goto LAB_00033d20;\n          }\n          iVar10 = pkt->length;\n          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar13].offset;\n          goto LAB_00033d20;\n        }\n      }\n      goto LAB_00033d1c;\n    }\n    iVar4 = pkt->type;\n  }" if (parenthesized_expression "(iVar4 == 0x32)" ( (binary_expression "iVar4 == 0x32" identifier == number_literal) )) (compound_statement "{\n    iVar4 = conf_get_int(ssh->conf,0x7b);\n    if (iVar4 != 0) {\n      unaff_s5 = &newlen;\n      unaff_s3 = &newpayload;\n      pkt->savedpos = 0;\n      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n      if (newlen == 8) {\n        iVar4 = (**(code **)(in_t9 + 0x7a054))(newpayload,*(int *)(del234 + in_t9 + 4) + -0x1d5c,8);\n        iVar10 = pkt->length;\n        ppuVar13 = ppuVar11;\n        if (iVar4 != 0) goto LAB_00033d20;\n        iVar4 = pkt->savedpos;\n        if (0 < iVar10 - iVar4) {\n          iVar4 = iVar4 + 1;\n          pkt->savedpos = iVar4;\n        }\n        blanks[(int)ppuVar11].offset = iVar4;\n        blanks[(int)ppuVar11].type = 1;\n        ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n        if (newpayload != (uchar *)0x0) {\n          ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n          ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n          unaff_s3 = ppuVar13;\n          if (newpayload == (uchar *)0x0) {\n            iVar10 = pkt->length;\n            goto LAB_00033d20;\n          }\n          iVar10 = pkt->length;\n          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar13].offset;\n          goto LAB_00033d20;\n        }\n      }\n      goto LAB_00033d1c;\n    }\n    iVar4 = pkt->type;\n  }" { (expression_statement "iVar4 = conf_get_int(ssh->conf,0x7b);" (assignment_expression "iVar4 = conf_get_int(ssh->conf,0x7b)" identifier = (call_expression "conf_get_int(ssh->conf,0x7b)" identifier (argument_list "(ssh->conf,0x7b)" ( (field_expression "ssh->conf" identifier -> field_identifier) , number_literal )))) ;) (if_statement "if (iVar4 != 0) {\n      unaff_s5 = &newlen;\n      unaff_s3 = &newpayload;\n      pkt->savedpos = 0;\n      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n      if (newlen == 8) {\n        iVar4 = (**(code **)(in_t9 + 0x7a054))(newpayload,*(int *)(del234 + in_t9 + 4) + -0x1d5c,8);\n        iVar10 = pkt->length;\n        ppuVar13 = ppuVar11;\n        if (iVar4 != 0) goto LAB_00033d20;\n        iVar4 = pkt->savedpos;\n        if (0 < iVar10 - iVar4) {\n          iVar4 = iVar4 + 1;\n          pkt->savedpos = iVar4;\n        }\n        blanks[(int)ppuVar11].offset = iVar4;\n        blanks[(int)ppuVar11].type = 1;\n        ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n        if (newpayload != (uchar *)0x0) {\n          ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n          ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n          unaff_s3 = ppuVar13;\n          if (newpayload == (uchar *)0x0) {\n            iVar10 = pkt->length;\n            goto LAB_00033d20;\n          }\n          iVar10 = pkt->length;\n          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar13].offset;\n          goto LAB_00033d20;\n        }\n      }\n      goto LAB_00033d1c;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      unaff_s5 = &newlen;\n      unaff_s3 = &newpayload;\n      pkt->savedpos = 0;\n      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n      ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n      if (newlen == 8) {\n        iVar4 = (**(code **)(in_t9 + 0x7a054))(newpayload,*(int *)(del234 + in_t9 + 4) + -0x1d5c,8);\n        iVar10 = pkt->length;\n        ppuVar13 = ppuVar11;\n        if (iVar4 != 0) goto LAB_00033d20;\n        iVar4 = pkt->savedpos;\n        if (0 < iVar10 - iVar4) {\n          iVar4 = iVar4 + 1;\n          pkt->savedpos = iVar4;\n        }\n        blanks[(int)ppuVar11].offset = iVar4;\n        blanks[(int)ppuVar11].type = 1;\n        ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n        if (newpayload != (uchar *)0x0) {\n          ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n          ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n          unaff_s3 = ppuVar13;\n          if (newpayload == (uchar *)0x0) {\n            iVar10 = pkt->length;\n            goto LAB_00033d20;\n          }\n          iVar10 = pkt->length;\n          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar13].offset;\n          goto LAB_00033d20;\n        }\n      }\n      goto LAB_00033d1c;\n    }" { (expression_statement "unaff_s5 = &newlen;" (assignment_expression "unaff_s5 = &newlen" identifier = (pointer_expression "&newlen" & identifier)) ;) (expression_statement "unaff_s3 = &newpayload;" (assignment_expression "unaff_s3 = &newpayload" identifier = (pointer_expression "&newpayload" & identifier)) ;) (expression_statement "pkt->savedpos = 0;" (assignment_expression "pkt->savedpos = 0" (field_expression "pkt->savedpos" identifier -> field_identifier) = number_literal) ;) (expression_statement "ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);" (call_expression "ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5)" identifier (argument_list "(pkt,(char **)unaff_s3,unaff_s5)" ( identifier , (cast_expression "(char **)unaff_s3" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) , identifier ))) ;) (expression_statement "ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);" (call_expression "ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5)" identifier (argument_list "(pkt,(char **)unaff_s3,unaff_s5)" ( identifier , (cast_expression "(char **)unaff_s3" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) , identifier ))) ;) (expression_statement "ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);" (call_expression "ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5)" identifier (argument_list "(pkt,(char **)unaff_s3,unaff_s5)" ( identifier , (cast_expression "(char **)unaff_s3" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) , identifier ))) ;) (if_statement "if (newlen == 8) {\n        iVar4 = (**(code **)(in_t9 + 0x7a054))(newpayload,*(int *)(del234 + in_t9 + 4) + -0x1d5c,8);\n        iVar10 = pkt->length;\n        ppuVar13 = ppuVar11;\n        if (iVar4 != 0) goto LAB_00033d20;\n        iVar4 = pkt->savedpos;\n        if (0 < iVar10 - iVar4) {\n          iVar4 = iVar4 + 1;\n          pkt->savedpos = iVar4;\n        }\n        blanks[(int)ppuVar11].offset = iVar4;\n        blanks[(int)ppuVar11].type = 1;\n        ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n        if (newpayload != (uchar *)0x0) {\n          ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n          ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n          unaff_s3 = ppuVar13;\n          if (newpayload == (uchar *)0x0) {\n            iVar10 = pkt->length;\n            goto LAB_00033d20;\n          }\n          iVar10 = pkt->length;\n          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar13].offset;\n          goto LAB_00033d20;\n        }\n      }" if (parenthesized_expression "(newlen == 8)" ( (binary_expression "newlen == 8" identifier == number_literal) )) (compound_statement "{\n        iVar4 = (**(code **)(in_t9 + 0x7a054))(newpayload,*(int *)(del234 + in_t9 + 4) + -0x1d5c,8);\n        iVar10 = pkt->length;\n        ppuVar13 = ppuVar11;\n        if (iVar4 != 0) goto LAB_00033d20;\n        iVar4 = pkt->savedpos;\n        if (0 < iVar10 - iVar4) {\n          iVar4 = iVar4 + 1;\n          pkt->savedpos = iVar4;\n        }\n        blanks[(int)ppuVar11].offset = iVar4;\n        blanks[(int)ppuVar11].type = 1;\n        ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n        if (newpayload != (uchar *)0x0) {\n          ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n          ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n          unaff_s3 = ppuVar13;\n          if (newpayload == (uchar *)0x0) {\n            iVar10 = pkt->length;\n            goto LAB_00033d20;\n          }\n          iVar10 = pkt->length;\n          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar13].offset;\n          goto LAB_00033d20;\n        }\n      }" { (expression_statement "iVar4 = (**(code **)(in_t9 + 0x7a054))(newpayload,*(int *)(del234 + in_t9 + 4) + -0x1d5c,8);" (assignment_expression "iVar4 = (**(code **)(in_t9 + 0x7a054))(newpayload,*(int *)(del234 + in_t9 + 4) + -0x1d5c,8)" identifier = (call_expression "(**(code **)(in_t9 + 0x7a054))(newpayload,*(int *)(del234 + in_t9 + 4) + -0x1d5c,8)" (parenthesized_expression "(**(code **)(in_t9 + 0x7a054))" ( (pointer_expression "**(code **)(in_t9 + 0x7a054)" * (pointer_expression "*(code **)(in_t9 + 0x7a054)" * (cast_expression "(code **)(in_t9 + 0x7a054)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x7a054)" ( (binary_expression "in_t9 + 0x7a054" identifier + number_literal) ))))) )) (argument_list "(newpayload,*(int *)(del234 + in_t9 + 4) + -0x1d5c,8)" ( identifier , (binary_expression "*(int *)(del234 + in_t9 + 4) + -0x1d5c" (pointer_expression "*(int *)(del234 + in_t9 + 4)" * (cast_expression "(int *)(del234 + in_t9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(del234 + in_t9 + 4)" ( (binary_expression "del234 + in_t9 + 4" (binary_expression "del234 + in_t9" identifier + identifier) + number_literal) )))) + number_literal) , number_literal )))) ;) (expression_statement "iVar10 = pkt->length;" (assignment_expression "iVar10 = pkt->length" identifier = (field_expression "pkt->length" identifier -> field_identifier)) ;) (expression_statement "ppuVar13 = ppuVar11;" (assignment_expression "ppuVar13 = ppuVar11" identifier = identifier) ;) (if_statement "if (iVar4 != 0) goto LAB_00033d20;" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00033d20;" goto statement_identifier ;)) (expression_statement "iVar4 = pkt->savedpos;" (assignment_expression "iVar4 = pkt->savedpos" identifier = (field_expression "pkt->savedpos" identifier -> field_identifier)) ;) (if_statement "if (0 < iVar10 - iVar4) {\n          iVar4 = iVar4 + 1;\n          pkt->savedpos = iVar4;\n        }" if (parenthesized_expression "(0 < iVar10 - iVar4)" ( (binary_expression "0 < iVar10 - iVar4" number_literal < (binary_expression "iVar10 - iVar4" identifier - identifier)) )) (compound_statement "{\n          iVar4 = iVar4 + 1;\n          pkt->savedpos = iVar4;\n        }" { (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "pkt->savedpos = iVar4;" (assignment_expression "pkt->savedpos = iVar4" (field_expression "pkt->savedpos" identifier -> field_identifier) = identifier) ;) })) (expression_statement "blanks[(int)ppuVar11].offset = iVar4;" (assignment_expression "blanks[(int)ppuVar11].offset = iVar4" (field_expression "blanks[(int)ppuVar11].offset" (subscript_expression "blanks[(int)ppuVar11]" identifier [ (cast_expression "(int)ppuVar11" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier) = identifier) ;) (expression_statement "blanks[(int)ppuVar11].type = 1;" (assignment_expression "blanks[(int)ppuVar11].type = 1" (field_expression "blanks[(int)ppuVar11].type" (subscript_expression "blanks[(int)ppuVar11]" identifier [ (cast_expression "(int)ppuVar11" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier) = number_literal) ;) (expression_statement "ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);" (call_expression "ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5)" identifier (argument_list "(pkt,(char **)unaff_s3,unaff_s5)" ( identifier , (cast_expression "(char **)unaff_s3" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) , identifier ))) ;) (if_statement "if (newpayload != (uchar *)0x0) {\n          ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n          ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n          unaff_s3 = ppuVar13;\n          if (newpayload == (uchar *)0x0) {\n            iVar10 = pkt->length;\n            goto LAB_00033d20;\n          }\n          iVar10 = pkt->length;\n          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar13].offset;\n          goto LAB_00033d20;\n        }" if (parenthesized_expression "(newpayload != (uchar *)0x0)" ( (binary_expression "newpayload != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n          ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);\n          unaff_s3 = ppuVar13;\n          if (newpayload == (uchar *)0x0) {\n            iVar10 = pkt->length;\n            goto LAB_00033d20;\n          }\n          iVar10 = pkt->length;\n          blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar13].offset;\n          goto LAB_00033d20;\n        }" { (expression_statement "ppuVar13 = (uchar **)((int)ppuVar11 + 1);" (assignment_expression "ppuVar13 = (uchar **)((int)ppuVar11 + 1)" identifier = (cast_expression "(uchar **)((int)ppuVar11 + 1)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar11 + 1)" ( (binary_expression "(int)ppuVar11 + 1" (cast_expression "(int)ppuVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;" (assignment_expression "blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset" (field_expression "blanks[(int)ppuVar11].len" (subscript_expression "blanks[(int)ppuVar11]" identifier [ (cast_expression "(int)ppuVar11" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier) = (binary_expression "pkt->savedpos - blanks[(int)ppuVar11].offset" (field_expression "pkt->savedpos" identifier -> field_identifier) - (field_expression "blanks[(int)ppuVar11].offset" (subscript_expression "blanks[(int)ppuVar11]" identifier [ (cast_expression "(int)ppuVar11" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier))) ;) (expression_statement "ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5);" (call_expression "ssh_pkt_getstring(pkt,(char **)unaff_s3,unaff_s5)" identifier (argument_list "(pkt,(char **)unaff_s3,unaff_s5)" ( identifier , (cast_expression "(char **)unaff_s3" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) , identifier ))) ;) (expression_statement "unaff_s3 = ppuVar13;" (assignment_expression "unaff_s3 = ppuVar13" identifier = identifier) ;) (if_statement "if (newpayload == (uchar *)0x0) {\n            iVar10 = pkt->length;\n            goto LAB_00033d20;\n          }" if (parenthesized_expression "(newpayload == (uchar *)0x0)" ( (binary_expression "newpayload == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar10 = pkt->length;\n            goto LAB_00033d20;\n          }" { (expression_statement "iVar10 = pkt->length;" (assignment_expression "iVar10 = pkt->length" identifier = (field_expression "pkt->length" identifier -> field_identifier)) ;) (goto_statement "goto LAB_00033d20;" goto statement_identifier ;) })) (expression_statement "iVar10 = pkt->length;" (assignment_expression "iVar10 = pkt->length" identifier = (field_expression "pkt->length" identifier -> field_identifier)) ;) (expression_statement "blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar13].offset;" (assignment_expression "blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar13].offset" (field_expression "blanks[(int)ppuVar11].len" (subscript_expression "blanks[(int)ppuVar11]" identifier [ (cast_expression "(int)ppuVar11" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier) = (binary_expression "pkt->savedpos - blanks[(int)ppuVar13].offset" (field_expression "pkt->savedpos" identifier -> field_identifier) - (field_expression "blanks[(int)ppuVar13].offset" (subscript_expression "blanks[(int)ppuVar13]" identifier [ (cast_expression "(int)ppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier))) ;) (goto_statement "goto LAB_00033d20;" goto statement_identifier ;) })) })) (goto_statement "goto LAB_00033d1c;" goto statement_identifier ;) })) (expression_statement "iVar4 = pkt->type;" (assignment_expression "iVar4 = pkt->type" identifier = (field_expression "pkt->type" identifier -> field_identifier)) ;) })) (if_statement "if ((ssh->pkt_actx == SSH2_PKTCTX_KBDINTER) && (iVar4 == 0x3d)) {\n    iVar4 = conf_get_int(ssh->conf,0x7b);\n    if (iVar4 != 0) {\n      pkt->savedpos = 0;\n      unaff_s5 = &newlen;\n      ssh_pkt_getuint32(pkt);\n      blanks[(int)ppuVar11].offset = pkt->savedpos;\n      blanks[(int)ppuVar11].type = 1;\n      do {\n        ssh_pkt_getstring(pkt,(char **)&newpayload,unaff_s5);\n      } while (newpayload != (uchar *)0x0);\n      iVar10 = pkt->length;\n      blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n      ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n      unaff_s3 = &newpayload;\n      goto LAB_00033d20;\n    }\n    iVar4 = pkt->type;\n  }" if (parenthesized_expression "((ssh->pkt_actx == SSH2_PKTCTX_KBDINTER) && (iVar4 == 0x3d))" ( (binary_expression "(ssh->pkt_actx == SSH2_PKTCTX_KBDINTER) && (iVar4 == 0x3d)" (parenthesized_expression "(ssh->pkt_actx == SSH2_PKTCTX_KBDINTER)" ( (binary_expression "ssh->pkt_actx == SSH2_PKTCTX_KBDINTER" (field_expression "ssh->pkt_actx" identifier -> field_identifier) == identifier) )) && (parenthesized_expression "(iVar4 == 0x3d)" ( (binary_expression "iVar4 == 0x3d" identifier == number_literal) ))) )) (compound_statement "{\n    iVar4 = conf_get_int(ssh->conf,0x7b);\n    if (iVar4 != 0) {\n      pkt->savedpos = 0;\n      unaff_s5 = &newlen;\n      ssh_pkt_getuint32(pkt);\n      blanks[(int)ppuVar11].offset = pkt->savedpos;\n      blanks[(int)ppuVar11].type = 1;\n      do {\n        ssh_pkt_getstring(pkt,(char **)&newpayload,unaff_s5);\n      } while (newpayload != (uchar *)0x0);\n      iVar10 = pkt->length;\n      blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n      ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n      unaff_s3 = &newpayload;\n      goto LAB_00033d20;\n    }\n    iVar4 = pkt->type;\n  }" { (expression_statement "iVar4 = conf_get_int(ssh->conf,0x7b);" (assignment_expression "iVar4 = conf_get_int(ssh->conf,0x7b)" identifier = (call_expression "conf_get_int(ssh->conf,0x7b)" identifier (argument_list "(ssh->conf,0x7b)" ( (field_expression "ssh->conf" identifier -> field_identifier) , number_literal )))) ;) (if_statement "if (iVar4 != 0) {\n      pkt->savedpos = 0;\n      unaff_s5 = &newlen;\n      ssh_pkt_getuint32(pkt);\n      blanks[(int)ppuVar11].offset = pkt->savedpos;\n      blanks[(int)ppuVar11].type = 1;\n      do {\n        ssh_pkt_getstring(pkt,(char **)&newpayload,unaff_s5);\n      } while (newpayload != (uchar *)0x0);\n      iVar10 = pkt->length;\n      blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n      ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n      unaff_s3 = &newpayload;\n      goto LAB_00033d20;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      pkt->savedpos = 0;\n      unaff_s5 = &newlen;\n      ssh_pkt_getuint32(pkt);\n      blanks[(int)ppuVar11].offset = pkt->savedpos;\n      blanks[(int)ppuVar11].type = 1;\n      do {\n        ssh_pkt_getstring(pkt,(char **)&newpayload,unaff_s5);\n      } while (newpayload != (uchar *)0x0);\n      iVar10 = pkt->length;\n      blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n      ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n      unaff_s3 = &newpayload;\n      goto LAB_00033d20;\n    }" { (expression_statement "pkt->savedpos = 0;" (assignment_expression "pkt->savedpos = 0" (field_expression "pkt->savedpos" identifier -> field_identifier) = number_literal) ;) (expression_statement "unaff_s5 = &newlen;" (assignment_expression "unaff_s5 = &newlen" identifier = (pointer_expression "&newlen" & identifier)) ;) (expression_statement "ssh_pkt_getuint32(pkt);" (call_expression "ssh_pkt_getuint32(pkt)" identifier (argument_list "(pkt)" ( identifier ))) ;) (expression_statement "blanks[(int)ppuVar11].offset = pkt->savedpos;" (assignment_expression "blanks[(int)ppuVar11].offset = pkt->savedpos" (field_expression "blanks[(int)ppuVar11].offset" (subscript_expression "blanks[(int)ppuVar11]" identifier [ (cast_expression "(int)ppuVar11" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier) = (field_expression "pkt->savedpos" identifier -> field_identifier)) ;) (expression_statement "blanks[(int)ppuVar11].type = 1;" (assignment_expression "blanks[(int)ppuVar11].type = 1" (field_expression "blanks[(int)ppuVar11].type" (subscript_expression "blanks[(int)ppuVar11]" identifier [ (cast_expression "(int)ppuVar11" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier) = number_literal) ;) (do_statement "do {\n        ssh_pkt_getstring(pkt,(char **)&newpayload,unaff_s5);\n      } while (newpayload != (uchar *)0x0);" do (compound_statement "{\n        ssh_pkt_getstring(pkt,(char **)&newpayload,unaff_s5);\n      }" { (expression_statement "ssh_pkt_getstring(pkt,(char **)&newpayload,unaff_s5);" (call_expression "ssh_pkt_getstring(pkt,(char **)&newpayload,unaff_s5)" identifier (argument_list "(pkt,(char **)&newpayload,unaff_s5)" ( identifier , (cast_expression "(char **)&newpayload" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&newpayload" & identifier)) , identifier ))) ;) }) while (parenthesized_expression "(newpayload != (uchar *)0x0)" ( (binary_expression "newpayload != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "iVar10 = pkt->length;" (assignment_expression "iVar10 = pkt->length" identifier = (field_expression "pkt->length" identifier -> field_identifier)) ;) (expression_statement "blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;" (assignment_expression "blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset" (field_expression "blanks[(int)ppuVar11].len" (subscript_expression "blanks[(int)ppuVar11]" identifier [ (cast_expression "(int)ppuVar11" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier) = (binary_expression "pkt->savedpos - blanks[(int)ppuVar11].offset" (field_expression "pkt->savedpos" identifier -> field_identifier) - (field_expression "blanks[(int)ppuVar11].offset" (subscript_expression "blanks[(int)ppuVar11]" identifier [ (cast_expression "(int)ppuVar11" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier))) ;) (expression_statement "ppuVar13 = (uchar **)((int)ppuVar11 + 1);" (assignment_expression "ppuVar13 = (uchar **)((int)ppuVar11 + 1)" identifier = (cast_expression "(uchar **)((int)ppuVar11 + 1)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar11 + 1)" ( (binary_expression "(int)ppuVar11 + 1" (cast_expression "(int)ppuVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "unaff_s3 = &newpayload;" (assignment_expression "unaff_s3 = &newpayload" identifier = (pointer_expression "&newpayload" & identifier)) ;) (goto_statement "goto LAB_00033d20;" goto statement_identifier ;) })) (expression_statement "iVar4 = pkt->type;" (assignment_expression "iVar4 = pkt->type" identifier = (field_expression "pkt->type" identifier -> field_identifier)) ;) })) (if_statement "if ((iVar4 == 0x62) && (iVar4 = conf_get_int(ssh->conf,0x7b), iVar4 != 0)) {\n    pkt->savedpos = 0;\n    unaff_s5 = &newlen;\n    unaff_s3 = &newpayload;\n    pPVar8 = pkt;\n    ssh_pkt_getuint32(pkt);\n    ssh_pkt_getstring(pPVar8,(char **)unaff_s3,unaff_s5);\n    if (newlen == 7) {\n      iVar10 = pkt->savedpos;\n      iVar4 = iVar10 + 1;\n      ppuVar13 = unaff_s3;\n      if (pkt->length - iVar10 < 1) goto LAB_0003420c;\n      if (pkt->length - iVar4 < 1) goto LAB_00034520;\n      pkt->savedpos = iVar10 + 2;\n      goto LAB_0003420c;\n    }\n  }" if (parenthesized_expression "((iVar4 == 0x62) && (iVar4 = conf_get_int(ssh->conf,0x7b), iVar4 != 0))" ( (binary_expression "(iVar4 == 0x62) && (iVar4 = conf_get_int(ssh->conf,0x7b), iVar4 != 0)" (parenthesized_expression "(iVar4 == 0x62)" ( (binary_expression "iVar4 == 0x62" identifier == number_literal) )) && (parenthesized_expression "(iVar4 = conf_get_int(ssh->conf,0x7b), iVar4 != 0)" ( (comma_expression "iVar4 = conf_get_int(ssh->conf,0x7b), iVar4 != 0" (assignment_expression "iVar4 = conf_get_int(ssh->conf,0x7b)" identifier = (call_expression "conf_get_int(ssh->conf,0x7b)" identifier (argument_list "(ssh->conf,0x7b)" ( (field_expression "ssh->conf" identifier -> field_identifier) , number_literal )))) , (binary_expression "iVar4 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    pkt->savedpos = 0;\n    unaff_s5 = &newlen;\n    unaff_s3 = &newpayload;\n    pPVar8 = pkt;\n    ssh_pkt_getuint32(pkt);\n    ssh_pkt_getstring(pPVar8,(char **)unaff_s3,unaff_s5);\n    if (newlen == 7) {\n      iVar10 = pkt->savedpos;\n      iVar4 = iVar10 + 1;\n      ppuVar13 = unaff_s3;\n      if (pkt->length - iVar10 < 1) goto LAB_0003420c;\n      if (pkt->length - iVar4 < 1) goto LAB_00034520;\n      pkt->savedpos = iVar10 + 2;\n      goto LAB_0003420c;\n    }\n  }" { (expression_statement "pkt->savedpos = 0;" (assignment_expression "pkt->savedpos = 0" (field_expression "pkt->savedpos" identifier -> field_identifier) = number_literal) ;) (expression_statement "unaff_s5 = &newlen;" (assignment_expression "unaff_s5 = &newlen" identifier = (pointer_expression "&newlen" & identifier)) ;) (expression_statement "unaff_s3 = &newpayload;" (assignment_expression "unaff_s3 = &newpayload" identifier = (pointer_expression "&newpayload" & identifier)) ;) (expression_statement "pPVar8 = pkt;" (assignment_expression "pPVar8 = pkt" identifier = identifier) ;) (expression_statement "ssh_pkt_getuint32(pkt);" (call_expression "ssh_pkt_getuint32(pkt)" identifier (argument_list "(pkt)" ( identifier ))) ;) (expression_statement "ssh_pkt_getstring(pPVar8,(char **)unaff_s3,unaff_s5);" (call_expression "ssh_pkt_getstring(pPVar8,(char **)unaff_s3,unaff_s5)" identifier (argument_list "(pPVar8,(char **)unaff_s3,unaff_s5)" ( identifier , (cast_expression "(char **)unaff_s3" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) , identifier ))) ;) (if_statement "if (newlen == 7) {\n      iVar10 = pkt->savedpos;\n      iVar4 = iVar10 + 1;\n      ppuVar13 = unaff_s3;\n      if (pkt->length - iVar10 < 1) goto LAB_0003420c;\n      if (pkt->length - iVar4 < 1) goto LAB_00034520;\n      pkt->savedpos = iVar10 + 2;\n      goto LAB_0003420c;\n    }" if (parenthesized_expression "(newlen == 7)" ( (binary_expression "newlen == 7" identifier == number_literal) )) (compound_statement "{\n      iVar10 = pkt->savedpos;\n      iVar4 = iVar10 + 1;\n      ppuVar13 = unaff_s3;\n      if (pkt->length - iVar10 < 1) goto LAB_0003420c;\n      if (pkt->length - iVar4 < 1) goto LAB_00034520;\n      pkt->savedpos = iVar10 + 2;\n      goto LAB_0003420c;\n    }" { (expression_statement "iVar10 = pkt->savedpos;" (assignment_expression "iVar10 = pkt->savedpos" identifier = (field_expression "pkt->savedpos" identifier -> field_identifier)) ;) (expression_statement "iVar4 = iVar10 + 1;" (assignment_expression "iVar4 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "ppuVar13 = unaff_s3;" (assignment_expression "ppuVar13 = unaff_s3" identifier = identifier) ;) (if_statement "if (pkt->length - iVar10 < 1) goto LAB_0003420c;" if (parenthesized_expression "(pkt->length - iVar10 < 1)" ( (binary_expression "pkt->length - iVar10 < 1" (binary_expression "pkt->length - iVar10" (field_expression "pkt->length" identifier -> field_identifier) - identifier) < number_literal) )) (goto_statement "goto LAB_0003420c;" goto statement_identifier ;)) (if_statement "if (pkt->length - iVar4 < 1) goto LAB_00034520;" if (parenthesized_expression "(pkt->length - iVar4 < 1)" ( (binary_expression "pkt->length - iVar4 < 1" (binary_expression "pkt->length - iVar4" (field_expression "pkt->length" identifier -> field_identifier) - identifier) < number_literal) )) (goto_statement "goto LAB_00034520;" goto statement_identifier ;)) (expression_statement "pkt->savedpos = iVar10 + 2;" (assignment_expression "pkt->savedpos = iVar10 + 2" (field_expression "pkt->savedpos" identifier -> field_identifier) = (binary_expression "iVar10 + 2" identifier + number_literal)) ;) (goto_statement "goto LAB_0003420c;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00033d1c:\n  iVar10 = pkt->length;" statement_identifier : (expression_statement "iVar10 = pkt->length;" (assignment_expression "iVar10 = pkt->length" identifier = (field_expression "pkt->length" identifier -> field_identifier)) ;)) (expression_statement "ppuVar13 = ppuVar11;" (assignment_expression "ppuVar13 = ppuVar11" identifier = identifier) ;) (labeled_statement "LAB_00033d20:\n  do {\n    type = (uint)pkt->data[5];\n    texttype = ssh2_pkt_type(ssh->pkt_kctx,ssh->pkt_actx,type);\n    log_packet(ssh->logctx,1,type,texttype,pkt->body,iVar10,(int)ppuVar13,blanks,\n               &ssh->v2_outgoing_sequence,pkt->downstream_id,pkt->additional_log_text);\n    puVar9 = pkt->body + (pkt->length - (int)pkt->data);\n    pkt->length = (long)puVar9;\nLAB_00033da4:\n    ppuVar11 = (uchar **)ssh->bare_connection;\n    if (ppuVar11 == (uchar **)0x0) {\n      if (ssh->cscomp != (ssh_compress *)0x0) {\n        iVar4 = (*ssh->cscomp->compress)\n                          (ssh->cs_comp_ctx,pkt->data + 5,(int)(puVar9 + -5),&newpayload,&newlen);\n        if (iVar4 != 0) {\n                    /* WARNING: Subroutine does not return */\n          pkt->length = 5;\n          ssh_pkt_adddata(pkt,newpayload,newlen);\n        }\n        puVar9 = (uchar *)pkt->length;\n      }\n      if (ssh->cscipher == (ssh2_cipher *)0x0) {\n        iVar4 = 8;\n      }\n      else {\n        iVar10 = ssh->cscipher->blksize;\n        iVar4 = 8;\n        if (7 < iVar10) {\n          iVar4 = iVar10;\n        }\n      }\n      psVar7 = ssh->csmac;\n      if ((psVar7 == (ssh_mac *)0x0) || (ssh->csmac_etm == 0)) {\n        iVar10 = pkt->forcepad;\n        puVar14 = puVar9;\n        if ((int)(puVar9 + 4) < iVar10) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar10 = 4;\n      }\n      else {\n        iVar10 = pkt->forcepad;\n        puVar14 = puVar9 + -4;\n        if (iVar10 <= (int)(puVar9 + 4)) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar10 = iVar10 - (int)puVar9;\n      }\n      if (iVar4 == 0) {\n        trap(7);\n      }\n      if (iVar4 == 0) {\n        trap(7);\n      }\n      ppuVar13 = (uchar **)((iVar4 - (int)(puVar14 + iVar10) % iVar4) % iVar4 + iVar10);\n      if (0xff < (int)ppuVar13) {\n        iVar3 = 0x92d;\n        pcVar17 = *(code **)(in_t9 + 0x79e9c);\n        pPVar8 = (Packet *)(*(int *)(del234 + in_t9 + 4) + -0x3c40);\n        pcVar18 = ssh2_pkt_defer_noqueue;\n        ssh_00 = (Ssh_conflict)(*(int *)(del234 + in_t9 + 4) + -0x2b60);\n        (*pcVar17)();\n        uStackY_bc = **(undefined4 **)(pcVar17 + 0x7978c);\n        pPStackY_b4 = pkt;\n        ppuStackY_b0 = ppuVar11;\n        ppuStackY_ac = ppuVar13;\n        ppuStackY_a8 = unaff_s3;\n        pcStackY_a4 = pcVar18;\n        if ((((ssh_00->cscipher != (ssh2_cipher *)0x0) && ((ssh_00->cscipher->flags & 1) != 0)) &&\n            (iVar3 == 0 && ssh_00->deferred_len == 0)) && ((ssh_00->remote_bugs & 0x200U) == 0)) {\n          pPVar8 = ssh2_pkt_init(2);\n          uStackY_c0 = 0;\n                    /* WARNING: Subroutine does not return */\n          ssh_pkt_adddata(pPVar8,&uStackY_c0,4);\n        }\n        iVar3 = ssh2_pkt_construct(ssh_00,pPVar8);\n        iVar4 = ssh_00->deferred_len;\n        if (ssh_00->deferred_size < iVar4 + iVar3) {\n          n = iVar4 + iVar3 + 0x80;\n          ssh_00->deferred_size = n;\n          puVar9 = (uchar *)saferealloc(ssh_00->deferred_send_data,n,1);\n          iVar4 = ssh_00->deferred_len;\n          ssh_00->deferred_send_data = puVar9;\n        }\n        else {\n          puVar9 = ssh_00->deferred_send_data;\n        }\n        (**(code **)(pcVar17 + 0x79790))(puVar9 + iVar4,pPVar8->body,iVar3);\n        iVar4 = pPVar8->encrypted_len;\n        puVar9 = pPVar8->data;\n        ssh_00->deferred_len = ssh_00->deferred_len + iVar3;\n                    /* WARNING: Subroutine does not return */\n        ssh_00->deferred_data_size = ssh_00->deferred_data_size + iVar4;\n        safefree(puVar9);\n      }\n      unaff_s3 = (uchar **)0x0;\n      if (psVar7 != (ssh_mac *)0x0) {\n        unaff_s3 = (uchar **)psVar7->len;\n      }\n      if (pkt->maxlen < (int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3)) {\n        ssh_pkt_ensure(pkt,(int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3));\n      }\n      pkt->data[4] = (uchar)ppuVar13;\n      ppuVar12 = (uchar **)0x0;\n      if (0 < (int)ppuVar13) {\n        do {\n          uVar2 = (**(code **)(in_t9 + 0x79a48))();\n          puVar9 = pkt->data + (int)ppuVar12;\n          ppuVar12 = (uchar **)((int)ppuVar12 + 1);\n          puVar9[pkt->length] = uVar2;\n          ppuVar11 = ppuVar12;\n        } while (ppuVar13 != ppuVar12);\n      }\n      *pkt->data = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x18);\n      pkt->data[1] = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x10);\n      pkt->data[2] = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 8);\n      unaff_s5 = (int *)(((uint)ppuVar13 & 0xff) + pkt->length + -4);\n      pkt->data[3] = (uchar)unaff_s5;\n      psVar1 = ssh->cscipher;\n      if (psVar1 == (ssh2_cipher *)0x0) {\n        psVar7 = ssh->csmac;\n        puVar9 = pkt->data;\n        if (psVar7 != (ssh_mac *)0x0) {\n          iVar4 = (int)ppuVar13 + pkt->length;\n          if (ssh->csmac_etm == 0) goto LAB_00033fb4;\nLAB_00034110:\n          p_Var16 = psVar7->generate;\nLAB_00034114:\n          (*p_Var16)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          puVar9 = pkt->data;\n        }\n      }\n      else {\n        puVar9 = pkt->data;\n        if ((psVar1->flags & 2) == 0) {\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\nLAB_000340ec:\n              (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9 + 4,iVar4 + -4);\n              puVar9 = pkt->data;\n              psVar7 = ssh->csmac;\n              iVar4 = (int)ppuVar13 + pkt->length;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (*psVar1->encrypt_length)(ssh->cs_cipher_ctx,puVar9,4,ssh->v2_outgoing_sequence);\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            puVar9 = pkt->data;\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\n              psVar1 = ssh->cscipher;\n              if (psVar1 != (ssh2_cipher *)0x0) goto LAB_000340ec;\n              p_Var16 = psVar7->generate;\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (*psVar7->generate)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          }\n          psVar1 = ssh->cscipher;\n          puVar9 = pkt->data;\n          if (psVar1 == (ssh2_cipher *)0x0) goto LAB_00033ff0;\n        }\n        (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9,(int)ppuVar13 + pkt->length);\n        puVar9 = pkt->data;\n      }\nLAB_00033ff0:\n      iVar10 = (int)ppuVar13 + pkt->length;\n      iVar4 = iVar10 + (int)unaff_s3;\n      ssh->v2_outgoing_sequence = ssh->v2_outgoing_sequence + 1;\n      pkt->encrypted_len = iVar10;\n      pkt->body = puVar9;\n    }\n    else {\n      pkt->data[1] = (uchar)((uint)(puVar9 + -5) >> 0x18);\n      pkt->data[2] = (uchar)((uint)(pkt->length + -5) >> 0x10);\n      pkt->data[3] = (uchar)((uint)(pkt->length + -5) >> 8);\n      pkt->data[4] = (char)pkt->length + 0xfb;\n      uVar5 = ssh->v2_outgoing_sequence;\n      iVar4 = pkt->length + -1;\n      pkt->body = pkt->data + 1;\n      ssh->v2_outgoing_sequence = uVar5 + 1;\n    }\n    if (iVar3 == *piVar15) {\n      return iVar4;\n    }\n    iVar4 = iVar3;\n    (**(code **)(in_t9 + 0x7a040))();\nLAB_00034520:\n    pkt->savedpos = iVar4;\n    ppuVar13 = unaff_s3;\nLAB_0003420c:\n    ssh_pkt_getstring(pkt,(char **)ppuVar13,unaff_s5);\n    lVar6 = pkt->savedpos;\n    unaff_s3 = &puStack_28 + (int)ppuVar11 * 3;\n    blanks[(int)ppuVar11].type = 1;\n    blanks[(int)ppuVar11].offset = lVar6;\n    ssh_pkt_getstring(pkt,(char **)ppuVar13,unaff_s5);\n    if (newpayload == (uchar *)0x0) goto LAB_00033d1c;\n    iVar10 = pkt->length;\n    blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n    ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n  } while( true );" statement_identifier : (do_statement "do {\n    type = (uint)pkt->data[5];\n    texttype = ssh2_pkt_type(ssh->pkt_kctx,ssh->pkt_actx,type);\n    log_packet(ssh->logctx,1,type,texttype,pkt->body,iVar10,(int)ppuVar13,blanks,\n               &ssh->v2_outgoing_sequence,pkt->downstream_id,pkt->additional_log_text);\n    puVar9 = pkt->body + (pkt->length - (int)pkt->data);\n    pkt->length = (long)puVar9;\nLAB_00033da4:\n    ppuVar11 = (uchar **)ssh->bare_connection;\n    if (ppuVar11 == (uchar **)0x0) {\n      if (ssh->cscomp != (ssh_compress *)0x0) {\n        iVar4 = (*ssh->cscomp->compress)\n                          (ssh->cs_comp_ctx,pkt->data + 5,(int)(puVar9 + -5),&newpayload,&newlen);\n        if (iVar4 != 0) {\n                    /* WARNING: Subroutine does not return */\n          pkt->length = 5;\n          ssh_pkt_adddata(pkt,newpayload,newlen);\n        }\n        puVar9 = (uchar *)pkt->length;\n      }\n      if (ssh->cscipher == (ssh2_cipher *)0x0) {\n        iVar4 = 8;\n      }\n      else {\n        iVar10 = ssh->cscipher->blksize;\n        iVar4 = 8;\n        if (7 < iVar10) {\n          iVar4 = iVar10;\n        }\n      }\n      psVar7 = ssh->csmac;\n      if ((psVar7 == (ssh_mac *)0x0) || (ssh->csmac_etm == 0)) {\n        iVar10 = pkt->forcepad;\n        puVar14 = puVar9;\n        if ((int)(puVar9 + 4) < iVar10) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar10 = 4;\n      }\n      else {\n        iVar10 = pkt->forcepad;\n        puVar14 = puVar9 + -4;\n        if (iVar10 <= (int)(puVar9 + 4)) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar10 = iVar10 - (int)puVar9;\n      }\n      if (iVar4 == 0) {\n        trap(7);\n      }\n      if (iVar4 == 0) {\n        trap(7);\n      }\n      ppuVar13 = (uchar **)((iVar4 - (int)(puVar14 + iVar10) % iVar4) % iVar4 + iVar10);\n      if (0xff < (int)ppuVar13) {\n        iVar3 = 0x92d;\n        pcVar17 = *(code **)(in_t9 + 0x79e9c);\n        pPVar8 = (Packet *)(*(int *)(del234 + in_t9 + 4) + -0x3c40);\n        pcVar18 = ssh2_pkt_defer_noqueue;\n        ssh_00 = (Ssh_conflict)(*(int *)(del234 + in_t9 + 4) + -0x2b60);\n        (*pcVar17)();\n        uStackY_bc = **(undefined4 **)(pcVar17 + 0x7978c);\n        pPStackY_b4 = pkt;\n        ppuStackY_b0 = ppuVar11;\n        ppuStackY_ac = ppuVar13;\n        ppuStackY_a8 = unaff_s3;\n        pcStackY_a4 = pcVar18;\n        if ((((ssh_00->cscipher != (ssh2_cipher *)0x0) && ((ssh_00->cscipher->flags & 1) != 0)) &&\n            (iVar3 == 0 && ssh_00->deferred_len == 0)) && ((ssh_00->remote_bugs & 0x200U) == 0)) {\n          pPVar8 = ssh2_pkt_init(2);\n          uStackY_c0 = 0;\n                    /* WARNING: Subroutine does not return */\n          ssh_pkt_adddata(pPVar8,&uStackY_c0,4);\n        }\n        iVar3 = ssh2_pkt_construct(ssh_00,pPVar8);\n        iVar4 = ssh_00->deferred_len;\n        if (ssh_00->deferred_size < iVar4 + iVar3) {\n          n = iVar4 + iVar3 + 0x80;\n          ssh_00->deferred_size = n;\n          puVar9 = (uchar *)saferealloc(ssh_00->deferred_send_data,n,1);\n          iVar4 = ssh_00->deferred_len;\n          ssh_00->deferred_send_data = puVar9;\n        }\n        else {\n          puVar9 = ssh_00->deferred_send_data;\n        }\n        (**(code **)(pcVar17 + 0x79790))(puVar9 + iVar4,pPVar8->body,iVar3);\n        iVar4 = pPVar8->encrypted_len;\n        puVar9 = pPVar8->data;\n        ssh_00->deferred_len = ssh_00->deferred_len + iVar3;\n                    /* WARNING: Subroutine does not return */\n        ssh_00->deferred_data_size = ssh_00->deferred_data_size + iVar4;\n        safefree(puVar9);\n      }\n      unaff_s3 = (uchar **)0x0;\n      if (psVar7 != (ssh_mac *)0x0) {\n        unaff_s3 = (uchar **)psVar7->len;\n      }\n      if (pkt->maxlen < (int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3)) {\n        ssh_pkt_ensure(pkt,(int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3));\n      }\n      pkt->data[4] = (uchar)ppuVar13;\n      ppuVar12 = (uchar **)0x0;\n      if (0 < (int)ppuVar13) {\n        do {\n          uVar2 = (**(code **)(in_t9 + 0x79a48))();\n          puVar9 = pkt->data + (int)ppuVar12;\n          ppuVar12 = (uchar **)((int)ppuVar12 + 1);\n          puVar9[pkt->length] = uVar2;\n          ppuVar11 = ppuVar12;\n        } while (ppuVar13 != ppuVar12);\n      }\n      *pkt->data = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x18);\n      pkt->data[1] = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x10);\n      pkt->data[2] = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 8);\n      unaff_s5 = (int *)(((uint)ppuVar13 & 0xff) + pkt->length + -4);\n      pkt->data[3] = (uchar)unaff_s5;\n      psVar1 = ssh->cscipher;\n      if (psVar1 == (ssh2_cipher *)0x0) {\n        psVar7 = ssh->csmac;\n        puVar9 = pkt->data;\n        if (psVar7 != (ssh_mac *)0x0) {\n          iVar4 = (int)ppuVar13 + pkt->length;\n          if (ssh->csmac_etm == 0) goto LAB_00033fb4;\nLAB_00034110:\n          p_Var16 = psVar7->generate;\nLAB_00034114:\n          (*p_Var16)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          puVar9 = pkt->data;\n        }\n      }\n      else {\n        puVar9 = pkt->data;\n        if ((psVar1->flags & 2) == 0) {\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\nLAB_000340ec:\n              (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9 + 4,iVar4 + -4);\n              puVar9 = pkt->data;\n              psVar7 = ssh->csmac;\n              iVar4 = (int)ppuVar13 + pkt->length;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (*psVar1->encrypt_length)(ssh->cs_cipher_ctx,puVar9,4,ssh->v2_outgoing_sequence);\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            puVar9 = pkt->data;\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\n              psVar1 = ssh->cscipher;\n              if (psVar1 != (ssh2_cipher *)0x0) goto LAB_000340ec;\n              p_Var16 = psVar7->generate;\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (*psVar7->generate)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          }\n          psVar1 = ssh->cscipher;\n          puVar9 = pkt->data;\n          if (psVar1 == (ssh2_cipher *)0x0) goto LAB_00033ff0;\n        }\n        (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9,(int)ppuVar13 + pkt->length);\n        puVar9 = pkt->data;\n      }\nLAB_00033ff0:\n      iVar10 = (int)ppuVar13 + pkt->length;\n      iVar4 = iVar10 + (int)unaff_s3;\n      ssh->v2_outgoing_sequence = ssh->v2_outgoing_sequence + 1;\n      pkt->encrypted_len = iVar10;\n      pkt->body = puVar9;\n    }\n    else {\n      pkt->data[1] = (uchar)((uint)(puVar9 + -5) >> 0x18);\n      pkt->data[2] = (uchar)((uint)(pkt->length + -5) >> 0x10);\n      pkt->data[3] = (uchar)((uint)(pkt->length + -5) >> 8);\n      pkt->data[4] = (char)pkt->length + 0xfb;\n      uVar5 = ssh->v2_outgoing_sequence;\n      iVar4 = pkt->length + -1;\n      pkt->body = pkt->data + 1;\n      ssh->v2_outgoing_sequence = uVar5 + 1;\n    }\n    if (iVar3 == *piVar15) {\n      return iVar4;\n    }\n    iVar4 = iVar3;\n    (**(code **)(in_t9 + 0x7a040))();\nLAB_00034520:\n    pkt->savedpos = iVar4;\n    ppuVar13 = unaff_s3;\nLAB_0003420c:\n    ssh_pkt_getstring(pkt,(char **)ppuVar13,unaff_s5);\n    lVar6 = pkt->savedpos;\n    unaff_s3 = &puStack_28 + (int)ppuVar11 * 3;\n    blanks[(int)ppuVar11].type = 1;\n    blanks[(int)ppuVar11].offset = lVar6;\n    ssh_pkt_getstring(pkt,(char **)ppuVar13,unaff_s5);\n    if (newpayload == (uchar *)0x0) goto LAB_00033d1c;\n    iVar10 = pkt->length;\n    blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n    ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n  } while( true );" do (compound_statement "{\n    type = (uint)pkt->data[5];\n    texttype = ssh2_pkt_type(ssh->pkt_kctx,ssh->pkt_actx,type);\n    log_packet(ssh->logctx,1,type,texttype,pkt->body,iVar10,(int)ppuVar13,blanks,\n               &ssh->v2_outgoing_sequence,pkt->downstream_id,pkt->additional_log_text);\n    puVar9 = pkt->body + (pkt->length - (int)pkt->data);\n    pkt->length = (long)puVar9;\nLAB_00033da4:\n    ppuVar11 = (uchar **)ssh->bare_connection;\n    if (ppuVar11 == (uchar **)0x0) {\n      if (ssh->cscomp != (ssh_compress *)0x0) {\n        iVar4 = (*ssh->cscomp->compress)\n                          (ssh->cs_comp_ctx,pkt->data + 5,(int)(puVar9 + -5),&newpayload,&newlen);\n        if (iVar4 != 0) {\n                    /* WARNING: Subroutine does not return */\n          pkt->length = 5;\n          ssh_pkt_adddata(pkt,newpayload,newlen);\n        }\n        puVar9 = (uchar *)pkt->length;\n      }\n      if (ssh->cscipher == (ssh2_cipher *)0x0) {\n        iVar4 = 8;\n      }\n      else {\n        iVar10 = ssh->cscipher->blksize;\n        iVar4 = 8;\n        if (7 < iVar10) {\n          iVar4 = iVar10;\n        }\n      }\n      psVar7 = ssh->csmac;\n      if ((psVar7 == (ssh_mac *)0x0) || (ssh->csmac_etm == 0)) {\n        iVar10 = pkt->forcepad;\n        puVar14 = puVar9;\n        if ((int)(puVar9 + 4) < iVar10) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar10 = 4;\n      }\n      else {\n        iVar10 = pkt->forcepad;\n        puVar14 = puVar9 + -4;\n        if (iVar10 <= (int)(puVar9 + 4)) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar10 = iVar10 - (int)puVar9;\n      }\n      if (iVar4 == 0) {\n        trap(7);\n      }\n      if (iVar4 == 0) {\n        trap(7);\n      }\n      ppuVar13 = (uchar **)((iVar4 - (int)(puVar14 + iVar10) % iVar4) % iVar4 + iVar10);\n      if (0xff < (int)ppuVar13) {\n        iVar3 = 0x92d;\n        pcVar17 = *(code **)(in_t9 + 0x79e9c);\n        pPVar8 = (Packet *)(*(int *)(del234 + in_t9 + 4) + -0x3c40);\n        pcVar18 = ssh2_pkt_defer_noqueue;\n        ssh_00 = (Ssh_conflict)(*(int *)(del234 + in_t9 + 4) + -0x2b60);\n        (*pcVar17)();\n        uStackY_bc = **(undefined4 **)(pcVar17 + 0x7978c);\n        pPStackY_b4 = pkt;\n        ppuStackY_b0 = ppuVar11;\n        ppuStackY_ac = ppuVar13;\n        ppuStackY_a8 = unaff_s3;\n        pcStackY_a4 = pcVar18;\n        if ((((ssh_00->cscipher != (ssh2_cipher *)0x0) && ((ssh_00->cscipher->flags & 1) != 0)) &&\n            (iVar3 == 0 && ssh_00->deferred_len == 0)) && ((ssh_00->remote_bugs & 0x200U) == 0)) {\n          pPVar8 = ssh2_pkt_init(2);\n          uStackY_c0 = 0;\n                    /* WARNING: Subroutine does not return */\n          ssh_pkt_adddata(pPVar8,&uStackY_c0,4);\n        }\n        iVar3 = ssh2_pkt_construct(ssh_00,pPVar8);\n        iVar4 = ssh_00->deferred_len;\n        if (ssh_00->deferred_size < iVar4 + iVar3) {\n          n = iVar4 + iVar3 + 0x80;\n          ssh_00->deferred_size = n;\n          puVar9 = (uchar *)saferealloc(ssh_00->deferred_send_data,n,1);\n          iVar4 = ssh_00->deferred_len;\n          ssh_00->deferred_send_data = puVar9;\n        }\n        else {\n          puVar9 = ssh_00->deferred_send_data;\n        }\n        (**(code **)(pcVar17 + 0x79790))(puVar9 + iVar4,pPVar8->body,iVar3);\n        iVar4 = pPVar8->encrypted_len;\n        puVar9 = pPVar8->data;\n        ssh_00->deferred_len = ssh_00->deferred_len + iVar3;\n                    /* WARNING: Subroutine does not return */\n        ssh_00->deferred_data_size = ssh_00->deferred_data_size + iVar4;\n        safefree(puVar9);\n      }\n      unaff_s3 = (uchar **)0x0;\n      if (psVar7 != (ssh_mac *)0x0) {\n        unaff_s3 = (uchar **)psVar7->len;\n      }\n      if (pkt->maxlen < (int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3)) {\n        ssh_pkt_ensure(pkt,(int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3));\n      }\n      pkt->data[4] = (uchar)ppuVar13;\n      ppuVar12 = (uchar **)0x0;\n      if (0 < (int)ppuVar13) {\n        do {\n          uVar2 = (**(code **)(in_t9 + 0x79a48))();\n          puVar9 = pkt->data + (int)ppuVar12;\n          ppuVar12 = (uchar **)((int)ppuVar12 + 1);\n          puVar9[pkt->length] = uVar2;\n          ppuVar11 = ppuVar12;\n        } while (ppuVar13 != ppuVar12);\n      }\n      *pkt->data = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x18);\n      pkt->data[1] = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x10);\n      pkt->data[2] = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 8);\n      unaff_s5 = (int *)(((uint)ppuVar13 & 0xff) + pkt->length + -4);\n      pkt->data[3] = (uchar)unaff_s5;\n      psVar1 = ssh->cscipher;\n      if (psVar1 == (ssh2_cipher *)0x0) {\n        psVar7 = ssh->csmac;\n        puVar9 = pkt->data;\n        if (psVar7 != (ssh_mac *)0x0) {\n          iVar4 = (int)ppuVar13 + pkt->length;\n          if (ssh->csmac_etm == 0) goto LAB_00033fb4;\nLAB_00034110:\n          p_Var16 = psVar7->generate;\nLAB_00034114:\n          (*p_Var16)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          puVar9 = pkt->data;\n        }\n      }\n      else {\n        puVar9 = pkt->data;\n        if ((psVar1->flags & 2) == 0) {\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\nLAB_000340ec:\n              (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9 + 4,iVar4 + -4);\n              puVar9 = pkt->data;\n              psVar7 = ssh->csmac;\n              iVar4 = (int)ppuVar13 + pkt->length;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (*psVar1->encrypt_length)(ssh->cs_cipher_ctx,puVar9,4,ssh->v2_outgoing_sequence);\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            puVar9 = pkt->data;\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\n              psVar1 = ssh->cscipher;\n              if (psVar1 != (ssh2_cipher *)0x0) goto LAB_000340ec;\n              p_Var16 = psVar7->generate;\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (*psVar7->generate)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          }\n          psVar1 = ssh->cscipher;\n          puVar9 = pkt->data;\n          if (psVar1 == (ssh2_cipher *)0x0) goto LAB_00033ff0;\n        }\n        (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9,(int)ppuVar13 + pkt->length);\n        puVar9 = pkt->data;\n      }\nLAB_00033ff0:\n      iVar10 = (int)ppuVar13 + pkt->length;\n      iVar4 = iVar10 + (int)unaff_s3;\n      ssh->v2_outgoing_sequence = ssh->v2_outgoing_sequence + 1;\n      pkt->encrypted_len = iVar10;\n      pkt->body = puVar9;\n    }\n    else {\n      pkt->data[1] = (uchar)((uint)(puVar9 + -5) >> 0x18);\n      pkt->data[2] = (uchar)((uint)(pkt->length + -5) >> 0x10);\n      pkt->data[3] = (uchar)((uint)(pkt->length + -5) >> 8);\n      pkt->data[4] = (char)pkt->length + 0xfb;\n      uVar5 = ssh->v2_outgoing_sequence;\n      iVar4 = pkt->length + -1;\n      pkt->body = pkt->data + 1;\n      ssh->v2_outgoing_sequence = uVar5 + 1;\n    }\n    if (iVar3 == *piVar15) {\n      return iVar4;\n    }\n    iVar4 = iVar3;\n    (**(code **)(in_t9 + 0x7a040))();\nLAB_00034520:\n    pkt->savedpos = iVar4;\n    ppuVar13 = unaff_s3;\nLAB_0003420c:\n    ssh_pkt_getstring(pkt,(char **)ppuVar13,unaff_s5);\n    lVar6 = pkt->savedpos;\n    unaff_s3 = &puStack_28 + (int)ppuVar11 * 3;\n    blanks[(int)ppuVar11].type = 1;\n    blanks[(int)ppuVar11].offset = lVar6;\n    ssh_pkt_getstring(pkt,(char **)ppuVar13,unaff_s5);\n    if (newpayload == (uchar *)0x0) goto LAB_00033d1c;\n    iVar10 = pkt->length;\n    blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;\n    ppuVar13 = (uchar **)((int)ppuVar11 + 1);\n  }" { (expression_statement "type = (uint)pkt->data[5];" (assignment_expression "type = (uint)pkt->data[5]" identifier = (cast_expression "(uint)pkt->data[5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pkt->data[5]" (field_expression "pkt->data" identifier -> field_identifier) [ number_literal ]))) ;) (expression_statement "texttype = ssh2_pkt_type(ssh->pkt_kctx,ssh->pkt_actx,type);" (assignment_expression "texttype = ssh2_pkt_type(ssh->pkt_kctx,ssh->pkt_actx,type)" identifier = (call_expression "ssh2_pkt_type(ssh->pkt_kctx,ssh->pkt_actx,type)" identifier (argument_list "(ssh->pkt_kctx,ssh->pkt_actx,type)" ( (field_expression "ssh->pkt_kctx" identifier -> field_identifier) , (field_expression "ssh->pkt_actx" identifier -> field_identifier) , identifier )))) ;) (expression_statement "log_packet(ssh->logctx,1,type,texttype,pkt->body,iVar10,(int)ppuVar13,blanks,\n               &ssh->v2_outgoing_sequence,pkt->downstream_id,pkt->additional_log_text);" (call_expression "log_packet(ssh->logctx,1,type,texttype,pkt->body,iVar10,(int)ppuVar13,blanks,\n               &ssh->v2_outgoing_sequence,pkt->downstream_id,pkt->additional_log_text)" identifier (argument_list "(ssh->logctx,1,type,texttype,pkt->body,iVar10,(int)ppuVar13,blanks,\n               &ssh->v2_outgoing_sequence,pkt->downstream_id,pkt->additional_log_text)" ( (field_expression "ssh->logctx" identifier -> field_identifier) , number_literal , identifier , identifier , (field_expression "pkt->body" identifier -> field_identifier) , identifier , (cast_expression "(int)ppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (pointer_expression "&ssh->v2_outgoing_sequence" & (field_expression "ssh->v2_outgoing_sequence" identifier -> field_identifier)) , (field_expression "pkt->downstream_id" identifier -> field_identifier) , (field_expression "pkt->additional_log_text" identifier -> field_identifier) ))) ;) (expression_statement "puVar9 = pkt->body + (pkt->length - (int)pkt->data);" (assignment_expression "puVar9 = pkt->body + (pkt->length - (int)pkt->data)" identifier = (binary_expression "pkt->body + (pkt->length - (int)pkt->data)" (field_expression "pkt->body" identifier -> field_identifier) + (parenthesized_expression "(pkt->length - (int)pkt->data)" ( (binary_expression "pkt->length - (int)pkt->data" (field_expression "pkt->length" identifier -> field_identifier) - (cast_expression "(int)pkt->data" ( (type_descriptor "int" primitive_type) ) (field_expression "pkt->data" identifier -> field_identifier))) )))) ;) (expression_statement "pkt->length = (long)puVar9;" (assignment_expression "pkt->length = (long)puVar9" (field_expression "pkt->length" identifier -> field_identifier) = (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (labeled_statement "LAB_00033da4:\n    ppuVar11 = (uchar **)ssh->bare_connection;" statement_identifier : (expression_statement "ppuVar11 = (uchar **)ssh->bare_connection;" (assignment_expression "ppuVar11 = (uchar **)ssh->bare_connection" identifier = (cast_expression "(uchar **)ssh->bare_connection" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (field_expression "ssh->bare_connection" identifier -> field_identifier))) ;)) (if_statement "if (ppuVar11 == (uchar **)0x0) {\n      if (ssh->cscomp != (ssh_compress *)0x0) {\n        iVar4 = (*ssh->cscomp->compress)\n                          (ssh->cs_comp_ctx,pkt->data + 5,(int)(puVar9 + -5),&newpayload,&newlen);\n        if (iVar4 != 0) {\n                    /* WARNING: Subroutine does not return */\n          pkt->length = 5;\n          ssh_pkt_adddata(pkt,newpayload,newlen);\n        }\n        puVar9 = (uchar *)pkt->length;\n      }\n      if (ssh->cscipher == (ssh2_cipher *)0x0) {\n        iVar4 = 8;\n      }\n      else {\n        iVar10 = ssh->cscipher->blksize;\n        iVar4 = 8;\n        if (7 < iVar10) {\n          iVar4 = iVar10;\n        }\n      }\n      psVar7 = ssh->csmac;\n      if ((psVar7 == (ssh_mac *)0x0) || (ssh->csmac_etm == 0)) {\n        iVar10 = pkt->forcepad;\n        puVar14 = puVar9;\n        if ((int)(puVar9 + 4) < iVar10) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar10 = 4;\n      }\n      else {\n        iVar10 = pkt->forcepad;\n        puVar14 = puVar9 + -4;\n        if (iVar10 <= (int)(puVar9 + 4)) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar10 = iVar10 - (int)puVar9;\n      }\n      if (iVar4 == 0) {\n        trap(7);\n      }\n      if (iVar4 == 0) {\n        trap(7);\n      }\n      ppuVar13 = (uchar **)((iVar4 - (int)(puVar14 + iVar10) % iVar4) % iVar4 + iVar10);\n      if (0xff < (int)ppuVar13) {\n        iVar3 = 0x92d;\n        pcVar17 = *(code **)(in_t9 + 0x79e9c);\n        pPVar8 = (Packet *)(*(int *)(del234 + in_t9 + 4) + -0x3c40);\n        pcVar18 = ssh2_pkt_defer_noqueue;\n        ssh_00 = (Ssh_conflict)(*(int *)(del234 + in_t9 + 4) + -0x2b60);\n        (*pcVar17)();\n        uStackY_bc = **(undefined4 **)(pcVar17 + 0x7978c);\n        pPStackY_b4 = pkt;\n        ppuStackY_b0 = ppuVar11;\n        ppuStackY_ac = ppuVar13;\n        ppuStackY_a8 = unaff_s3;\n        pcStackY_a4 = pcVar18;\n        if ((((ssh_00->cscipher != (ssh2_cipher *)0x0) && ((ssh_00->cscipher->flags & 1) != 0)) &&\n            (iVar3 == 0 && ssh_00->deferred_len == 0)) && ((ssh_00->remote_bugs & 0x200U) == 0)) {\n          pPVar8 = ssh2_pkt_init(2);\n          uStackY_c0 = 0;\n                    /* WARNING: Subroutine does not return */\n          ssh_pkt_adddata(pPVar8,&uStackY_c0,4);\n        }\n        iVar3 = ssh2_pkt_construct(ssh_00,pPVar8);\n        iVar4 = ssh_00->deferred_len;\n        if (ssh_00->deferred_size < iVar4 + iVar3) {\n          n = iVar4 + iVar3 + 0x80;\n          ssh_00->deferred_size = n;\n          puVar9 = (uchar *)saferealloc(ssh_00->deferred_send_data,n,1);\n          iVar4 = ssh_00->deferred_len;\n          ssh_00->deferred_send_data = puVar9;\n        }\n        else {\n          puVar9 = ssh_00->deferred_send_data;\n        }\n        (**(code **)(pcVar17 + 0x79790))(puVar9 + iVar4,pPVar8->body,iVar3);\n        iVar4 = pPVar8->encrypted_len;\n        puVar9 = pPVar8->data;\n        ssh_00->deferred_len = ssh_00->deferred_len + iVar3;\n                    /* WARNING: Subroutine does not return */\n        ssh_00->deferred_data_size = ssh_00->deferred_data_size + iVar4;\n        safefree(puVar9);\n      }\n      unaff_s3 = (uchar **)0x0;\n      if (psVar7 != (ssh_mac *)0x0) {\n        unaff_s3 = (uchar **)psVar7->len;\n      }\n      if (pkt->maxlen < (int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3)) {\n        ssh_pkt_ensure(pkt,(int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3));\n      }\n      pkt->data[4] = (uchar)ppuVar13;\n      ppuVar12 = (uchar **)0x0;\n      if (0 < (int)ppuVar13) {\n        do {\n          uVar2 = (**(code **)(in_t9 + 0x79a48))();\n          puVar9 = pkt->data + (int)ppuVar12;\n          ppuVar12 = (uchar **)((int)ppuVar12 + 1);\n          puVar9[pkt->length] = uVar2;\n          ppuVar11 = ppuVar12;\n        } while (ppuVar13 != ppuVar12);\n      }\n      *pkt->data = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x18);\n      pkt->data[1] = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x10);\n      pkt->data[2] = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 8);\n      unaff_s5 = (int *)(((uint)ppuVar13 & 0xff) + pkt->length + -4);\n      pkt->data[3] = (uchar)unaff_s5;\n      psVar1 = ssh->cscipher;\n      if (psVar1 == (ssh2_cipher *)0x0) {\n        psVar7 = ssh->csmac;\n        puVar9 = pkt->data;\n        if (psVar7 != (ssh_mac *)0x0) {\n          iVar4 = (int)ppuVar13 + pkt->length;\n          if (ssh->csmac_etm == 0) goto LAB_00033fb4;\nLAB_00034110:\n          p_Var16 = psVar7->generate;\nLAB_00034114:\n          (*p_Var16)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          puVar9 = pkt->data;\n        }\n      }\n      else {\n        puVar9 = pkt->data;\n        if ((psVar1->flags & 2) == 0) {\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\nLAB_000340ec:\n              (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9 + 4,iVar4 + -4);\n              puVar9 = pkt->data;\n              psVar7 = ssh->csmac;\n              iVar4 = (int)ppuVar13 + pkt->length;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (*psVar1->encrypt_length)(ssh->cs_cipher_ctx,puVar9,4,ssh->v2_outgoing_sequence);\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            puVar9 = pkt->data;\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\n              psVar1 = ssh->cscipher;\n              if (psVar1 != (ssh2_cipher *)0x0) goto LAB_000340ec;\n              p_Var16 = psVar7->generate;\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (*psVar7->generate)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          }\n          psVar1 = ssh->cscipher;\n          puVar9 = pkt->data;\n          if (psVar1 == (ssh2_cipher *)0x0) goto LAB_00033ff0;\n        }\n        (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9,(int)ppuVar13 + pkt->length);\n        puVar9 = pkt->data;\n      }\nLAB_00033ff0:\n      iVar10 = (int)ppuVar13 + pkt->length;\n      iVar4 = iVar10 + (int)unaff_s3;\n      ssh->v2_outgoing_sequence = ssh->v2_outgoing_sequence + 1;\n      pkt->encrypted_len = iVar10;\n      pkt->body = puVar9;\n    }\n    else {\n      pkt->data[1] = (uchar)((uint)(puVar9 + -5) >> 0x18);\n      pkt->data[2] = (uchar)((uint)(pkt->length + -5) >> 0x10);\n      pkt->data[3] = (uchar)((uint)(pkt->length + -5) >> 8);\n      pkt->data[4] = (char)pkt->length + 0xfb;\n      uVar5 = ssh->v2_outgoing_sequence;\n      iVar4 = pkt->length + -1;\n      pkt->body = pkt->data + 1;\n      ssh->v2_outgoing_sequence = uVar5 + 1;\n    }" if (parenthesized_expression "(ppuVar11 == (uchar **)0x0)" ( (binary_expression "ppuVar11 == (uchar **)0x0" identifier == (cast_expression "(uchar **)0x0" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n      if (ssh->cscomp != (ssh_compress *)0x0) {\n        iVar4 = (*ssh->cscomp->compress)\n                          (ssh->cs_comp_ctx,pkt->data + 5,(int)(puVar9 + -5),&newpayload,&newlen);\n        if (iVar4 != 0) {\n                    /* WARNING: Subroutine does not return */\n          pkt->length = 5;\n          ssh_pkt_adddata(pkt,newpayload,newlen);\n        }\n        puVar9 = (uchar *)pkt->length;\n      }\n      if (ssh->cscipher == (ssh2_cipher *)0x0) {\n        iVar4 = 8;\n      }\n      else {\n        iVar10 = ssh->cscipher->blksize;\n        iVar4 = 8;\n        if (7 < iVar10) {\n          iVar4 = iVar10;\n        }\n      }\n      psVar7 = ssh->csmac;\n      if ((psVar7 == (ssh_mac *)0x0) || (ssh->csmac_etm == 0)) {\n        iVar10 = pkt->forcepad;\n        puVar14 = puVar9;\n        if ((int)(puVar9 + 4) < iVar10) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar10 = 4;\n      }\n      else {\n        iVar10 = pkt->forcepad;\n        puVar14 = puVar9 + -4;\n        if (iVar10 <= (int)(puVar9 + 4)) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar10 = iVar10 - (int)puVar9;\n      }\n      if (iVar4 == 0) {\n        trap(7);\n      }\n      if (iVar4 == 0) {\n        trap(7);\n      }\n      ppuVar13 = (uchar **)((iVar4 - (int)(puVar14 + iVar10) % iVar4) % iVar4 + iVar10);\n      if (0xff < (int)ppuVar13) {\n        iVar3 = 0x92d;\n        pcVar17 = *(code **)(in_t9 + 0x79e9c);\n        pPVar8 = (Packet *)(*(int *)(del234 + in_t9 + 4) + -0x3c40);\n        pcVar18 = ssh2_pkt_defer_noqueue;\n        ssh_00 = (Ssh_conflict)(*(int *)(del234 + in_t9 + 4) + -0x2b60);\n        (*pcVar17)();\n        uStackY_bc = **(undefined4 **)(pcVar17 + 0x7978c);\n        pPStackY_b4 = pkt;\n        ppuStackY_b0 = ppuVar11;\n        ppuStackY_ac = ppuVar13;\n        ppuStackY_a8 = unaff_s3;\n        pcStackY_a4 = pcVar18;\n        if ((((ssh_00->cscipher != (ssh2_cipher *)0x0) && ((ssh_00->cscipher->flags & 1) != 0)) &&\n            (iVar3 == 0 && ssh_00->deferred_len == 0)) && ((ssh_00->remote_bugs & 0x200U) == 0)) {\n          pPVar8 = ssh2_pkt_init(2);\n          uStackY_c0 = 0;\n                    /* WARNING: Subroutine does not return */\n          ssh_pkt_adddata(pPVar8,&uStackY_c0,4);\n        }\n        iVar3 = ssh2_pkt_construct(ssh_00,pPVar8);\n        iVar4 = ssh_00->deferred_len;\n        if (ssh_00->deferred_size < iVar4 + iVar3) {\n          n = iVar4 + iVar3 + 0x80;\n          ssh_00->deferred_size = n;\n          puVar9 = (uchar *)saferealloc(ssh_00->deferred_send_data,n,1);\n          iVar4 = ssh_00->deferred_len;\n          ssh_00->deferred_send_data = puVar9;\n        }\n        else {\n          puVar9 = ssh_00->deferred_send_data;\n        }\n        (**(code **)(pcVar17 + 0x79790))(puVar9 + iVar4,pPVar8->body,iVar3);\n        iVar4 = pPVar8->encrypted_len;\n        puVar9 = pPVar8->data;\n        ssh_00->deferred_len = ssh_00->deferred_len + iVar3;\n                    /* WARNING: Subroutine does not return */\n        ssh_00->deferred_data_size = ssh_00->deferred_data_size + iVar4;\n        safefree(puVar9);\n      }\n      unaff_s3 = (uchar **)0x0;\n      if (psVar7 != (ssh_mac *)0x0) {\n        unaff_s3 = (uchar **)psVar7->len;\n      }\n      if (pkt->maxlen < (int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3)) {\n        ssh_pkt_ensure(pkt,(int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3));\n      }\n      pkt->data[4] = (uchar)ppuVar13;\n      ppuVar12 = (uchar **)0x0;\n      if (0 < (int)ppuVar13) {\n        do {\n          uVar2 = (**(code **)(in_t9 + 0x79a48))();\n          puVar9 = pkt->data + (int)ppuVar12;\n          ppuVar12 = (uchar **)((int)ppuVar12 + 1);\n          puVar9[pkt->length] = uVar2;\n          ppuVar11 = ppuVar12;\n        } while (ppuVar13 != ppuVar12);\n      }\n      *pkt->data = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x18);\n      pkt->data[1] = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x10);\n      pkt->data[2] = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 8);\n      unaff_s5 = (int *)(((uint)ppuVar13 & 0xff) + pkt->length + -4);\n      pkt->data[3] = (uchar)unaff_s5;\n      psVar1 = ssh->cscipher;\n      if (psVar1 == (ssh2_cipher *)0x0) {\n        psVar7 = ssh->csmac;\n        puVar9 = pkt->data;\n        if (psVar7 != (ssh_mac *)0x0) {\n          iVar4 = (int)ppuVar13 + pkt->length;\n          if (ssh->csmac_etm == 0) goto LAB_00033fb4;\nLAB_00034110:\n          p_Var16 = psVar7->generate;\nLAB_00034114:\n          (*p_Var16)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          puVar9 = pkt->data;\n        }\n      }\n      else {\n        puVar9 = pkt->data;\n        if ((psVar1->flags & 2) == 0) {\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\nLAB_000340ec:\n              (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9 + 4,iVar4 + -4);\n              puVar9 = pkt->data;\n              psVar7 = ssh->csmac;\n              iVar4 = (int)ppuVar13 + pkt->length;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (*psVar1->encrypt_length)(ssh->cs_cipher_ctx,puVar9,4,ssh->v2_outgoing_sequence);\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            puVar9 = pkt->data;\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\n              psVar1 = ssh->cscipher;\n              if (psVar1 != (ssh2_cipher *)0x0) goto LAB_000340ec;\n              p_Var16 = psVar7->generate;\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (*psVar7->generate)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          }\n          psVar1 = ssh->cscipher;\n          puVar9 = pkt->data;\n          if (psVar1 == (ssh2_cipher *)0x0) goto LAB_00033ff0;\n        }\n        (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9,(int)ppuVar13 + pkt->length);\n        puVar9 = pkt->data;\n      }\nLAB_00033ff0:\n      iVar10 = (int)ppuVar13 + pkt->length;\n      iVar4 = iVar10 + (int)unaff_s3;\n      ssh->v2_outgoing_sequence = ssh->v2_outgoing_sequence + 1;\n      pkt->encrypted_len = iVar10;\n      pkt->body = puVar9;\n    }" { (if_statement "if (ssh->cscomp != (ssh_compress *)0x0) {\n        iVar4 = (*ssh->cscomp->compress)\n                          (ssh->cs_comp_ctx,pkt->data + 5,(int)(puVar9 + -5),&newpayload,&newlen);\n        if (iVar4 != 0) {\n                    /* WARNING: Subroutine does not return */\n          pkt->length = 5;\n          ssh_pkt_adddata(pkt,newpayload,newlen);\n        }\n        puVar9 = (uchar *)pkt->length;\n      }" if (parenthesized_expression "(ssh->cscomp != (ssh_compress *)0x0)" ( (binary_expression "ssh->cscomp != (ssh_compress *)0x0" (field_expression "ssh->cscomp" identifier -> field_identifier) != (cast_expression "(ssh_compress *)0x0" ( (type_descriptor "ssh_compress *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar4 = (*ssh->cscomp->compress)\n                          (ssh->cs_comp_ctx,pkt->data + 5,(int)(puVar9 + -5),&newpayload,&newlen);\n        if (iVar4 != 0) {\n                    /* WARNING: Subroutine does not return */\n          pkt->length = 5;\n          ssh_pkt_adddata(pkt,newpayload,newlen);\n        }\n        puVar9 = (uchar *)pkt->length;\n      }" { (expression_statement "iVar4 = (*ssh->cscomp->compress)\n                          (ssh->cs_comp_ctx,pkt->data + 5,(int)(puVar9 + -5),&newpayload,&newlen);" (assignment_expression "iVar4 = (*ssh->cscomp->compress)\n                          (ssh->cs_comp_ctx,pkt->data + 5,(int)(puVar9 + -5),&newpayload,&newlen)" identifier = (call_expression "(*ssh->cscomp->compress)\n                          (ssh->cs_comp_ctx,pkt->data + 5,(int)(puVar9 + -5),&newpayload,&newlen)" (parenthesized_expression "(*ssh->cscomp->compress)" ( (pointer_expression "*ssh->cscomp->compress" * (field_expression "ssh->cscomp->compress" (field_expression "ssh->cscomp" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(ssh->cs_comp_ctx,pkt->data + 5,(int)(puVar9 + -5),&newpayload,&newlen)" ( (field_expression "ssh->cs_comp_ctx" identifier -> field_identifier) , (binary_expression "pkt->data + 5" (field_expression "pkt->data" identifier -> field_identifier) + number_literal) , (cast_expression "(int)(puVar9 + -5)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar9 + -5)" ( (binary_expression "puVar9 + -5" identifier + number_literal) ))) , (pointer_expression "&newpayload" & identifier) , (pointer_expression "&newlen" & identifier) )))) ;) (if_statement "if (iVar4 != 0) {\n                    /* WARNING: Subroutine does not return */\n          pkt->length = 5;\n          ssh_pkt_adddata(pkt,newpayload,newlen);\n        }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          pkt->length = 5;\n          ssh_pkt_adddata(pkt,newpayload,newlen);\n        }" { comment (expression_statement "pkt->length = 5;" (assignment_expression "pkt->length = 5" (field_expression "pkt->length" identifier -> field_identifier) = number_literal) ;) (expression_statement "ssh_pkt_adddata(pkt,newpayload,newlen);" (call_expression "ssh_pkt_adddata(pkt,newpayload,newlen)" identifier (argument_list "(pkt,newpayload,newlen)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "puVar9 = (uchar *)pkt->length;" (assignment_expression "puVar9 = (uchar *)pkt->length" identifier = (cast_expression "(uchar *)pkt->length" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pkt->length" identifier -> field_identifier))) ;) })) (if_statement "if (ssh->cscipher == (ssh2_cipher *)0x0) {\n        iVar4 = 8;\n      }\n      else {\n        iVar10 = ssh->cscipher->blksize;\n        iVar4 = 8;\n        if (7 < iVar10) {\n          iVar4 = iVar10;\n        }\n      }" if (parenthesized_expression "(ssh->cscipher == (ssh2_cipher *)0x0)" ( (binary_expression "ssh->cscipher == (ssh2_cipher *)0x0" (field_expression "ssh->cscipher" identifier -> field_identifier) == (cast_expression "(ssh2_cipher *)0x0" ( (type_descriptor "ssh2_cipher *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar4 = 8;\n      }" { (expression_statement "iVar4 = 8;" (assignment_expression "iVar4 = 8" identifier = number_literal) ;) }) (else_clause "else {\n        iVar10 = ssh->cscipher->blksize;\n        iVar4 = 8;\n        if (7 < iVar10) {\n          iVar4 = iVar10;\n        }\n      }" else (compound_statement "{\n        iVar10 = ssh->cscipher->blksize;\n        iVar4 = 8;\n        if (7 < iVar10) {\n          iVar4 = iVar10;\n        }\n      }" { (expression_statement "iVar10 = ssh->cscipher->blksize;" (assignment_expression "iVar10 = ssh->cscipher->blksize" identifier = (field_expression "ssh->cscipher->blksize" (field_expression "ssh->cscipher" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "iVar4 = 8;" (assignment_expression "iVar4 = 8" identifier = number_literal) ;) (if_statement "if (7 < iVar10) {\n          iVar4 = iVar10;\n        }" if (parenthesized_expression "(7 < iVar10)" ( (binary_expression "7 < iVar10" number_literal < identifier) )) (compound_statement "{\n          iVar4 = iVar10;\n        }" { (expression_statement "iVar4 = iVar10;" (assignment_expression "iVar4 = iVar10" identifier = identifier) ;) })) }))) (expression_statement "psVar7 = ssh->csmac;" (assignment_expression "psVar7 = ssh->csmac" identifier = (field_expression "ssh->csmac" identifier -> field_identifier)) ;) (if_statement "if ((psVar7 == (ssh_mac *)0x0) || (ssh->csmac_etm == 0)) {\n        iVar10 = pkt->forcepad;\n        puVar14 = puVar9;\n        if ((int)(puVar9 + 4) < iVar10) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar10 = 4;\n      }\n      else {\n        iVar10 = pkt->forcepad;\n        puVar14 = puVar9 + -4;\n        if (iVar10 <= (int)(puVar9 + 4)) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar10 = iVar10 - (int)puVar9;\n      }" if (parenthesized_expression "((psVar7 == (ssh_mac *)0x0) || (ssh->csmac_etm == 0))" ( (binary_expression "(psVar7 == (ssh_mac *)0x0) || (ssh->csmac_etm == 0)" (parenthesized_expression "(psVar7 == (ssh_mac *)0x0)" ( (binary_expression "psVar7 == (ssh_mac *)0x0" identifier == (cast_expression "(ssh_mac *)0x0" ( (type_descriptor "ssh_mac *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(ssh->csmac_etm == 0)" ( (binary_expression "ssh->csmac_etm == 0" (field_expression "ssh->csmac_etm" identifier -> field_identifier) == number_literal) ))) )) (compound_statement "{\n        iVar10 = pkt->forcepad;\n        puVar14 = puVar9;\n        if ((int)(puVar9 + 4) < iVar10) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar10 = 4;\n      }" { (expression_statement "iVar10 = pkt->forcepad;" (assignment_expression "iVar10 = pkt->forcepad" identifier = (field_expression "pkt->forcepad" identifier -> field_identifier)) ;) (expression_statement "puVar14 = puVar9;" (assignment_expression "puVar14 = puVar9" identifier = identifier) ;) (if_statement "if ((int)(puVar9 + 4) < iVar10) goto LAB_00033e2c;" if (parenthesized_expression "((int)(puVar9 + 4) < iVar10)" ( (binary_expression "(int)(puVar9 + 4) < iVar10" (cast_expression "(int)(puVar9 + 4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) ))) < identifier) )) (goto_statement "goto LAB_00033e2c;" goto statement_identifier ;)) (labeled_statement "LAB_0003405c:\n        iVar10 = 4;" statement_identifier : (expression_statement "iVar10 = 4;" (assignment_expression "iVar10 = 4" identifier = number_literal) ;)) }) (else_clause "else {\n        iVar10 = pkt->forcepad;\n        puVar14 = puVar9 + -4;\n        if (iVar10 <= (int)(puVar9 + 4)) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar10 = iVar10 - (int)puVar9;\n      }" else (compound_statement "{\n        iVar10 = pkt->forcepad;\n        puVar14 = puVar9 + -4;\n        if (iVar10 <= (int)(puVar9 + 4)) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar10 = iVar10 - (int)puVar9;\n      }" { (expression_statement "iVar10 = pkt->forcepad;" (assignment_expression "iVar10 = pkt->forcepad" identifier = (field_expression "pkt->forcepad" identifier -> field_identifier)) ;) (expression_statement "puVar14 = puVar9 + -4;" (assignment_expression "puVar14 = puVar9 + -4" identifier = (binary_expression "puVar9 + -4" identifier + number_literal)) ;) (if_statement "if (iVar10 <= (int)(puVar9 + 4)) goto LAB_0003405c;" if (parenthesized_expression "(iVar10 <= (int)(puVar9 + 4))" ( (binary_expression "iVar10 <= (int)(puVar9 + 4)" identifier <= (cast_expression "(int)(puVar9 + 4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) )))) )) (goto_statement "goto LAB_0003405c;" goto statement_identifier ;)) (labeled_statement "LAB_00033e2c:\n        iVar10 = iVar10 - (int)puVar9;" statement_identifier : (expression_statement "iVar10 = iVar10 - (int)puVar9;" (assignment_expression "iVar10 = iVar10 - (int)puVar9" identifier = (binary_expression "iVar10 - (int)puVar9" identifier - (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier))) ;)) }))) (if_statement "if (iVar4 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 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 (iVar4 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 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 "ppuVar13 = (uchar **)((iVar4 - (int)(puVar14 + iVar10) % iVar4) % iVar4 + iVar10);" (assignment_expression "ppuVar13 = (uchar **)((iVar4 - (int)(puVar14 + iVar10) % iVar4) % iVar4 + iVar10)" identifier = (cast_expression "(uchar **)((iVar4 - (int)(puVar14 + iVar10) % iVar4) % iVar4 + iVar10)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((iVar4 - (int)(puVar14 + iVar10) % iVar4) % iVar4 + iVar10)" ( (binary_expression "(iVar4 - (int)(puVar14 + iVar10) % iVar4) % iVar4 + iVar10" (binary_expression "(iVar4 - (int)(puVar14 + iVar10) % iVar4) % iVar4" (parenthesized_expression "(iVar4 - (int)(puVar14 + iVar10) % iVar4)" ( (binary_expression "iVar4 - (int)(puVar14 + iVar10) % iVar4" identifier - (binary_expression "(int)(puVar14 + iVar10) % iVar4" (cast_expression "(int)(puVar14 + iVar10)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar14 + iVar10)" ( (binary_expression "puVar14 + iVar10" identifier + identifier) ))) % identifier)) )) % identifier) + identifier) )))) ;) (if_statement "if (0xff < (int)ppuVar13) {\n        iVar3 = 0x92d;\n        pcVar17 = *(code **)(in_t9 + 0x79e9c);\n        pPVar8 = (Packet *)(*(int *)(del234 + in_t9 + 4) + -0x3c40);\n        pcVar18 = ssh2_pkt_defer_noqueue;\n        ssh_00 = (Ssh_conflict)(*(int *)(del234 + in_t9 + 4) + -0x2b60);\n        (*pcVar17)();\n        uStackY_bc = **(undefined4 **)(pcVar17 + 0x7978c);\n        pPStackY_b4 = pkt;\n        ppuStackY_b0 = ppuVar11;\n        ppuStackY_ac = ppuVar13;\n        ppuStackY_a8 = unaff_s3;\n        pcStackY_a4 = pcVar18;\n        if ((((ssh_00->cscipher != (ssh2_cipher *)0x0) && ((ssh_00->cscipher->flags & 1) != 0)) &&\n            (iVar3 == 0 && ssh_00->deferred_len == 0)) && ((ssh_00->remote_bugs & 0x200U) == 0)) {\n          pPVar8 = ssh2_pkt_init(2);\n          uStackY_c0 = 0;\n                    /* WARNING: Subroutine does not return */\n          ssh_pkt_adddata(pPVar8,&uStackY_c0,4);\n        }\n        iVar3 = ssh2_pkt_construct(ssh_00,pPVar8);\n        iVar4 = ssh_00->deferred_len;\n        if (ssh_00->deferred_size < iVar4 + iVar3) {\n          n = iVar4 + iVar3 + 0x80;\n          ssh_00->deferred_size = n;\n          puVar9 = (uchar *)saferealloc(ssh_00->deferred_send_data,n,1);\n          iVar4 = ssh_00->deferred_len;\n          ssh_00->deferred_send_data = puVar9;\n        }\n        else {\n          puVar9 = ssh_00->deferred_send_data;\n        }\n        (**(code **)(pcVar17 + 0x79790))(puVar9 + iVar4,pPVar8->body,iVar3);\n        iVar4 = pPVar8->encrypted_len;\n        puVar9 = pPVar8->data;\n        ssh_00->deferred_len = ssh_00->deferred_len + iVar3;\n                    /* WARNING: Subroutine does not return */\n        ssh_00->deferred_data_size = ssh_00->deferred_data_size + iVar4;\n        safefree(puVar9);\n      }" if (parenthesized_expression "(0xff < (int)ppuVar13)" ( (binary_expression "0xff < (int)ppuVar13" number_literal < (cast_expression "(int)ppuVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        iVar3 = 0x92d;\n        pcVar17 = *(code **)(in_t9 + 0x79e9c);\n        pPVar8 = (Packet *)(*(int *)(del234 + in_t9 + 4) + -0x3c40);\n        pcVar18 = ssh2_pkt_defer_noqueue;\n        ssh_00 = (Ssh_conflict)(*(int *)(del234 + in_t9 + 4) + -0x2b60);\n        (*pcVar17)();\n        uStackY_bc = **(undefined4 **)(pcVar17 + 0x7978c);\n        pPStackY_b4 = pkt;\n        ppuStackY_b0 = ppuVar11;\n        ppuStackY_ac = ppuVar13;\n        ppuStackY_a8 = unaff_s3;\n        pcStackY_a4 = pcVar18;\n        if ((((ssh_00->cscipher != (ssh2_cipher *)0x0) && ((ssh_00->cscipher->flags & 1) != 0)) &&\n            (iVar3 == 0 && ssh_00->deferred_len == 0)) && ((ssh_00->remote_bugs & 0x200U) == 0)) {\n          pPVar8 = ssh2_pkt_init(2);\n          uStackY_c0 = 0;\n                    /* WARNING: Subroutine does not return */\n          ssh_pkt_adddata(pPVar8,&uStackY_c0,4);\n        }\n        iVar3 = ssh2_pkt_construct(ssh_00,pPVar8);\n        iVar4 = ssh_00->deferred_len;\n        if (ssh_00->deferred_size < iVar4 + iVar3) {\n          n = iVar4 + iVar3 + 0x80;\n          ssh_00->deferred_size = n;\n          puVar9 = (uchar *)saferealloc(ssh_00->deferred_send_data,n,1);\n          iVar4 = ssh_00->deferred_len;\n          ssh_00->deferred_send_data = puVar9;\n        }\n        else {\n          puVar9 = ssh_00->deferred_send_data;\n        }\n        (**(code **)(pcVar17 + 0x79790))(puVar9 + iVar4,pPVar8->body,iVar3);\n        iVar4 = pPVar8->encrypted_len;\n        puVar9 = pPVar8->data;\n        ssh_00->deferred_len = ssh_00->deferred_len + iVar3;\n                    /* WARNING: Subroutine does not return */\n        ssh_00->deferred_data_size = ssh_00->deferred_data_size + iVar4;\n        safefree(puVar9);\n      }" { (expression_statement "iVar3 = 0x92d;" (assignment_expression "iVar3 = 0x92d" identifier = number_literal) ;) (expression_statement "pcVar17 = *(code **)(in_t9 + 0x79e9c);" (assignment_expression "pcVar17 = *(code **)(in_t9 + 0x79e9c)" identifier = (pointer_expression "*(code **)(in_t9 + 0x79e9c)" * (cast_expression "(code **)(in_t9 + 0x79e9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x79e9c)" ( (binary_expression "in_t9 + 0x79e9c" identifier + number_literal) ))))) ;) (expression_statement "pPVar8 = (Packet *)(*(int *)(del234 + in_t9 + 4) + -0x3c40);" (assignment_expression "pPVar8 = (Packet *)(*(int *)(del234 + in_t9 + 4) + -0x3c40)" identifier = (cast_expression "(Packet *)(*(int *)(del234 + in_t9 + 4) + -0x3c40)" ( (type_descriptor "Packet *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(del234 + in_t9 + 4) + -0x3c40)" ( (binary_expression "*(int *)(del234 + in_t9 + 4) + -0x3c40" (pointer_expression "*(int *)(del234 + in_t9 + 4)" * (cast_expression "(int *)(del234 + in_t9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(del234 + in_t9 + 4)" ( (binary_expression "del234 + in_t9 + 4" (binary_expression "del234 + in_t9" identifier + identifier) + number_literal) )))) + number_literal) )))) ;) (expression_statement "pcVar18 = ssh2_pkt_defer_noqueue;" (assignment_expression "pcVar18 = ssh2_pkt_defer_noqueue" identifier = identifier) ;) (expression_statement "ssh_00 = (Ssh_conflict)(*(int *)(del234 + in_t9 + 4) + -0x2b60);" (assignment_expression "ssh_00 = (Ssh_conflict)(*(int *)(del234 + in_t9 + 4) + -0x2b60)" identifier = (call_expression "(Ssh_conflict)(*(int *)(del234 + in_t9 + 4) + -0x2b60)" (parenthesized_expression "(Ssh_conflict)" ( identifier )) (argument_list "(*(int *)(del234 + in_t9 + 4) + -0x2b60)" ( (binary_expression "*(int *)(del234 + in_t9 + 4) + -0x2b60" (pointer_expression "*(int *)(del234 + in_t9 + 4)" * (cast_expression "(int *)(del234 + in_t9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(del234 + in_t9 + 4)" ( (binary_expression "del234 + in_t9 + 4" (binary_expression "del234 + in_t9" identifier + identifier) + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar17)();" (call_expression "(*pcVar17)()" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "uStackY_bc = **(undefined4 **)(pcVar17 + 0x7978c);" (assignment_expression "uStackY_bc = **(undefined4 **)(pcVar17 + 0x7978c)" identifier = (pointer_expression "**(undefined4 **)(pcVar17 + 0x7978c)" * (pointer_expression "*(undefined4 **)(pcVar17 + 0x7978c)" * (cast_expression "(undefined4 **)(pcVar17 + 0x7978c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar17 + 0x7978c)" ( (binary_expression "pcVar17 + 0x7978c" identifier + number_literal) )))))) ;) (expression_statement "pPStackY_b4 = pkt;" (assignment_expression "pPStackY_b4 = pkt" identifier = identifier) ;) (expression_statement "ppuStackY_b0 = ppuVar11;" (assignment_expression "ppuStackY_b0 = ppuVar11" identifier = identifier) ;) (expression_statement "ppuStackY_ac = ppuVar13;" (assignment_expression "ppuStackY_ac = ppuVar13" identifier = identifier) ;) (expression_statement "ppuStackY_a8 = unaff_s3;" (assignment_expression "ppuStackY_a8 = unaff_s3" identifier = identifier) ;) (expression_statement "pcStackY_a4 = pcVar18;" (assignment_expression "pcStackY_a4 = pcVar18" identifier = identifier) ;) (if_statement "if ((((ssh_00->cscipher != (ssh2_cipher *)0x0) && ((ssh_00->cscipher->flags & 1) != 0)) &&\n            (iVar3 == 0 && ssh_00->deferred_len == 0)) && ((ssh_00->remote_bugs & 0x200U) == 0)) {\n          pPVar8 = ssh2_pkt_init(2);\n          uStackY_c0 = 0;\n                    /* WARNING: Subroutine does not return */\n          ssh_pkt_adddata(pPVar8,&uStackY_c0,4);\n        }" if (parenthesized_expression "((((ssh_00->cscipher != (ssh2_cipher *)0x0) && ((ssh_00->cscipher->flags & 1) != 0)) &&\n            (iVar3 == 0 && ssh_00->deferred_len == 0)) && ((ssh_00->remote_bugs & 0x200U) == 0))" ( (binary_expression "(((ssh_00->cscipher != (ssh2_cipher *)0x0) && ((ssh_00->cscipher->flags & 1) != 0)) &&\n            (iVar3 == 0 && ssh_00->deferred_len == 0)) && ((ssh_00->remote_bugs & 0x200U) == 0)" (parenthesized_expression "(((ssh_00->cscipher != (ssh2_cipher *)0x0) && ((ssh_00->cscipher->flags & 1) != 0)) &&\n            (iVar3 == 0 && ssh_00->deferred_len == 0))" ( (binary_expression "((ssh_00->cscipher != (ssh2_cipher *)0x0) && ((ssh_00->cscipher->flags & 1) != 0)) &&\n            (iVar3 == 0 && ssh_00->deferred_len == 0)" (parenthesized_expression "((ssh_00->cscipher != (ssh2_cipher *)0x0) && ((ssh_00->cscipher->flags & 1) != 0))" ( (binary_expression "(ssh_00->cscipher != (ssh2_cipher *)0x0) && ((ssh_00->cscipher->flags & 1) != 0)" (parenthesized_expression "(ssh_00->cscipher != (ssh2_cipher *)0x0)" ( (binary_expression "ssh_00->cscipher != (ssh2_cipher *)0x0" (field_expression "ssh_00->cscipher" identifier -> field_identifier) != (cast_expression "(ssh2_cipher *)0x0" ( (type_descriptor "ssh2_cipher *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((ssh_00->cscipher->flags & 1) != 0)" ( (binary_expression "(ssh_00->cscipher->flags & 1) != 0" (parenthesized_expression "(ssh_00->cscipher->flags & 1)" ( (binary_expression "ssh_00->cscipher->flags & 1" (field_expression "ssh_00->cscipher->flags" (field_expression "ssh_00->cscipher" identifier -> field_identifier) -> field_identifier) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "(iVar3 == 0 && ssh_00->deferred_len == 0)" ( (binary_expression "iVar3 == 0 && ssh_00->deferred_len == 0" (binary_expression "iVar3 == 0" identifier == number_literal) && (binary_expression "ssh_00->deferred_len == 0" (field_expression "ssh_00->deferred_len" identifier -> field_identifier) == number_literal)) ))) )) && (parenthesized_expression "((ssh_00->remote_bugs & 0x200U) == 0)" ( (binary_expression "(ssh_00->remote_bugs & 0x200U) == 0" (parenthesized_expression "(ssh_00->remote_bugs & 0x200U)" ( (binary_expression "ssh_00->remote_bugs & 0x200U" (field_expression "ssh_00->remote_bugs" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n          pPVar8 = ssh2_pkt_init(2);\n          uStackY_c0 = 0;\n                    /* WARNING: Subroutine does not return */\n          ssh_pkt_adddata(pPVar8,&uStackY_c0,4);\n        }" { (expression_statement "pPVar8 = ssh2_pkt_init(2);" (assignment_expression "pPVar8 = ssh2_pkt_init(2)" identifier = (call_expression "ssh2_pkt_init(2)" identifier (argument_list "(2)" ( number_literal )))) ;) (expression_statement "uStackY_c0 = 0;" (assignment_expression "uStackY_c0 = 0" identifier = number_literal) ;) comment (expression_statement "ssh_pkt_adddata(pPVar8,&uStackY_c0,4);" (call_expression "ssh_pkt_adddata(pPVar8,&uStackY_c0,4)" identifier (argument_list "(pPVar8,&uStackY_c0,4)" ( identifier , (pointer_expression "&uStackY_c0" & identifier) , number_literal ))) ;) })) (expression_statement "iVar3 = ssh2_pkt_construct(ssh_00,pPVar8);" (assignment_expression "iVar3 = ssh2_pkt_construct(ssh_00,pPVar8)" identifier = (call_expression "ssh2_pkt_construct(ssh_00,pPVar8)" identifier (argument_list "(ssh_00,pPVar8)" ( identifier , identifier )))) ;) (expression_statement "iVar4 = ssh_00->deferred_len;" (assignment_expression "iVar4 = ssh_00->deferred_len" identifier = (field_expression "ssh_00->deferred_len" identifier -> field_identifier)) ;) (if_statement "if (ssh_00->deferred_size < iVar4 + iVar3) {\n          n = iVar4 + iVar3 + 0x80;\n          ssh_00->deferred_size = n;\n          puVar9 = (uchar *)saferealloc(ssh_00->deferred_send_data,n,1);\n          iVar4 = ssh_00->deferred_len;\n          ssh_00->deferred_send_data = puVar9;\n        }\n        else {\n          puVar9 = ssh_00->deferred_send_data;\n        }" if (parenthesized_expression "(ssh_00->deferred_size < iVar4 + iVar3)" ( (binary_expression "ssh_00->deferred_size < iVar4 + iVar3" (field_expression "ssh_00->deferred_size" identifier -> field_identifier) < (binary_expression "iVar4 + iVar3" identifier + identifier)) )) (compound_statement "{\n          n = iVar4 + iVar3 + 0x80;\n          ssh_00->deferred_size = n;\n          puVar9 = (uchar *)saferealloc(ssh_00->deferred_send_data,n,1);\n          iVar4 = ssh_00->deferred_len;\n          ssh_00->deferred_send_data = puVar9;\n        }" { (expression_statement "n = iVar4 + iVar3 + 0x80;" (assignment_expression "n = iVar4 + iVar3 + 0x80" identifier = (binary_expression "iVar4 + iVar3 + 0x80" (binary_expression "iVar4 + iVar3" identifier + identifier) + number_literal)) ;) (expression_statement "ssh_00->deferred_size = n;" (assignment_expression "ssh_00->deferred_size = n" (field_expression "ssh_00->deferred_size" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar9 = (uchar *)saferealloc(ssh_00->deferred_send_data,n,1);" (assignment_expression "puVar9 = (uchar *)saferealloc(ssh_00->deferred_send_data,n,1)" identifier = (cast_expression "(uchar *)saferealloc(ssh_00->deferred_send_data,n,1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "saferealloc(ssh_00->deferred_send_data,n,1)" identifier (argument_list "(ssh_00->deferred_send_data,n,1)" ( (field_expression "ssh_00->deferred_send_data" identifier -> field_identifier) , identifier , number_literal ))))) ;) (expression_statement "iVar4 = ssh_00->deferred_len;" (assignment_expression "iVar4 = ssh_00->deferred_len" identifier = (field_expression "ssh_00->deferred_len" identifier -> field_identifier)) ;) (expression_statement "ssh_00->deferred_send_data = puVar9;" (assignment_expression "ssh_00->deferred_send_data = puVar9" (field_expression "ssh_00->deferred_send_data" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n          puVar9 = ssh_00->deferred_send_data;\n        }" else (compound_statement "{\n          puVar9 = ssh_00->deferred_send_data;\n        }" { (expression_statement "puVar9 = ssh_00->deferred_send_data;" (assignment_expression "puVar9 = ssh_00->deferred_send_data" identifier = (field_expression "ssh_00->deferred_send_data" identifier -> field_identifier)) ;) }))) (expression_statement "(**(code **)(pcVar17 + 0x79790))(puVar9 + iVar4,pPVar8->body,iVar3);" (call_expression "(**(code **)(pcVar17 + 0x79790))(puVar9 + iVar4,pPVar8->body,iVar3)" (parenthesized_expression "(**(code **)(pcVar17 + 0x79790))" ( (pointer_expression "**(code **)(pcVar17 + 0x79790)" * (pointer_expression "*(code **)(pcVar17 + 0x79790)" * (cast_expression "(code **)(pcVar17 + 0x79790)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar17 + 0x79790)" ( (binary_expression "pcVar17 + 0x79790" identifier + number_literal) ))))) )) (argument_list "(puVar9 + iVar4,pPVar8->body,iVar3)" ( (binary_expression "puVar9 + iVar4" identifier + identifier) , (field_expression "pPVar8->body" identifier -> field_identifier) , identifier ))) ;) (expression_statement "iVar4 = pPVar8->encrypted_len;" (assignment_expression "iVar4 = pPVar8->encrypted_len" identifier = (field_expression "pPVar8->encrypted_len" identifier -> field_identifier)) ;) (expression_statement "puVar9 = pPVar8->data;" (assignment_expression "puVar9 = pPVar8->data" identifier = (field_expression "pPVar8->data" identifier -> field_identifier)) ;) (expression_statement "ssh_00->deferred_len = ssh_00->deferred_len + iVar3;" (assignment_expression "ssh_00->deferred_len = ssh_00->deferred_len + iVar3" (field_expression "ssh_00->deferred_len" identifier -> field_identifier) = (binary_expression "ssh_00->deferred_len + iVar3" (field_expression "ssh_00->deferred_len" identifier -> field_identifier) + identifier)) ;) comment (expression_statement "ssh_00->deferred_data_size = ssh_00->deferred_data_size + iVar4;" (assignment_expression "ssh_00->deferred_data_size = ssh_00->deferred_data_size + iVar4" (field_expression "ssh_00->deferred_data_size" identifier -> field_identifier) = (binary_expression "ssh_00->deferred_data_size + iVar4" (field_expression "ssh_00->deferred_data_size" identifier -> field_identifier) + identifier)) ;) (expression_statement "safefree(puVar9);" (call_expression "safefree(puVar9)" identifier (argument_list "(puVar9)" ( identifier ))) ;) })) (expression_statement "unaff_s3 = (uchar **)0x0;" (assignment_expression "unaff_s3 = (uchar **)0x0" identifier = (cast_expression "(uchar **)0x0" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (if_statement "if (psVar7 != (ssh_mac *)0x0) {\n        unaff_s3 = (uchar **)psVar7->len;\n      }" if (parenthesized_expression "(psVar7 != (ssh_mac *)0x0)" ( (binary_expression "psVar7 != (ssh_mac *)0x0" identifier != (cast_expression "(ssh_mac *)0x0" ( (type_descriptor "ssh_mac *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        unaff_s3 = (uchar **)psVar7->len;\n      }" { (expression_statement "unaff_s3 = (uchar **)psVar7->len;" (assignment_expression "unaff_s3 = (uchar **)psVar7->len" identifier = (cast_expression "(uchar **)psVar7->len" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (field_expression "psVar7->len" identifier -> field_identifier))) ;) })) (if_statement "if (pkt->maxlen < (int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3)) {\n        ssh_pkt_ensure(pkt,(int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3));\n      }" if (parenthesized_expression "(pkt->maxlen < (int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3))" ( (binary_expression "pkt->maxlen < (int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3)" (field_expression "pkt->maxlen" identifier -> field_identifier) < (cast_expression "(int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3)" ( (binary_expression "(uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3" (cast_expression "(uchar *)((int)ppuVar13 + (int)puVar9)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar13 + (int)puVar9)" ( (binary_expression "(int)ppuVar13 + (int)puVar9" (cast_expression "(int)ppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ))) + (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n        ssh_pkt_ensure(pkt,(int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3));\n      }" { (expression_statement "ssh_pkt_ensure(pkt,(int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3));" (call_expression "ssh_pkt_ensure(pkt,(int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3))" identifier (argument_list "(pkt,(int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3))" ( identifier , (cast_expression "(int)((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3)" ( (binary_expression "(uchar *)((int)ppuVar13 + (int)puVar9) + (int)unaff_s3" (cast_expression "(uchar *)((int)ppuVar13 + (int)puVar9)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar13 + (int)puVar9)" ( (binary_expression "(int)ppuVar13 + (int)puVar9" (cast_expression "(int)ppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ))) + (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))) ;) })) (expression_statement "pkt->data[4] = (uchar)ppuVar13;" (assignment_expression "pkt->data[4] = (uchar)ppuVar13" (subscript_expression "pkt->data[4]" (field_expression "pkt->data" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(uchar)ppuVar13" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "ppuVar12 = (uchar **)0x0;" (assignment_expression "ppuVar12 = (uchar **)0x0" identifier = (cast_expression "(uchar **)0x0" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (if_statement "if (0 < (int)ppuVar13) {\n        do {\n          uVar2 = (**(code **)(in_t9 + 0x79a48))();\n          puVar9 = pkt->data + (int)ppuVar12;\n          ppuVar12 = (uchar **)((int)ppuVar12 + 1);\n          puVar9[pkt->length] = uVar2;\n          ppuVar11 = ppuVar12;\n        } while (ppuVar13 != ppuVar12);\n      }" if (parenthesized_expression "(0 < (int)ppuVar13)" ( (binary_expression "0 < (int)ppuVar13" number_literal < (cast_expression "(int)ppuVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        do {\n          uVar2 = (**(code **)(in_t9 + 0x79a48))();\n          puVar9 = pkt->data + (int)ppuVar12;\n          ppuVar12 = (uchar **)((int)ppuVar12 + 1);\n          puVar9[pkt->length] = uVar2;\n          ppuVar11 = ppuVar12;\n        } while (ppuVar13 != ppuVar12);\n      }" { (do_statement "do {\n          uVar2 = (**(code **)(in_t9 + 0x79a48))();\n          puVar9 = pkt->data + (int)ppuVar12;\n          ppuVar12 = (uchar **)((int)ppuVar12 + 1);\n          puVar9[pkt->length] = uVar2;\n          ppuVar11 = ppuVar12;\n        } while (ppuVar13 != ppuVar12);" do (compound_statement "{\n          uVar2 = (**(code **)(in_t9 + 0x79a48))();\n          puVar9 = pkt->data + (int)ppuVar12;\n          ppuVar12 = (uchar **)((int)ppuVar12 + 1);\n          puVar9[pkt->length] = uVar2;\n          ppuVar11 = ppuVar12;\n        }" { (expression_statement "uVar2 = (**(code **)(in_t9 + 0x79a48))();" (assignment_expression "uVar2 = (**(code **)(in_t9 + 0x79a48))()" identifier = (call_expression "(**(code **)(in_t9 + 0x79a48))()" (parenthesized_expression "(**(code **)(in_t9 + 0x79a48))" ( (pointer_expression "**(code **)(in_t9 + 0x79a48)" * (pointer_expression "*(code **)(in_t9 + 0x79a48)" * (cast_expression "(code **)(in_t9 + 0x79a48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x79a48)" ( (binary_expression "in_t9 + 0x79a48" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "puVar9 = pkt->data + (int)ppuVar12;" (assignment_expression "puVar9 = pkt->data + (int)ppuVar12" identifier = (binary_expression "pkt->data + (int)ppuVar12" (field_expression "pkt->data" identifier -> field_identifier) + (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "ppuVar12 = (uchar **)((int)ppuVar12 + 1);" (assignment_expression "ppuVar12 = (uchar **)((int)ppuVar12 + 1)" identifier = (cast_expression "(uchar **)((int)ppuVar12 + 1)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar12 + 1)" ( (binary_expression "(int)ppuVar12 + 1" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar9[pkt->length] = uVar2;" (assignment_expression "puVar9[pkt->length] = uVar2" (subscript_expression "puVar9[pkt->length]" identifier [ (field_expression "pkt->length" identifier -> field_identifier) ]) = identifier) ;) (expression_statement "ppuVar11 = ppuVar12;" (assignment_expression "ppuVar11 = ppuVar12" identifier = identifier) ;) }) while (parenthesized_expression "(ppuVar13 != ppuVar12)" ( (binary_expression "ppuVar13 != ppuVar12" identifier != identifier) )) ;) })) (expression_statement "*pkt->data = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x18);" (assignment_expression "*pkt->data = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x18)" (pointer_expression "*pkt->data" * (field_expression "pkt->data" identifier -> field_identifier)) = (call_expression "(uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)((int)ppuVar13 + pkt->length + -4) >> 0x18)" ( (binary_expression "(uint)((int)ppuVar13 + pkt->length + -4) >> 0x18" (call_expression "(uint)((int)ppuVar13 + pkt->length + -4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)ppuVar13 + pkt->length + -4)" ( (binary_expression "(int)ppuVar13 + pkt->length + -4" (binary_expression "(int)ppuVar13 + pkt->length" (cast_expression "(int)ppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (field_expression "pkt->length" identifier -> field_identifier)) + number_literal) ))) >> number_literal) )))) ;) (expression_statement "pkt->data[1] = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x10);" (assignment_expression "pkt->data[1] = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x10)" (subscript_expression "pkt->data[1]" (field_expression "pkt->data" identifier -> field_identifier) [ number_literal ]) = (call_expression "(uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)((int)ppuVar13 + pkt->length + -4) >> 0x10)" ( (binary_expression "(uint)((int)ppuVar13 + pkt->length + -4) >> 0x10" (call_expression "(uint)((int)ppuVar13 + pkt->length + -4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)ppuVar13 + pkt->length + -4)" ( (binary_expression "(int)ppuVar13 + pkt->length + -4" (binary_expression "(int)ppuVar13 + pkt->length" (cast_expression "(int)ppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (field_expression "pkt->length" identifier -> field_identifier)) + number_literal) ))) >> number_literal) )))) ;) (expression_statement "pkt->data[2] = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 8);" (assignment_expression "pkt->data[2] = (uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 8)" (subscript_expression "pkt->data[2]" (field_expression "pkt->data" identifier -> field_identifier) [ number_literal ]) = (call_expression "(uchar)((uint)((int)ppuVar13 + pkt->length + -4) >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)((int)ppuVar13 + pkt->length + -4) >> 8)" ( (binary_expression "(uint)((int)ppuVar13 + pkt->length + -4) >> 8" (call_expression "(uint)((int)ppuVar13 + pkt->length + -4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)ppuVar13 + pkt->length + -4)" ( (binary_expression "(int)ppuVar13 + pkt->length + -4" (binary_expression "(int)ppuVar13 + pkt->length" (cast_expression "(int)ppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (field_expression "pkt->length" identifier -> field_identifier)) + number_literal) ))) >> number_literal) )))) ;) (expression_statement "unaff_s5 = (int *)(((uint)ppuVar13 & 0xff) + pkt->length + -4);" (assignment_expression "unaff_s5 = (int *)(((uint)ppuVar13 & 0xff) + pkt->length + -4)" identifier = (cast_expression "(int *)(((uint)ppuVar13 & 0xff) + pkt->length + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((uint)ppuVar13 & 0xff) + pkt->length + -4)" ( (binary_expression "((uint)ppuVar13 & 0xff) + pkt->length + -4" (binary_expression "((uint)ppuVar13 & 0xff) + pkt->length" (parenthesized_expression "((uint)ppuVar13 & 0xff)" ( (binary_expression "(uint)ppuVar13 & 0xff" (cast_expression "(uint)ppuVar13" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) + (field_expression "pkt->length" identifier -> field_identifier)) + number_literal) )))) ;) (expression_statement "pkt->data[3] = (uchar)unaff_s5;" (assignment_expression "pkt->data[3] = (uchar)unaff_s5" (subscript_expression "pkt->data[3]" (field_expression "pkt->data" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(uchar)unaff_s5" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "psVar1 = ssh->cscipher;" (assignment_expression "psVar1 = ssh->cscipher" identifier = (field_expression "ssh->cscipher" identifier -> field_identifier)) ;) (if_statement "if (psVar1 == (ssh2_cipher *)0x0) {\n        psVar7 = ssh->csmac;\n        puVar9 = pkt->data;\n        if (psVar7 != (ssh_mac *)0x0) {\n          iVar4 = (int)ppuVar13 + pkt->length;\n          if (ssh->csmac_etm == 0) goto LAB_00033fb4;\nLAB_00034110:\n          p_Var16 = psVar7->generate;\nLAB_00034114:\n          (*p_Var16)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          puVar9 = pkt->data;\n        }\n      }\n      else {\n        puVar9 = pkt->data;\n        if ((psVar1->flags & 2) == 0) {\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\nLAB_000340ec:\n              (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9 + 4,iVar4 + -4);\n              puVar9 = pkt->data;\n              psVar7 = ssh->csmac;\n              iVar4 = (int)ppuVar13 + pkt->length;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (*psVar1->encrypt_length)(ssh->cs_cipher_ctx,puVar9,4,ssh->v2_outgoing_sequence);\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            puVar9 = pkt->data;\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\n              psVar1 = ssh->cscipher;\n              if (psVar1 != (ssh2_cipher *)0x0) goto LAB_000340ec;\n              p_Var16 = psVar7->generate;\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (*psVar7->generate)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          }\n          psVar1 = ssh->cscipher;\n          puVar9 = pkt->data;\n          if (psVar1 == (ssh2_cipher *)0x0) goto LAB_00033ff0;\n        }\n        (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9,(int)ppuVar13 + pkt->length);\n        puVar9 = pkt->data;\n      }" if (parenthesized_expression "(psVar1 == (ssh2_cipher *)0x0)" ( (binary_expression "psVar1 == (ssh2_cipher *)0x0" identifier == (cast_expression "(ssh2_cipher *)0x0" ( (type_descriptor "ssh2_cipher *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        psVar7 = ssh->csmac;\n        puVar9 = pkt->data;\n        if (psVar7 != (ssh_mac *)0x0) {\n          iVar4 = (int)ppuVar13 + pkt->length;\n          if (ssh->csmac_etm == 0) goto LAB_00033fb4;\nLAB_00034110:\n          p_Var16 = psVar7->generate;\nLAB_00034114:\n          (*p_Var16)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          puVar9 = pkt->data;\n        }\n      }" { (expression_statement "psVar7 = ssh->csmac;" (assignment_expression "psVar7 = ssh->csmac" identifier = (field_expression "ssh->csmac" identifier -> field_identifier)) ;) (expression_statement "puVar9 = pkt->data;" (assignment_expression "puVar9 = pkt->data" identifier = (field_expression "pkt->data" identifier -> field_identifier)) ;) (if_statement "if (psVar7 != (ssh_mac *)0x0) {\n          iVar4 = (int)ppuVar13 + pkt->length;\n          if (ssh->csmac_etm == 0) goto LAB_00033fb4;\nLAB_00034110:\n          p_Var16 = psVar7->generate;\nLAB_00034114:\n          (*p_Var16)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          puVar9 = pkt->data;\n        }" if (parenthesized_expression "(psVar7 != (ssh_mac *)0x0)" ( (binary_expression "psVar7 != (ssh_mac *)0x0" identifier != (cast_expression "(ssh_mac *)0x0" ( (type_descriptor "ssh_mac *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar4 = (int)ppuVar13 + pkt->length;\n          if (ssh->csmac_etm == 0) goto LAB_00033fb4;\nLAB_00034110:\n          p_Var16 = psVar7->generate;\nLAB_00034114:\n          (*p_Var16)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          puVar9 = pkt->data;\n        }" { (expression_statement "iVar4 = (int)ppuVar13 + pkt->length;" (assignment_expression "iVar4 = (int)ppuVar13 + pkt->length" identifier = (binary_expression "(int)ppuVar13 + pkt->length" (cast_expression "(int)ppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (field_expression "pkt->length" identifier -> field_identifier))) ;) (if_statement "if (ssh->csmac_etm == 0) goto LAB_00033fb4;" if (parenthesized_expression "(ssh->csmac_etm == 0)" ( (binary_expression "ssh->csmac_etm == 0" (field_expression "ssh->csmac_etm" identifier -> field_identifier) == number_literal) )) (goto_statement "goto LAB_00033fb4;" goto statement_identifier ;)) (labeled_statement "LAB_00034110:\n          p_Var16 = psVar7->generate;" statement_identifier : (expression_statement "p_Var16 = psVar7->generate;" (assignment_expression "p_Var16 = psVar7->generate" identifier = (field_expression "psVar7->generate" identifier -> field_identifier)) ;)) (labeled_statement "LAB_00034114:\n          (*p_Var16)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);" statement_identifier : (expression_statement "(*p_Var16)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);" (call_expression "(*p_Var16)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence)" (parenthesized_expression "(*p_Var16)" ( (pointer_expression "*p_Var16" * identifier) )) (argument_list "(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence)" ( (field_expression "ssh->cs_mac_ctx" identifier -> field_identifier) , identifier , identifier , (field_expression "ssh->v2_outgoing_sequence" identifier -> field_identifier) ))) ;)) (expression_statement "puVar9 = pkt->data;" (assignment_expression "puVar9 = pkt->data" identifier = (field_expression "pkt->data" identifier -> field_identifier)) ;) })) }) (else_clause "else {\n        puVar9 = pkt->data;\n        if ((psVar1->flags & 2) == 0) {\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\nLAB_000340ec:\n              (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9 + 4,iVar4 + -4);\n              puVar9 = pkt->data;\n              psVar7 = ssh->csmac;\n              iVar4 = (int)ppuVar13 + pkt->length;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (*psVar1->encrypt_length)(ssh->cs_cipher_ctx,puVar9,4,ssh->v2_outgoing_sequence);\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            puVar9 = pkt->data;\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\n              psVar1 = ssh->cscipher;\n              if (psVar1 != (ssh2_cipher *)0x0) goto LAB_000340ec;\n              p_Var16 = psVar7->generate;\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (*psVar7->generate)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          }\n          psVar1 = ssh->cscipher;\n          puVar9 = pkt->data;\n          if (psVar1 == (ssh2_cipher *)0x0) goto LAB_00033ff0;\n        }\n        (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9,(int)ppuVar13 + pkt->length);\n        puVar9 = pkt->data;\n      }" else (compound_statement "{\n        puVar9 = pkt->data;\n        if ((psVar1->flags & 2) == 0) {\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\nLAB_000340ec:\n              (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9 + 4,iVar4 + -4);\n              puVar9 = pkt->data;\n              psVar7 = ssh->csmac;\n              iVar4 = (int)ppuVar13 + pkt->length;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (*psVar1->encrypt_length)(ssh->cs_cipher_ctx,puVar9,4,ssh->v2_outgoing_sequence);\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            puVar9 = pkt->data;\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\n              psVar1 = ssh->cscipher;\n              if (psVar1 != (ssh2_cipher *)0x0) goto LAB_000340ec;\n              p_Var16 = psVar7->generate;\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (*psVar7->generate)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          }\n          psVar1 = ssh->cscipher;\n          puVar9 = pkt->data;\n          if (psVar1 == (ssh2_cipher *)0x0) goto LAB_00033ff0;\n        }\n        (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9,(int)ppuVar13 + pkt->length);\n        puVar9 = pkt->data;\n      }" { (expression_statement "puVar9 = pkt->data;" (assignment_expression "puVar9 = pkt->data" identifier = (field_expression "pkt->data" identifier -> field_identifier)) ;) (if_statement "if ((psVar1->flags & 2) == 0) {\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\nLAB_000340ec:\n              (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9 + 4,iVar4 + -4);\n              puVar9 = pkt->data;\n              psVar7 = ssh->csmac;\n              iVar4 = (int)ppuVar13 + pkt->length;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (*psVar1->encrypt_length)(ssh->cs_cipher_ctx,puVar9,4,ssh->v2_outgoing_sequence);\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            puVar9 = pkt->data;\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\n              psVar1 = ssh->cscipher;\n              if (psVar1 != (ssh2_cipher *)0x0) goto LAB_000340ec;\n              p_Var16 = psVar7->generate;\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (*psVar7->generate)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          }\n          psVar1 = ssh->cscipher;\n          puVar9 = pkt->data;\n          if (psVar1 == (ssh2_cipher *)0x0) goto LAB_00033ff0;\n        }" if (parenthesized_expression "((psVar1->flags & 2) == 0)" ( (binary_expression "(psVar1->flags & 2) == 0" (parenthesized_expression "(psVar1->flags & 2)" ( (binary_expression "psVar1->flags & 2" (field_expression "psVar1->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\nLAB_000340ec:\n              (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9 + 4,iVar4 + -4);\n              puVar9 = pkt->data;\n              psVar7 = ssh->csmac;\n              iVar4 = (int)ppuVar13 + pkt->length;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }" { (expression_statement "psVar7 = ssh->csmac;" (assignment_expression "psVar7 = ssh->csmac" identifier = (field_expression "ssh->csmac" identifier -> field_identifier)) ;) (if_statement "if (psVar7 != (ssh_mac *)0x0) {\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\nLAB_000340ec:\n              (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9 + 4,iVar4 + -4);\n              puVar9 = pkt->data;\n              psVar7 = ssh->csmac;\n              iVar4 = (int)ppuVar13 + pkt->length;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }" if (parenthesized_expression "(psVar7 != (ssh_mac *)0x0)" ( (binary_expression "psVar7 != (ssh_mac *)0x0" identifier != (cast_expression "(ssh_mac *)0x0" ( (type_descriptor "ssh_mac *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\nLAB_000340ec:\n              (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9 + 4,iVar4 + -4);\n              puVar9 = pkt->data;\n              psVar7 = ssh->csmac;\n              iVar4 = (int)ppuVar13 + pkt->length;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }" { (expression_statement "iVar4 = (int)ppuVar13 + pkt->length;" (assignment_expression "iVar4 = (int)ppuVar13 + pkt->length" identifier = (binary_expression "(int)ppuVar13 + pkt->length" (cast_expression "(int)ppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (field_expression "pkt->length" identifier -> field_identifier))) ;) (if_statement "if (ssh->csmac_etm != 0) {\nLAB_000340ec:\n              (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9 + 4,iVar4 + -4);\n              puVar9 = pkt->data;\n              psVar7 = ssh->csmac;\n              iVar4 = (int)ppuVar13 + pkt->length;\n              goto LAB_00034110;\n            }" if (parenthesized_expression "(ssh->csmac_etm != 0)" ( (binary_expression "ssh->csmac_etm != 0" (field_expression "ssh->csmac_etm" identifier -> field_identifier) != number_literal) )) (compound_statement "{\nLAB_000340ec:\n              (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9 + 4,iVar4 + -4);\n              puVar9 = pkt->data;\n              psVar7 = ssh->csmac;\n              iVar4 = (int)ppuVar13 + pkt->length;\n              goto LAB_00034110;\n            }" { (labeled_statement "LAB_000340ec:\n              (*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9 + 4,iVar4 + -4);" statement_identifier : (expression_statement "(*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9 + 4,iVar4 + -4);" (call_expression "(*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9 + 4,iVar4 + -4)" (parenthesized_expression "(*psVar1->encrypt)" ( (pointer_expression "*psVar1->encrypt" * (field_expression "psVar1->encrypt" identifier -> field_identifier)) )) (argument_list "(ssh->cs_cipher_ctx,puVar9 + 4,iVar4 + -4)" ( (field_expression "ssh->cs_cipher_ctx" identifier -> field_identifier) , (binary_expression "puVar9 + 4" identifier + number_literal) , (binary_expression "iVar4 + -4" identifier + number_literal) ))) ;)) (expression_statement "puVar9 = pkt->data;" (assignment_expression "puVar9 = pkt->data" identifier = (field_expression "pkt->data" identifier -> field_identifier)) ;) (expression_statement "psVar7 = ssh->csmac;" (assignment_expression "psVar7 = ssh->csmac" identifier = (field_expression "ssh->csmac" identifier -> field_identifier)) ;) (expression_statement "iVar4 = (int)ppuVar13 + pkt->length;" (assignment_expression "iVar4 = (int)ppuVar13 + pkt->length" identifier = (binary_expression "(int)ppuVar13 + pkt->length" (cast_expression "(int)ppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (field_expression "pkt->length" identifier -> field_identifier))) ;) (goto_statement "goto LAB_00034110;" goto statement_identifier ;) })) (goto_statement "goto LAB_00033fb4;" goto statement_identifier ;) })) }) (else_clause "else {\n          (*psVar1->encrypt_length)(ssh->cs_cipher_ctx,puVar9,4,ssh->v2_outgoing_sequence);\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            puVar9 = pkt->data;\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\n              psVar1 = ssh->cscipher;\n              if (psVar1 != (ssh2_cipher *)0x0) goto LAB_000340ec;\n              p_Var16 = psVar7->generate;\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (*psVar7->generate)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          }\n          psVar1 = ssh->cscipher;\n          puVar9 = pkt->data;\n          if (psVar1 == (ssh2_cipher *)0x0) goto LAB_00033ff0;\n        }" else (compound_statement "{\n          (*psVar1->encrypt_length)(ssh->cs_cipher_ctx,puVar9,4,ssh->v2_outgoing_sequence);\n          psVar7 = ssh->csmac;\n          if (psVar7 != (ssh_mac *)0x0) {\n            puVar9 = pkt->data;\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\n              psVar1 = ssh->cscipher;\n              if (psVar1 != (ssh2_cipher *)0x0) goto LAB_000340ec;\n              p_Var16 = psVar7->generate;\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (*psVar7->generate)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          }\n          psVar1 = ssh->cscipher;\n          puVar9 = pkt->data;\n          if (psVar1 == (ssh2_cipher *)0x0) goto LAB_00033ff0;\n        }" { (expression_statement "(*psVar1->encrypt_length)(ssh->cs_cipher_ctx,puVar9,4,ssh->v2_outgoing_sequence);" (call_expression "(*psVar1->encrypt_length)(ssh->cs_cipher_ctx,puVar9,4,ssh->v2_outgoing_sequence)" (parenthesized_expression "(*psVar1->encrypt_length)" ( (pointer_expression "*psVar1->encrypt_length" * (field_expression "psVar1->encrypt_length" identifier -> field_identifier)) )) (argument_list "(ssh->cs_cipher_ctx,puVar9,4,ssh->v2_outgoing_sequence)" ( (field_expression "ssh->cs_cipher_ctx" identifier -> field_identifier) , identifier , number_literal , (field_expression "ssh->v2_outgoing_sequence" identifier -> field_identifier) ))) ;) (expression_statement "psVar7 = ssh->csmac;" (assignment_expression "psVar7 = ssh->csmac" identifier = (field_expression "ssh->csmac" identifier -> field_identifier)) ;) (if_statement "if (psVar7 != (ssh_mac *)0x0) {\n            puVar9 = pkt->data;\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\n              psVar1 = ssh->cscipher;\n              if (psVar1 != (ssh2_cipher *)0x0) goto LAB_000340ec;\n              p_Var16 = psVar7->generate;\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (*psVar7->generate)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          }" if (parenthesized_expression "(psVar7 != (ssh_mac *)0x0)" ( (binary_expression "psVar7 != (ssh_mac *)0x0" identifier != (cast_expression "(ssh_mac *)0x0" ( (type_descriptor "ssh_mac *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            puVar9 = pkt->data;\n            iVar4 = (int)ppuVar13 + pkt->length;\n            if (ssh->csmac_etm != 0) {\n              psVar1 = ssh->cscipher;\n              if (psVar1 != (ssh2_cipher *)0x0) goto LAB_000340ec;\n              p_Var16 = psVar7->generate;\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (*psVar7->generate)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);\n          }" { (expression_statement "puVar9 = pkt->data;" (assignment_expression "puVar9 = pkt->data" identifier = (field_expression "pkt->data" identifier -> field_identifier)) ;) (expression_statement "iVar4 = (int)ppuVar13 + pkt->length;" (assignment_expression "iVar4 = (int)ppuVar13 + pkt->length" identifier = (binary_expression "(int)ppuVar13 + pkt->length" (cast_expression "(int)ppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (field_expression "pkt->length" identifier -> field_identifier))) ;) (if_statement "if (ssh->csmac_etm != 0) {\n              psVar1 = ssh->cscipher;\n              if (psVar1 != (ssh2_cipher *)0x0) goto LAB_000340ec;\n              p_Var16 = psVar7->generate;\n              goto LAB_00034114;\n            }" if (parenthesized_expression "(ssh->csmac_etm != 0)" ( (binary_expression "ssh->csmac_etm != 0" (field_expression "ssh->csmac_etm" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n              psVar1 = ssh->cscipher;\n              if (psVar1 != (ssh2_cipher *)0x0) goto LAB_000340ec;\n              p_Var16 = psVar7->generate;\n              goto LAB_00034114;\n            }" { (expression_statement "psVar1 = ssh->cscipher;" (assignment_expression "psVar1 = ssh->cscipher" identifier = (field_expression "ssh->cscipher" identifier -> field_identifier)) ;) (if_statement "if (psVar1 != (ssh2_cipher *)0x0) goto LAB_000340ec;" if (parenthesized_expression "(psVar1 != (ssh2_cipher *)0x0)" ( (binary_expression "psVar1 != (ssh2_cipher *)0x0" identifier != (cast_expression "(ssh2_cipher *)0x0" ( (type_descriptor "ssh2_cipher *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000340ec;" goto statement_identifier ;)) (expression_statement "p_Var16 = psVar7->generate;" (assignment_expression "p_Var16 = psVar7->generate" identifier = (field_expression "psVar7->generate" identifier -> field_identifier)) ;) (goto_statement "goto LAB_00034114;" goto statement_identifier ;) })) (labeled_statement "LAB_00033fb4:\n            (*psVar7->generate)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);" statement_identifier : (expression_statement "(*psVar7->generate)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence);" (call_expression "(*psVar7->generate)(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence)" (parenthesized_expression "(*psVar7->generate)" ( (pointer_expression "*psVar7->generate" * (field_expression "psVar7->generate" identifier -> field_identifier)) )) (argument_list "(ssh->cs_mac_ctx,puVar9,iVar4,ssh->v2_outgoing_sequence)" ( (field_expression "ssh->cs_mac_ctx" identifier -> field_identifier) , identifier , identifier , (field_expression "ssh->v2_outgoing_sequence" identifier -> field_identifier) ))) ;)) })) (expression_statement "psVar1 = ssh->cscipher;" (assignment_expression "psVar1 = ssh->cscipher" identifier = (field_expression "ssh->cscipher" identifier -> field_identifier)) ;) (expression_statement "puVar9 = pkt->data;" (assignment_expression "puVar9 = pkt->data" identifier = (field_expression "pkt->data" identifier -> field_identifier)) ;) (if_statement "if (psVar1 == (ssh2_cipher *)0x0) goto LAB_00033ff0;" if (parenthesized_expression "(psVar1 == (ssh2_cipher *)0x0)" ( (binary_expression "psVar1 == (ssh2_cipher *)0x0" identifier == (cast_expression "(ssh2_cipher *)0x0" ( (type_descriptor "ssh2_cipher *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00033ff0;" goto statement_identifier ;)) }))) (expression_statement "(*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9,(int)ppuVar13 + pkt->length);" (call_expression "(*psVar1->encrypt)(ssh->cs_cipher_ctx,puVar9,(int)ppuVar13 + pkt->length)" (parenthesized_expression "(*psVar1->encrypt)" ( (pointer_expression "*psVar1->encrypt" * (field_expression "psVar1->encrypt" identifier -> field_identifier)) )) (argument_list "(ssh->cs_cipher_ctx,puVar9,(int)ppuVar13 + pkt->length)" ( (field_expression "ssh->cs_cipher_ctx" identifier -> field_identifier) , identifier , (binary_expression "(int)ppuVar13 + pkt->length" (cast_expression "(int)ppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (field_expression "pkt->length" identifier -> field_identifier)) ))) ;) (expression_statement "puVar9 = pkt->data;" (assignment_expression "puVar9 = pkt->data" identifier = (field_expression "pkt->data" identifier -> field_identifier)) ;) }))) (labeled_statement "LAB_00033ff0:\n      iVar10 = (int)ppuVar13 + pkt->length;" statement_identifier : (expression_statement "iVar10 = (int)ppuVar13 + pkt->length;" (assignment_expression "iVar10 = (int)ppuVar13 + pkt->length" identifier = (binary_expression "(int)ppuVar13 + pkt->length" (cast_expression "(int)ppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (field_expression "pkt->length" identifier -> field_identifier))) ;)) (expression_statement "iVar4 = iVar10 + (int)unaff_s3;" (assignment_expression "iVar4 = iVar10 + (int)unaff_s3" identifier = (binary_expression "iVar10 + (int)unaff_s3" identifier + (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "ssh->v2_outgoing_sequence = ssh->v2_outgoing_sequence + 1;" (assignment_expression "ssh->v2_outgoing_sequence = ssh->v2_outgoing_sequence + 1" (field_expression "ssh->v2_outgoing_sequence" identifier -> field_identifier) = (binary_expression "ssh->v2_outgoing_sequence + 1" (field_expression "ssh->v2_outgoing_sequence" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pkt->encrypted_len = iVar10;" (assignment_expression "pkt->encrypted_len = iVar10" (field_expression "pkt->encrypted_len" identifier -> field_identifier) = identifier) ;) (expression_statement "pkt->body = puVar9;" (assignment_expression "pkt->body = puVar9" (field_expression "pkt->body" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n      pkt->data[1] = (uchar)((uint)(puVar9 + -5) >> 0x18);\n      pkt->data[2] = (uchar)((uint)(pkt->length + -5) >> 0x10);\n      pkt->data[3] = (uchar)((uint)(pkt->length + -5) >> 8);\n      pkt->data[4] = (char)pkt->length + 0xfb;\n      uVar5 = ssh->v2_outgoing_sequence;\n      iVar4 = pkt->length + -1;\n      pkt->body = pkt->data + 1;\n      ssh->v2_outgoing_sequence = uVar5 + 1;\n    }" else (compound_statement "{\n      pkt->data[1] = (uchar)((uint)(puVar9 + -5) >> 0x18);\n      pkt->data[2] = (uchar)((uint)(pkt->length + -5) >> 0x10);\n      pkt->data[3] = (uchar)((uint)(pkt->length + -5) >> 8);\n      pkt->data[4] = (char)pkt->length + 0xfb;\n      uVar5 = ssh->v2_outgoing_sequence;\n      iVar4 = pkt->length + -1;\n      pkt->body = pkt->data + 1;\n      ssh->v2_outgoing_sequence = uVar5 + 1;\n    }" { (expression_statement "pkt->data[1] = (uchar)((uint)(puVar9 + -5) >> 0x18);" (assignment_expression "pkt->data[1] = (uchar)((uint)(puVar9 + -5) >> 0x18)" (subscript_expression "pkt->data[1]" (field_expression "pkt->data" identifier -> field_identifier) [ number_literal ]) = (call_expression "(uchar)((uint)(puVar9 + -5) >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)(puVar9 + -5) >> 0x18)" ( (binary_expression "(uint)(puVar9 + -5) >> 0x18" (call_expression "(uint)(puVar9 + -5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar9 + -5)" ( (binary_expression "puVar9 + -5" identifier + number_literal) ))) >> number_literal) )))) ;) (expression_statement "pkt->data[2] = (uchar)((uint)(pkt->length + -5) >> 0x10);" (assignment_expression "pkt->data[2] = (uchar)((uint)(pkt->length + -5) >> 0x10)" (subscript_expression "pkt->data[2]" (field_expression "pkt->data" identifier -> field_identifier) [ number_literal ]) = (call_expression "(uchar)((uint)(pkt->length + -5) >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)(pkt->length + -5) >> 0x10)" ( (binary_expression "(uint)(pkt->length + -5) >> 0x10" (call_expression "(uint)(pkt->length + -5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pkt->length + -5)" ( (binary_expression "pkt->length + -5" (field_expression "pkt->length" identifier -> field_identifier) + number_literal) ))) >> number_literal) )))) ;) (expression_statement "pkt->data[3] = (uchar)((uint)(pkt->length + -5) >> 8);" (assignment_expression "pkt->data[3] = (uchar)((uint)(pkt->length + -5) >> 8)" (subscript_expression "pkt->data[3]" (field_expression "pkt->data" identifier -> field_identifier) [ number_literal ]) = (call_expression "(uchar)((uint)(pkt->length + -5) >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)(pkt->length + -5) >> 8)" ( (binary_expression "(uint)(pkt->length + -5) >> 8" (call_expression "(uint)(pkt->length + -5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pkt->length + -5)" ( (binary_expression "pkt->length + -5" (field_expression "pkt->length" identifier -> field_identifier) + number_literal) ))) >> number_literal) )))) ;) (expression_statement "pkt->data[4] = (char)pkt->length + 0xfb;" (assignment_expression "pkt->data[4] = (char)pkt->length + 0xfb" (subscript_expression "pkt->data[4]" (field_expression "pkt->data" identifier -> field_identifier) [ number_literal ]) = (binary_expression "(char)pkt->length + 0xfb" (cast_expression "(char)pkt->length" ( (type_descriptor "char" primitive_type) ) (field_expression "pkt->length" identifier -> field_identifier)) + number_literal)) ;) (expression_statement "uVar5 = ssh->v2_outgoing_sequence;" (assignment_expression "uVar5 = ssh->v2_outgoing_sequence" identifier = (field_expression "ssh->v2_outgoing_sequence" identifier -> field_identifier)) ;) (expression_statement "iVar4 = pkt->length + -1;" (assignment_expression "iVar4 = pkt->length + -1" identifier = (binary_expression "pkt->length + -1" (field_expression "pkt->length" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pkt->body = pkt->data + 1;" (assignment_expression "pkt->body = pkt->data + 1" (field_expression "pkt->body" identifier -> field_identifier) = (binary_expression "pkt->data + 1" (field_expression "pkt->data" identifier -> field_identifier) + number_literal)) ;) (expression_statement "ssh->v2_outgoing_sequence = uVar5 + 1;" (assignment_expression "ssh->v2_outgoing_sequence = uVar5 + 1" (field_expression "ssh->v2_outgoing_sequence" identifier -> field_identifier) = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) }))) (if_statement "if (iVar3 == *piVar15) {\n      return iVar4;\n    }" if (parenthesized_expression "(iVar3 == *piVar15)" ( (binary_expression "iVar3 == *piVar15" identifier == (pointer_expression "*piVar15" * identifier)) )) (compound_statement "{\n      return iVar4;\n    }" { (return_statement "return iVar4;" return identifier ;) })) (expression_statement "iVar4 = iVar3;" (assignment_expression "iVar4 = iVar3" identifier = identifier) ;) (expression_statement "(**(code **)(in_t9 + 0x7a040))();" (call_expression "(**(code **)(in_t9 + 0x7a040))()" (parenthesized_expression "(**(code **)(in_t9 + 0x7a040))" ( (pointer_expression "**(code **)(in_t9 + 0x7a040)" * (pointer_expression "*(code **)(in_t9 + 0x7a040)" * (cast_expression "(code **)(in_t9 + 0x7a040)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x7a040)" ( (binary_expression "in_t9 + 0x7a040" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_00034520:\n    pkt->savedpos = iVar4;" statement_identifier : (expression_statement "pkt->savedpos = iVar4;" (assignment_expression "pkt->savedpos = iVar4" (field_expression "pkt->savedpos" identifier -> field_identifier) = identifier) ;)) (expression_statement "ppuVar13 = unaff_s3;" (assignment_expression "ppuVar13 = unaff_s3" identifier = identifier) ;) (labeled_statement "LAB_0003420c:\n    ssh_pkt_getstring(pkt,(char **)ppuVar13,unaff_s5);" statement_identifier : (expression_statement "ssh_pkt_getstring(pkt,(char **)ppuVar13,unaff_s5);" (call_expression "ssh_pkt_getstring(pkt,(char **)ppuVar13,unaff_s5)" identifier (argument_list "(pkt,(char **)ppuVar13,unaff_s5)" ( identifier , (cast_expression "(char **)ppuVar13" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) , identifier ))) ;)) (expression_statement "lVar6 = pkt->savedpos;" (assignment_expression "lVar6 = pkt->savedpos" identifier = (field_expression "pkt->savedpos" identifier -> field_identifier)) ;) (expression_statement "unaff_s3 = &puStack_28 + (int)ppuVar11 * 3;" (assignment_expression "unaff_s3 = &puStack_28 + (int)ppuVar11 * 3" identifier = (binary_expression "&puStack_28 + (int)ppuVar11 * 3" (pointer_expression "&puStack_28" & identifier) + (binary_expression "(int)ppuVar11 * 3" (cast_expression "(int)ppuVar11" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal))) ;) (expression_statement "blanks[(int)ppuVar11].type = 1;" (assignment_expression "blanks[(int)ppuVar11].type = 1" (field_expression "blanks[(int)ppuVar11].type" (subscript_expression "blanks[(int)ppuVar11]" identifier [ (cast_expression "(int)ppuVar11" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier) = number_literal) ;) (expression_statement "blanks[(int)ppuVar11].offset = lVar6;" (assignment_expression "blanks[(int)ppuVar11].offset = lVar6" (field_expression "blanks[(int)ppuVar11].offset" (subscript_expression "blanks[(int)ppuVar11]" identifier [ (cast_expression "(int)ppuVar11" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier) = identifier) ;) (expression_statement "ssh_pkt_getstring(pkt,(char **)ppuVar13,unaff_s5);" (call_expression "ssh_pkt_getstring(pkt,(char **)ppuVar13,unaff_s5)" identifier (argument_list "(pkt,(char **)ppuVar13,unaff_s5)" ( identifier , (cast_expression "(char **)ppuVar13" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) , identifier ))) ;) (if_statement "if (newpayload == (uchar *)0x0) goto LAB_00033d1c;" if (parenthesized_expression "(newpayload == (uchar *)0x0)" ( (binary_expression "newpayload == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00033d1c;" goto statement_identifier ;)) (expression_statement "iVar10 = pkt->length;" (assignment_expression "iVar10 = pkt->length" identifier = (field_expression "pkt->length" identifier -> field_identifier)) ;) (expression_statement "blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset;" (assignment_expression "blanks[(int)ppuVar11].len = pkt->savedpos - blanks[(int)ppuVar11].offset" (field_expression "blanks[(int)ppuVar11].len" (subscript_expression "blanks[(int)ppuVar11]" identifier [ (cast_expression "(int)ppuVar11" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier) = (binary_expression "pkt->savedpos - blanks[(int)ppuVar11].offset" (field_expression "pkt->savedpos" identifier -> field_identifier) - (field_expression "blanks[(int)ppuVar11].offset" (subscript_expression "blanks[(int)ppuVar11]" identifier [ (cast_expression "(int)ppuVar11" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier))) ;) (expression_statement "ppuVar13 = (uchar **)((int)ppuVar11 + 1);" (assignment_expression "ppuVar13 = (uchar **)((int)ppuVar11 + 1)" identifier = (cast_expression "(uchar **)((int)ppuVar11 + 1)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar11 + 1)" ( (binary_expression "(int)ppuVar11 + 1" (cast_expression "(int)ppuVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit "int FUN_00033c64(int param_1,int *param_2)\n\n{\n  undefined *puVar1;\n  undefined1 uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  int *unaff_s3;\n  int *piVar11;\n  int *unaff_s5;\n  code *pcVar12;\n  int local_64;\n  int local_60;\n  int local_5c [12];\n  int local_2c;\n  int iStack_28;\n  \n  puVar1 = PTR___stack_chk_guard_000adcd4;\n  iVar5 = *param_2;\n  local_2c = *(int *)PTR___stack_chk_guard_000adcd4;\n  if (*(int *)(param_1 + 0x18) == 0) goto LAB_00033da4;\n  uVar7 = *(uint *)(param_1 + 0x24c);\n  iVar3 = param_2[2];\n  param_2[6] = 0;\n  *param_2 = iVar5 - (param_2[5] - param_2[4]);\n  if ((uVar7 != 0) && (uVar7 = 0, iVar3 - 0x5eU < 2)) {\n    FUN_0002f068(param_2);\n    if (param_2[2] == 0x5f) {\n      FUN_0002f068();\n    }\n    local_5c[2] = 2;\n    local_5c[0] = param_2[6] + 4;\n    FUN_0002fb84(param_2,&local_64,&local_60);\n    if (local_64 == 0) {\n      iVar3 = param_2[2];\n      uVar7 = 0;\n    }\n    else {\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }\n  }\n  if (iVar3 == 0x32) {\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      unaff_s5 = &local_60;\n      unaff_s3 = &local_64;\n      param_2[6] = 0;\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }\n  if ((*(int *)(param_1 + 0x188) == 4) && (iVar3 == 0x3d)) {\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      param_2[6] = 0;\n      unaff_s5 = &local_60;\n      FUN_0002f068(param_2);\n      local_5c[uVar7 * 3] = param_2[6];\n      local_5c[uVar7 * 3 + 2] = 1;\n      do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n      unaff_s3 = &local_64;\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }\n  if ((iVar3 == 0x62) && (iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0))\n  {\n    param_2[6] = 0;\n    unaff_s5 = &local_60;\n    unaff_s3 = &local_64;\n    FUN_0002f068(param_2);\n    FUN_0002fb84();\n    if (local_60 == 7) {\n      iVar3 = param_2[6];\n      iVar5 = iVar3 + 1;\n      piVar11 = unaff_s3;\n      if (*param_2 - iVar3 < 1) goto LAB_0003420c;\n      if (*param_2 - iVar5 < 1) goto LAB_00034520;\n      param_2[6] = iVar3 + 2;\n      goto LAB_0003420c;\n    }\n  }\nLAB_00033d20:\n  do {\n    FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5));\n    log_packet(*(undefined4 *)(param_1 + 0x18),1);\n    iVar5 = (param_2[5] - param_2[4]) + *param_2;\n    *param_2 = iVar5;\nLAB_00033da4:\n    uVar7 = *(uint *)(param_1 + 0xec);\n    if (uVar7 == 0) {\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }\n    else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }\n    if (local_2c == *(int *)puVar1) {\n      return iVar5;\n    }\n    iVar5 = local_2c;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\nLAB_00034520:\n    param_2[6] = iVar5;\n    piVar11 = unaff_s3;\nLAB_0003420c:\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    iVar5 = param_2[6];\n    unaff_s3 = &iStack_28 + uVar7 * 3;\n    local_5c[uVar7 * 3 + 2] = 1;\n    local_5c[uVar7 * 3] = iVar5;\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    if (local_64 != 0) {\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }\n  } while( true );\n}\n\n" (function_definition "int FUN_00033c64(int param_1,int *param_2)\n\n{\n  undefined *puVar1;\n  undefined1 uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  int *unaff_s3;\n  int *piVar11;\n  int *unaff_s5;\n  code *pcVar12;\n  int local_64;\n  int local_60;\n  int local_5c [12];\n  int local_2c;\n  int iStack_28;\n  \n  puVar1 = PTR___stack_chk_guard_000adcd4;\n  iVar5 = *param_2;\n  local_2c = *(int *)PTR___stack_chk_guard_000adcd4;\n  if (*(int *)(param_1 + 0x18) == 0) goto LAB_00033da4;\n  uVar7 = *(uint *)(param_1 + 0x24c);\n  iVar3 = param_2[2];\n  param_2[6] = 0;\n  *param_2 = iVar5 - (param_2[5] - param_2[4]);\n  if ((uVar7 != 0) && (uVar7 = 0, iVar3 - 0x5eU < 2)) {\n    FUN_0002f068(param_2);\n    if (param_2[2] == 0x5f) {\n      FUN_0002f068();\n    }\n    local_5c[2] = 2;\n    local_5c[0] = param_2[6] + 4;\n    FUN_0002fb84(param_2,&local_64,&local_60);\n    if (local_64 == 0) {\n      iVar3 = param_2[2];\n      uVar7 = 0;\n    }\n    else {\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }\n  }\n  if (iVar3 == 0x32) {\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      unaff_s5 = &local_60;\n      unaff_s3 = &local_64;\n      param_2[6] = 0;\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }\n  if ((*(int *)(param_1 + 0x188) == 4) && (iVar3 == 0x3d)) {\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      param_2[6] = 0;\n      unaff_s5 = &local_60;\n      FUN_0002f068(param_2);\n      local_5c[uVar7 * 3] = param_2[6];\n      local_5c[uVar7 * 3 + 2] = 1;\n      do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n      unaff_s3 = &local_64;\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }\n  if ((iVar3 == 0x62) && (iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0))\n  {\n    param_2[6] = 0;\n    unaff_s5 = &local_60;\n    unaff_s3 = &local_64;\n    FUN_0002f068(param_2);\n    FUN_0002fb84();\n    if (local_60 == 7) {\n      iVar3 = param_2[6];\n      iVar5 = iVar3 + 1;\n      piVar11 = unaff_s3;\n      if (*param_2 - iVar3 < 1) goto LAB_0003420c;\n      if (*param_2 - iVar5 < 1) goto LAB_00034520;\n      param_2[6] = iVar3 + 2;\n      goto LAB_0003420c;\n    }\n  }\nLAB_00033d20:\n  do {\n    FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5));\n    log_packet(*(undefined4 *)(param_1 + 0x18),1);\n    iVar5 = (param_2[5] - param_2[4]) + *param_2;\n    *param_2 = iVar5;\nLAB_00033da4:\n    uVar7 = *(uint *)(param_1 + 0xec);\n    if (uVar7 == 0) {\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }\n    else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }\n    if (local_2c == *(int *)puVar1) {\n      return iVar5;\n    }\n    iVar5 = local_2c;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\nLAB_00034520:\n    param_2[6] = iVar5;\n    piVar11 = unaff_s3;\nLAB_0003420c:\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    iVar5 = param_2[6];\n    unaff_s3 = &iStack_28 + uVar7 * 3;\n    local_5c[uVar7 * 3 + 2] = 1;\n    local_5c[uVar7 * 3] = iVar5;\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    if (local_64 != 0) {\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_00033c64(int param_1,int *param_2)" identifier (parameter_list "(int param_1,int *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined1 uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  int *unaff_s3;\n  int *piVar11;\n  int *unaff_s5;\n  code *pcVar12;\n  int local_64;\n  int local_60;\n  int local_5c [12];\n  int local_2c;\n  int iStack_28;\n  \n  puVar1 = PTR___stack_chk_guard_000adcd4;\n  iVar5 = *param_2;\n  local_2c = *(int *)PTR___stack_chk_guard_000adcd4;\n  if (*(int *)(param_1 + 0x18) == 0) goto LAB_00033da4;\n  uVar7 = *(uint *)(param_1 + 0x24c);\n  iVar3 = param_2[2];\n  param_2[6] = 0;\n  *param_2 = iVar5 - (param_2[5] - param_2[4]);\n  if ((uVar7 != 0) && (uVar7 = 0, iVar3 - 0x5eU < 2)) {\n    FUN_0002f068(param_2);\n    if (param_2[2] == 0x5f) {\n      FUN_0002f068();\n    }\n    local_5c[2] = 2;\n    local_5c[0] = param_2[6] + 4;\n    FUN_0002fb84(param_2,&local_64,&local_60);\n    if (local_64 == 0) {\n      iVar3 = param_2[2];\n      uVar7 = 0;\n    }\n    else {\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }\n  }\n  if (iVar3 == 0x32) {\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      unaff_s5 = &local_60;\n      unaff_s3 = &local_64;\n      param_2[6] = 0;\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }\n  if ((*(int *)(param_1 + 0x188) == 4) && (iVar3 == 0x3d)) {\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      param_2[6] = 0;\n      unaff_s5 = &local_60;\n      FUN_0002f068(param_2);\n      local_5c[uVar7 * 3] = param_2[6];\n      local_5c[uVar7 * 3 + 2] = 1;\n      do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n      unaff_s3 = &local_64;\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }\n  if ((iVar3 == 0x62) && (iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0))\n  {\n    param_2[6] = 0;\n    unaff_s5 = &local_60;\n    unaff_s3 = &local_64;\n    FUN_0002f068(param_2);\n    FUN_0002fb84();\n    if (local_60 == 7) {\n      iVar3 = param_2[6];\n      iVar5 = iVar3 + 1;\n      piVar11 = unaff_s3;\n      if (*param_2 - iVar3 < 1) goto LAB_0003420c;\n      if (*param_2 - iVar5 < 1) goto LAB_00034520;\n      param_2[6] = iVar3 + 2;\n      goto LAB_0003420c;\n    }\n  }\nLAB_00033d20:\n  do {\n    FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5));\n    log_packet(*(undefined4 *)(param_1 + 0x18),1);\n    iVar5 = (param_2[5] - param_2[4]) + *param_2;\n    *param_2 = iVar5;\nLAB_00033da4:\n    uVar7 = *(uint *)(param_1 + 0xec);\n    if (uVar7 == 0) {\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }\n    else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }\n    if (local_2c == *(int *)puVar1) {\n      return iVar5;\n    }\n    iVar5 = local_2c;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\nLAB_00034520:\n    param_2[6] = iVar5;\n    piVar11 = unaff_s3;\nLAB_0003420c:\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    iVar5 = param_2[6];\n    unaff_s3 = &iStack_28 + uVar7 * 3;\n    local_5c[uVar7 * 3 + 2] = 1;\n    local_5c[uVar7 * 3] = iVar5;\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    if (local_64 != 0) {\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }\n  } while( true );\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined1 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int *unaff_s3;" primitive_type (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "int *unaff_s5;" primitive_type (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "code *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "int local_64;" primitive_type identifier ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "int local_5c [12];" primitive_type (array_declarator "local_5c [12]" identifier [ number_literal ]) ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int iStack_28;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_000adcd4;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000adcd4" identifier = identifier) ;) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_000adcd4;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_000adcd4" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000adcd4" * (cast_expression "(int *)PTR___stack_chk_guard_000adcd4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (*(int *)(param_1 + 0x18) == 0) goto LAB_00033da4;" if (parenthesized_expression "(*(int *)(param_1 + 0x18) == 0)" ( (binary_expression "*(int *)(param_1 + 0x18) == 0" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00033da4;" goto statement_identifier ;)) (expression_statement "uVar7 = *(uint *)(param_1 + 0x24c);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0x24c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x24c)" * (cast_expression "(uint *)(param_1 + 0x24c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24c)" ( (binary_expression "param_1 + 0x24c" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = param_2[2];" (assignment_expression "iVar3 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "param_2[6] = 0;" (assignment_expression "param_2[6] = 0" (subscript_expression "param_2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_2 = iVar5 - (param_2[5] - param_2[4]);" (assignment_expression "*param_2 = iVar5 - (param_2[5] - param_2[4])" (pointer_expression "*param_2" * identifier) = (binary_expression "iVar5 - (param_2[5] - param_2[4])" identifier - (parenthesized_expression "(param_2[5] - param_2[4])" ( (binary_expression "param_2[5] - param_2[4]" (subscript_expression "param_2[5]" identifier [ number_literal ]) - (subscript_expression "param_2[4]" identifier [ number_literal ])) )))) ;) (if_statement "if ((uVar7 != 0) && (uVar7 = 0, iVar3 - 0x5eU < 2)) {\n    FUN_0002f068(param_2);\n    if (param_2[2] == 0x5f) {\n      FUN_0002f068();\n    }\n    local_5c[2] = 2;\n    local_5c[0] = param_2[6] + 4;\n    FUN_0002fb84(param_2,&local_64,&local_60);\n    if (local_64 == 0) {\n      iVar3 = param_2[2];\n      uVar7 = 0;\n    }\n    else {\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }\n  }" if (parenthesized_expression "((uVar7 != 0) && (uVar7 = 0, iVar3 - 0x5eU < 2))" ( (binary_expression "(uVar7 != 0) && (uVar7 = 0, iVar3 - 0x5eU < 2)" (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar7 = 0, iVar3 - 0x5eU < 2)" ( (comma_expression "uVar7 = 0, iVar3 - 0x5eU < 2" (assignment_expression "uVar7 = 0" identifier = number_literal) , (binary_expression "iVar3 - 0x5eU < 2" (binary_expression "iVar3 - 0x5eU" identifier - number_literal) < number_literal)) ))) )) (compound_statement "{\n    FUN_0002f068(param_2);\n    if (param_2[2] == 0x5f) {\n      FUN_0002f068();\n    }\n    local_5c[2] = 2;\n    local_5c[0] = param_2[6] + 4;\n    FUN_0002fb84(param_2,&local_64,&local_60);\n    if (local_64 == 0) {\n      iVar3 = param_2[2];\n      uVar7 = 0;\n    }\n    else {\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }\n  }" { (expression_statement "FUN_0002f068(param_2);" (call_expression "FUN_0002f068(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) (if_statement "if (param_2[2] == 0x5f) {\n      FUN_0002f068();\n    }" if (parenthesized_expression "(param_2[2] == 0x5f)" ( (binary_expression "param_2[2] == 0x5f" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      FUN_0002f068();\n    }" { (expression_statement "FUN_0002f068();" (call_expression "FUN_0002f068()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_5c[2] = 2;" (assignment_expression "local_5c[2] = 2" (subscript_expression "local_5c[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_5c[0] = param_2[6] + 4;" (assignment_expression "local_5c[0] = param_2[6] + 4" (subscript_expression "local_5c[0]" identifier [ number_literal ]) = (binary_expression "param_2[6] + 4" (subscript_expression "param_2[6]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "FUN_0002fb84(param_2,&local_64,&local_60);" (call_expression "FUN_0002fb84(param_2,&local_64,&local_60)" identifier (argument_list "(param_2,&local_64,&local_60)" ( identifier , (pointer_expression "&local_64" & identifier) , (pointer_expression "&local_60" & identifier) ))) ;) (if_statement "if (local_64 == 0) {\n      iVar3 = param_2[2];\n      uVar7 = 0;\n    }\n    else {\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }" if (parenthesized_expression "(local_64 == 0)" ( (binary_expression "local_64 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar3 = param_2[2];\n      uVar7 = 0;\n    }" { (expression_statement "iVar3 = param_2[2];" (assignment_expression "iVar3 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }" else (compound_statement "{\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }" { (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) (expression_statement "iVar3 = param_2[2];" (assignment_expression "iVar3 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) }))) })) (if_statement "if (iVar3 == 0x32) {\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      unaff_s5 = &local_60;\n      unaff_s3 = &local_64;\n      param_2[6] = 0;\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }" if (parenthesized_expression "(iVar3 == 0x32)" ( (binary_expression "iVar3 == 0x32" identifier == number_literal) )) (compound_statement "{\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      unaff_s5 = &local_60;\n      unaff_s3 = &local_64;\n      param_2[6] = 0;\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }" { (expression_statement "iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);" (assignment_expression "iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b)" identifier = (call_expression "conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x248),0x7b)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x248)" * (cast_expression "(undefined4 *)(param_1 + 0x248)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (iVar5 != 0) {\n      unaff_s5 = &local_60;\n      unaff_s3 = &local_64;\n      param_2[6] = 0;\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_00033d20;\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      unaff_s5 = &local_60;\n      unaff_s3 = &local_64;\n      param_2[6] = 0;\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_00033d20;\n    }" { (expression_statement "unaff_s5 = &local_60;" (assignment_expression "unaff_s5 = &local_60" identifier = (pointer_expression "&local_60" & identifier)) ;) (expression_statement "unaff_s3 = &local_64;" (assignment_expression "unaff_s3 = &local_64" identifier = (pointer_expression "&local_64" & identifier)) ;) (expression_statement "param_2[6] = 0;" (assignment_expression "param_2[6] = 0" (subscript_expression "param_2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_0002fb84(param_2,unaff_s3,unaff_s5);" (call_expression "FUN_0002fb84(param_2,unaff_s3,unaff_s5)" identifier (argument_list "(param_2,unaff_s3,unaff_s5)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_0002fb84(param_2,unaff_s3,unaff_s5);" (call_expression "FUN_0002fb84(param_2,unaff_s3,unaff_s5)" identifier (argument_list "(param_2,unaff_s3,unaff_s5)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_0002fb84(param_2,unaff_s3,unaff_s5);" (call_expression "FUN_0002fb84(param_2,unaff_s3,unaff_s5)" identifier (argument_list "(param_2,unaff_s3,unaff_s5)" ( identifier , identifier , identifier ))) ;) (if_statement "if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }" if (parenthesized_expression "(local_60 == 8)" ( (binary_expression "local_60 == 8" identifier == number_literal) )) (compound_statement "{\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }" { (expression_statement "iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);" (assignment_expression "iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8)" identifier = (call_expression "(*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8)" (parenthesized_expression "(*(code *)PTR_memcmp_000adcb8)" ( (pointer_expression "*(code *)PTR_memcmp_000adcb8" * (cast_expression "(code *)PTR_memcmp_000adcb8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8)" ( identifier , (binary_expression "PTR_DAT_000ad2c8 + -0x1d5c" identifier + number_literal) , number_literal )))) ;) (if_statement "if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }" { (expression_statement "iVar5 = param_2[6];" (assignment_expression "iVar5 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (if_statement "if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }" if (parenthesized_expression "(0 < *param_2 - iVar5)" ( (binary_expression "0 < *param_2 - iVar5" number_literal < (binary_expression "*param_2 - iVar5" (pointer_expression "*param_2" * identifier) - identifier)) )) (compound_statement "{\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }" { (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "param_2[6] = iVar5;" (assignment_expression "param_2[6] = iVar5" (subscript_expression "param_2[6]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "local_5c[uVar7 * 3] = iVar5;" (assignment_expression "local_5c[uVar7 * 3] = iVar5" (subscript_expression "local_5c[uVar7 * 3]" identifier [ (binary_expression "uVar7 * 3" identifier * number_literal) ]) = identifier) ;) (expression_statement "local_5c[uVar7 * 3 + 2] = 1;" (assignment_expression "local_5c[uVar7 * 3 + 2] = 1" (subscript_expression "local_5c[uVar7 * 3 + 2]" identifier [ (binary_expression "uVar7 * 3 + 2" (binary_expression "uVar7 * 3" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "FUN_0002fb84(param_2,unaff_s3,unaff_s5);" (call_expression "FUN_0002fb84(param_2,unaff_s3,unaff_s5)" identifier (argument_list "(param_2,unaff_s3,unaff_s5)" ( identifier , identifier , identifier ))) ;) (if_statement "if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }" if (parenthesized_expression "(local_64 != 0)" ( (binary_expression "local_64 != 0" identifier != number_literal) )) (compound_statement "{\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }" { (expression_statement "piVar11 = (int *)(uVar7 + 1);" (assignment_expression "piVar11 = (int *)(uVar7 + 1)" identifier = (cast_expression "(int *)(uVar7 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 1)" ( (binary_expression "uVar7 + 1" identifier + number_literal) )))) ;) (expression_statement "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];" (assignment_expression "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3]" (subscript_expression "local_5c[uVar7 * 3 + 1]" identifier [ (binary_expression "uVar7 * 3 + 1" (binary_expression "uVar7 * 3" identifier * number_literal) + number_literal) ]) = (binary_expression "param_2[6] - local_5c[uVar7 * 3]" (subscript_expression "param_2[6]" identifier [ number_literal ]) - (subscript_expression "local_5c[uVar7 * 3]" identifier [ (binary_expression "uVar7 * 3" identifier * number_literal) ]))) ;) (expression_statement "FUN_0002fb84(param_2,unaff_s3,unaff_s5);" (call_expression "FUN_0002fb84(param_2,unaff_s3,unaff_s5)" identifier (argument_list "(param_2,unaff_s3,unaff_s5)" ( identifier , identifier , identifier ))) ;) (expression_statement "unaff_s3 = piVar11;" (assignment_expression "unaff_s3 = piVar11" identifier = identifier) ;) (if_statement "if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }" if (parenthesized_expression "(local_64 != 0)" ( (binary_expression "local_64 != 0" identifier != number_literal) )) (compound_statement "{\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }" { (expression_statement "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];" (assignment_expression "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3]" (subscript_expression "local_5c[uVar7 * 3 + 1]" identifier [ (binary_expression "uVar7 * 3 + 1" (binary_expression "uVar7 * 3" identifier * number_literal) + number_literal) ]) = (binary_expression "param_2[6] - local_5c[(int)piVar11 * 3]" (subscript_expression "param_2[6]" identifier [ number_literal ]) - (subscript_expression "local_5c[(int)piVar11 * 3]" identifier [ (binary_expression "(int)piVar11 * 3" (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ]))) ;) })) })) })) })) (goto_statement "goto LAB_00033d20;" goto statement_identifier ;) })) (expression_statement "iVar3 = param_2[2];" (assignment_expression "iVar3 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) })) (if_statement "if ((*(int *)(param_1 + 0x188) == 4) && (iVar3 == 0x3d)) {\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      param_2[6] = 0;\n      unaff_s5 = &local_60;\n      FUN_0002f068(param_2);\n      local_5c[uVar7 * 3] = param_2[6];\n      local_5c[uVar7 * 3 + 2] = 1;\n      do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n      unaff_s3 = &local_64;\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }" if (parenthesized_expression "((*(int *)(param_1 + 0x188) == 4) && (iVar3 == 0x3d))" ( (binary_expression "(*(int *)(param_1 + 0x188) == 4) && (iVar3 == 0x3d)" (parenthesized_expression "(*(int *)(param_1 + 0x188) == 4)" ( (binary_expression "*(int *)(param_1 + 0x188) == 4" (pointer_expression "*(int *)(param_1 + 0x188)" * (cast_expression "(int *)(param_1 + 0x188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x188)" ( (binary_expression "param_1 + 0x188" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "(iVar3 == 0x3d)" ( (binary_expression "iVar3 == 0x3d" identifier == number_literal) ))) )) (compound_statement "{\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      param_2[6] = 0;\n      unaff_s5 = &local_60;\n      FUN_0002f068(param_2);\n      local_5c[uVar7 * 3] = param_2[6];\n      local_5c[uVar7 * 3 + 2] = 1;\n      do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n      unaff_s3 = &local_64;\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }" { (expression_statement "iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);" (assignment_expression "iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b)" identifier = (call_expression "conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x248),0x7b)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x248)" * (cast_expression "(undefined4 *)(param_1 + 0x248)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (iVar5 != 0) {\n      param_2[6] = 0;\n      unaff_s5 = &local_60;\n      FUN_0002f068(param_2);\n      local_5c[uVar7 * 3] = param_2[6];\n      local_5c[uVar7 * 3 + 2] = 1;\n      do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n      unaff_s3 = &local_64;\n      goto LAB_00033d20;\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      param_2[6] = 0;\n      unaff_s5 = &local_60;\n      FUN_0002f068(param_2);\n      local_5c[uVar7 * 3] = param_2[6];\n      local_5c[uVar7 * 3 + 2] = 1;\n      do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n      unaff_s3 = &local_64;\n      goto LAB_00033d20;\n    }" { (expression_statement "param_2[6] = 0;" (assignment_expression "param_2[6] = 0" (subscript_expression "param_2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "unaff_s5 = &local_60;" (assignment_expression "unaff_s5 = &local_60" identifier = (pointer_expression "&local_60" & identifier)) ;) (expression_statement "FUN_0002f068(param_2);" (call_expression "FUN_0002f068(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) (expression_statement "local_5c[uVar7 * 3] = param_2[6];" (assignment_expression "local_5c[uVar7 * 3] = param_2[6]" (subscript_expression "local_5c[uVar7 * 3]" identifier [ (binary_expression "uVar7 * 3" identifier * number_literal) ]) = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "local_5c[uVar7 * 3 + 2] = 1;" (assignment_expression "local_5c[uVar7 * 3 + 2] = 1" (subscript_expression "local_5c[uVar7 * 3 + 2]" identifier [ (binary_expression "uVar7 * 3 + 2" (binary_expression "uVar7 * 3" identifier * number_literal) + number_literal) ]) = number_literal) ;) (do_statement "do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);" do (compound_statement "{\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      }" { (expression_statement "FUN_0002fb84(param_2,&local_64,unaff_s5);" (call_expression "FUN_0002fb84(param_2,&local_64,unaff_s5)" identifier (argument_list "(param_2,&local_64,unaff_s5)" ( identifier , (pointer_expression "&local_64" & identifier) , identifier ))) ;) }) while (parenthesized_expression "(local_64 != 0)" ( (binary_expression "local_64 != 0" identifier != number_literal) )) ;) (expression_statement "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];" (assignment_expression "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3]" (subscript_expression "local_5c[uVar7 * 3 + 1]" identifier [ (binary_expression "uVar7 * 3 + 1" (binary_expression "uVar7 * 3" identifier * number_literal) + number_literal) ]) = (binary_expression "param_2[6] - local_5c[uVar7 * 3]" (subscript_expression "param_2[6]" identifier [ number_literal ]) - (subscript_expression "local_5c[uVar7 * 3]" identifier [ (binary_expression "uVar7 * 3" identifier * number_literal) ]))) ;) (expression_statement "unaff_s3 = &local_64;" (assignment_expression "unaff_s3 = &local_64" identifier = (pointer_expression "&local_64" & identifier)) ;) (goto_statement "goto LAB_00033d20;" goto statement_identifier ;) })) (expression_statement "iVar3 = param_2[2];" (assignment_expression "iVar3 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) })) (if_statement "if ((iVar3 == 0x62) && (iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0))\n  {\n    param_2[6] = 0;\n    unaff_s5 = &local_60;\n    unaff_s3 = &local_64;\n    FUN_0002f068(param_2);\n    FUN_0002fb84();\n    if (local_60 == 7) {\n      iVar3 = param_2[6];\n      iVar5 = iVar3 + 1;\n      piVar11 = unaff_s3;\n      if (*param_2 - iVar3 < 1) goto LAB_0003420c;\n      if (*param_2 - iVar5 < 1) goto LAB_00034520;\n      param_2[6] = iVar3 + 2;\n      goto LAB_0003420c;\n    }\n  }" if (parenthesized_expression "((iVar3 == 0x62) && (iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0))" ( (binary_expression "(iVar3 == 0x62) && (iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0)" (parenthesized_expression "(iVar3 == 0x62)" ( (binary_expression "iVar3 == 0x62" identifier == number_literal) )) && (parenthesized_expression "(iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0)" ( (comma_expression "iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0" (assignment_expression "iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b)" identifier = (call_expression "conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x248),0x7b)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x248)" * (cast_expression "(undefined4 *)(param_1 + 0x248)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) , number_literal )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    param_2[6] = 0;\n    unaff_s5 = &local_60;\n    unaff_s3 = &local_64;\n    FUN_0002f068(param_2);\n    FUN_0002fb84();\n    if (local_60 == 7) {\n      iVar3 = param_2[6];\n      iVar5 = iVar3 + 1;\n      piVar11 = unaff_s3;\n      if (*param_2 - iVar3 < 1) goto LAB_0003420c;\n      if (*param_2 - iVar5 < 1) goto LAB_00034520;\n      param_2[6] = iVar3 + 2;\n      goto LAB_0003420c;\n    }\n  }" { (expression_statement "param_2[6] = 0;" (assignment_expression "param_2[6] = 0" (subscript_expression "param_2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "unaff_s5 = &local_60;" (assignment_expression "unaff_s5 = &local_60" identifier = (pointer_expression "&local_60" & identifier)) ;) (expression_statement "unaff_s3 = &local_64;" (assignment_expression "unaff_s3 = &local_64" identifier = (pointer_expression "&local_64" & identifier)) ;) (expression_statement "FUN_0002f068(param_2);" (call_expression "FUN_0002f068(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) (expression_statement "FUN_0002fb84();" (call_expression "FUN_0002fb84()" identifier (argument_list "()" ( ))) ;) (if_statement "if (local_60 == 7) {\n      iVar3 = param_2[6];\n      iVar5 = iVar3 + 1;\n      piVar11 = unaff_s3;\n      if (*param_2 - iVar3 < 1) goto LAB_0003420c;\n      if (*param_2 - iVar5 < 1) goto LAB_00034520;\n      param_2[6] = iVar3 + 2;\n      goto LAB_0003420c;\n    }" if (parenthesized_expression "(local_60 == 7)" ( (binary_expression "local_60 == 7" identifier == number_literal) )) (compound_statement "{\n      iVar3 = param_2[6];\n      iVar5 = iVar3 + 1;\n      piVar11 = unaff_s3;\n      if (*param_2 - iVar3 < 1) goto LAB_0003420c;\n      if (*param_2 - iVar5 < 1) goto LAB_00034520;\n      param_2[6] = iVar3 + 2;\n      goto LAB_0003420c;\n    }" { (expression_statement "iVar3 = param_2[6];" (assignment_expression "iVar3 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "iVar5 = iVar3 + 1;" (assignment_expression "iVar5 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "piVar11 = unaff_s3;" (assignment_expression "piVar11 = unaff_s3" identifier = identifier) ;) (if_statement "if (*param_2 - iVar3 < 1) goto LAB_0003420c;" if (parenthesized_expression "(*param_2 - iVar3 < 1)" ( (binary_expression "*param_2 - iVar3 < 1" (binary_expression "*param_2 - iVar3" (pointer_expression "*param_2" * identifier) - identifier) < number_literal) )) (goto_statement "goto LAB_0003420c;" goto statement_identifier ;)) (if_statement "if (*param_2 - iVar5 < 1) goto LAB_00034520;" if (parenthesized_expression "(*param_2 - iVar5 < 1)" ( (binary_expression "*param_2 - iVar5 < 1" (binary_expression "*param_2 - iVar5" (pointer_expression "*param_2" * identifier) - identifier) < number_literal) )) (goto_statement "goto LAB_00034520;" goto statement_identifier ;)) (expression_statement "param_2[6] = iVar3 + 2;" (assignment_expression "param_2[6] = iVar3 + 2" (subscript_expression "param_2[6]" identifier [ number_literal ]) = (binary_expression "iVar3 + 2" identifier + number_literal)) ;) (goto_statement "goto LAB_0003420c;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00033d20:\n  do {\n    FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5));\n    log_packet(*(undefined4 *)(param_1 + 0x18),1);\n    iVar5 = (param_2[5] - param_2[4]) + *param_2;\n    *param_2 = iVar5;\nLAB_00033da4:\n    uVar7 = *(uint *)(param_1 + 0xec);\n    if (uVar7 == 0) {\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }\n    else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }\n    if (local_2c == *(int *)puVar1) {\n      return iVar5;\n    }\n    iVar5 = local_2c;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\nLAB_00034520:\n    param_2[6] = iVar5;\n    piVar11 = unaff_s3;\nLAB_0003420c:\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    iVar5 = param_2[6];\n    unaff_s3 = &iStack_28 + uVar7 * 3;\n    local_5c[uVar7 * 3 + 2] = 1;\n    local_5c[uVar7 * 3] = iVar5;\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    if (local_64 != 0) {\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }\n  } while( true );" statement_identifier : (do_statement "do {\n    FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5));\n    log_packet(*(undefined4 *)(param_1 + 0x18),1);\n    iVar5 = (param_2[5] - param_2[4]) + *param_2;\n    *param_2 = iVar5;\nLAB_00033da4:\n    uVar7 = *(uint *)(param_1 + 0xec);\n    if (uVar7 == 0) {\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }\n    else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }\n    if (local_2c == *(int *)puVar1) {\n      return iVar5;\n    }\n    iVar5 = local_2c;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\nLAB_00034520:\n    param_2[6] = iVar5;\n    piVar11 = unaff_s3;\nLAB_0003420c:\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    iVar5 = param_2[6];\n    unaff_s3 = &iStack_28 + uVar7 * 3;\n    local_5c[uVar7 * 3 + 2] = 1;\n    local_5c[uVar7 * 3] = iVar5;\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    if (local_64 != 0) {\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }\n  } while( true );" do (compound_statement "{\n    FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5));\n    log_packet(*(undefined4 *)(param_1 + 0x18),1);\n    iVar5 = (param_2[5] - param_2[4]) + *param_2;\n    *param_2 = iVar5;\nLAB_00033da4:\n    uVar7 = *(uint *)(param_1 + 0xec);\n    if (uVar7 == 0) {\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }\n    else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }\n    if (local_2c == *(int *)puVar1) {\n      return iVar5;\n    }\n    iVar5 = local_2c;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\nLAB_00034520:\n    param_2[6] = iVar5;\n    piVar11 = unaff_s3;\nLAB_0003420c:\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    iVar5 = param_2[6];\n    unaff_s3 = &iStack_28 + uVar7 * 3;\n    local_5c[uVar7 * 3 + 2] = 1;\n    local_5c[uVar7 * 3] = iVar5;\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    if (local_64 != 0) {\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }\n  }" { (expression_statement "FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5));" (call_expression "FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x184)" * (cast_expression "(undefined4 *)(param_1 + 0x184)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x184)" ( (binary_expression "param_1 + 0x184" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x188)" * (cast_expression "(undefined4 *)(param_1 + 0x188)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x188)" ( (binary_expression "param_1 + 0x188" identifier + number_literal) )))) , (pointer_expression "*(undefined1 *)(param_2[4] + 5)" * (cast_expression "(undefined1 *)(param_2[4] + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[4] + 5)" ( (binary_expression "param_2[4] + 5" (subscript_expression "param_2[4]" identifier [ number_literal ]) + number_literal) )))) ))) ;) (expression_statement "log_packet(*(undefined4 *)(param_1 + 0x18),1);" (call_expression "log_packet(*(undefined4 *)(param_1 + 0x18),1)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x18),1)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x18)" * (cast_expression "(undefined4 *)(param_1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "iVar5 = (param_2[5] - param_2[4]) + *param_2;" (assignment_expression "iVar5 = (param_2[5] - param_2[4]) + *param_2" identifier = (binary_expression "(param_2[5] - param_2[4]) + *param_2" (parenthesized_expression "(param_2[5] - param_2[4])" ( (binary_expression "param_2[5] - param_2[4]" (subscript_expression "param_2[5]" identifier [ number_literal ]) - (subscript_expression "param_2[4]" identifier [ number_literal ])) )) + (pointer_expression "*param_2" * identifier))) ;) (expression_statement "*param_2 = iVar5;" (assignment_expression "*param_2 = iVar5" (pointer_expression "*param_2" * identifier) = identifier) ;) (labeled_statement "LAB_00033da4:\n    uVar7 = *(uint *)(param_1 + 0xec);" statement_identifier : (expression_statement "uVar7 = *(uint *)(param_1 + 0xec);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0xec)" identifier = (pointer_expression "*(uint *)(param_1 + 0xec)" * (cast_expression "(uint *)(param_1 + 0xec)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xec)" ( (binary_expression "param_1 + 0xec" identifier + number_literal) ))))) ;)) (if_statement "if (uVar7 == 0) {\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }\n    else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }" { (if_statement "if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x88) != 0)" ( (binary_expression "*(int *)(param_1 + 0x88) != 0" (pointer_expression "*(int *)(param_1 + 0x88)" * (cast_expression "(int *)(param_1 + 0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x88)" ( (binary_expression "param_1 + 0x88" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }" { (expression_statement "iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);" (assignment_expression "iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60)" identifier = (call_expression "(**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60)" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x88) + 0x10))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 0x88) + 0x10)" * (pointer_expression "*(code **)(*(int *)(param_1 + 0x88) + 0x10)" * (cast_expression "(code **)(*(int *)(param_1 + 0x88) + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x88) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x88) + 0x10" (pointer_expression "*(int *)(param_1 + 0x88)" * (cast_expression "(int *)(param_1 + 0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x88)" ( (binary_expression "param_1 + 0x88" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x90)" * (cast_expression "(undefined4 *)(param_1 + 0x90)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x90)" ( (binary_expression "param_1 + 0x90" identifier + number_literal) )))) , (binary_expression "param_2[4] + 5" (subscript_expression "param_2[4]" identifier [ number_literal ]) + number_literal) , (binary_expression "iVar5 + -5" identifier + number_literal) , (pointer_expression "&local_64" & identifier) , (pointer_expression "&local_60" & identifier) )))) ;) (if_statement "if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar5 = *param_2;\n        }" { (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }) (else_clause "else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }" else (compound_statement "{\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }" { (expression_statement "*param_2 = 5;" (assignment_expression "*param_2 = 5" (pointer_expression "*param_2" * identifier) = number_literal) ;) (expression_statement "FUN_00033374(param_2,local_64,local_60);" (call_expression "FUN_00033374(param_2,local_64,local_60)" identifier (argument_list "(param_2,local_64,local_60)" ( identifier , identifier , identifier ))) ;) (expression_statement "safefree(local_64);" (call_expression "safefree(local_64)" identifier (argument_list "(local_64)" ( identifier ))) ;) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }))) })) (if_statement "if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x60) == 0)" ( (binary_expression "*(int *)(param_1 + 0x60) == 0" (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        iVar3 = 8;\n      }" { (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" identifier = number_literal) ;) }) (else_clause "else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }" else (compound_statement "{\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }" { (expression_statement "iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);" (assignment_expression "iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0x60) + 0x24)" * (cast_expression "(int *)(*(int *)(param_1 + 0x60) + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x60) + 0x24)" ( (binary_expression "*(int *)(param_1 + 0x60) + 0x24" (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" identifier = number_literal) ;) (if_statement "if (7 < iVar9) {\n          iVar3 = iVar9;\n        }" if (parenthesized_expression "(7 < iVar9)" ( (binary_expression "7 < iVar9" number_literal < identifier) )) (compound_statement "{\n          iVar3 = iVar9;\n        }" { (expression_statement "iVar3 = iVar9;" (assignment_expression "iVar3 = iVar9" identifier = identifier) ;) })) }))) (expression_statement "iVar9 = *(int *)(param_1 + 0x70);" (assignment_expression "iVar9 = *(int *)(param_1 + 0x70)" identifier = (pointer_expression "*(int *)(param_1 + 0x70)" * (cast_expression "(int *)(param_1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) ))))) ;) (if_statement "if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }" if (parenthesized_expression "((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0))" ( (binary_expression "(iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)" (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(int *)(param_1 + 0x78) == 0)" ( (binary_expression "*(int *)(param_1 + 0x78) == 0" (pointer_expression "*(int *)(param_1 + 0x78)" * (cast_expression "(int *)(param_1 + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }" { (expression_statement "iVar4 = param_2[1];" (assignment_expression "iVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "iVar6 = iVar5;" (assignment_expression "iVar6 = iVar5" identifier = identifier) ;) (if_statement "if (iVar5 + 4 < iVar4) goto LAB_00033e2c;" if (parenthesized_expression "(iVar5 + 4 < iVar4)" ( (binary_expression "iVar5 + 4 < iVar4" (binary_expression "iVar5 + 4" identifier + number_literal) < identifier) )) (goto_statement "goto LAB_00033e2c;" goto statement_identifier ;)) (labeled_statement "LAB_0003405c:\n        iVar4 = 4;" statement_identifier : (expression_statement "iVar4 = 4;" (assignment_expression "iVar4 = 4" identifier = number_literal) ;)) }) (else_clause "else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }" else (compound_statement "{\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }" { (expression_statement "iVar4 = param_2[1];" (assignment_expression "iVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "iVar6 = iVar5 + -4;" (assignment_expression "iVar6 = iVar5 + -4" identifier = (binary_expression "iVar5 + -4" identifier + number_literal)) ;) (if_statement "if (iVar4 <= iVar5 + 4) goto LAB_0003405c;" if (parenthesized_expression "(iVar4 <= iVar5 + 4)" ( (binary_expression "iVar4 <= iVar5 + 4" identifier <= (binary_expression "iVar5 + 4" identifier + number_literal)) )) (goto_statement "goto LAB_0003405c;" goto statement_identifier ;)) (labeled_statement "LAB_00033e2c:\n        iVar4 = iVar4 - iVar5;" statement_identifier : (expression_statement "iVar4 = iVar4 - iVar5;" (assignment_expression "iVar4 = iVar4 - iVar5" identifier = (binary_expression "iVar4 - iVar5" identifier - identifier)) ;)) }))) (if_statement "if (iVar3 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 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 (iVar3 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 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 "uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;" (assignment_expression "uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4" identifier = (binary_expression "(iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4" (binary_expression "(iVar3 - (iVar4 + iVar6) % iVar3) % iVar3" (parenthesized_expression "(iVar3 - (iVar4 + iVar6) % iVar3)" ( (binary_expression "iVar3 - (iVar4 + iVar6) % iVar3" identifier - (binary_expression "(iVar4 + iVar6) % iVar3" (parenthesized_expression "(iVar4 + iVar6)" ( (binary_expression "iVar4 + iVar6" identifier + identifier) )) % identifier)) )) % identifier) + identifier)) ;) (if_statement "if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }" if (parenthesized_expression "(0xff < (int)uVar10)" ( (binary_expression "0xff < (int)uVar10" number_literal < (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }" { (expression_statement "iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);" (assignment_expression "iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80)" identifier = (call_expression "(*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80)" (parenthesized_expression "(*(code *)PTR___assert_fail_000adb00)" ( (pointer_expression "*(code *)PTR___assert_fail_000adb00" * (cast_expression "(code *)PTR___assert_fail_000adb00" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80)" ( (binary_expression "PTR_DAT_000ad2c8 + -0x2b60" identifier + number_literal) , (binary_expression "PTR_DAT_000ad2c8 + -0x3c40" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_000ad2c8 + 0xc80" identifier + number_literal) )))) ;) (return_statement "return iVar5;" return identifier ;) })) (expression_statement "unaff_s3 = (int *)0x0;" (assignment_expression "unaff_s3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }" { (expression_statement "unaff_s3 = *(int **)(iVar9 + 0x2c);" (assignment_expression "unaff_s3 = *(int **)(iVar9 + 0x2c)" identifier = (pointer_expression "*(int **)(iVar9 + 0x2c)" * (cast_expression "(int **)(iVar9 + 0x2c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + 0x2c)" ( (binary_expression "iVar9 + 0x2c" identifier + number_literal) ))))) ;) })) (if_statement "if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }" if (parenthesized_expression "(param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3))" ( (binary_expression "param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)" (subscript_expression "param_2[7]" identifier [ number_literal ]) < (cast_expression "(int)(uVar10 + iVar5 + (int)unaff_s3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar10 + iVar5 + (int)unaff_s3)" ( (binary_expression "uVar10 + iVar5 + (int)unaff_s3" (binary_expression "uVar10 + iVar5" identifier + identifier) + (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n        FUN_000332e8(param_2);\n      }" { (expression_statement "FUN_000332e8(param_2);" (call_expression "FUN_000332e8(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) })) (expression_statement "*(char *)(param_2[4] + 4) = (char)uVar10;" (assignment_expression "*(char *)(param_2[4] + 4) = (char)uVar10" (pointer_expression "*(char *)(param_2[4] + 4)" * (cast_expression "(char *)(param_2[4] + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[4] + 4)" ( (binary_expression "param_2[4] + 4" (subscript_expression "param_2[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)uVar10" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (if_statement "if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }" if (parenthesized_expression "(0 < (int)uVar10)" ( (binary_expression "0 < (int)uVar10" number_literal < (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }" { (do_statement "do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);" do (compound_statement "{\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        }" { (expression_statement "uVar2 = (*(code *)PTR_random_byte_000ad6ac)();" (assignment_expression "uVar2 = (*(code *)PTR_random_byte_000ad6ac)()" identifier = (call_expression "(*(code *)PTR_random_byte_000ad6ac)()" (parenthesized_expression "(*(code *)PTR_random_byte_000ad6ac)" ( (pointer_expression "*(code *)PTR_random_byte_000ad6ac" * (cast_expression "(code *)PTR_random_byte_000ad6ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "iVar5 = param_2[4] + uVar8;" (assignment_expression "iVar5 = param_2[4] + uVar8" identifier = (binary_expression "param_2[4] + uVar8" (subscript_expression "param_2[4]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(iVar5 + *param_2) = uVar2;" (assignment_expression "*(undefined1 *)(iVar5 + *param_2) = uVar2" (pointer_expression "*(undefined1 *)(iVar5 + *param_2)" * (cast_expression "(undefined1 *)(iVar5 + *param_2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + *param_2)" ( (binary_expression "iVar5 + *param_2" identifier + (pointer_expression "*param_2" * identifier)) )))) = identifier) ;) (expression_statement "uVar7 = uVar8;" (assignment_expression "uVar7 = uVar8" identifier = identifier) ;) }) while (parenthesized_expression "(uVar10 != uVar8)" ( (binary_expression "uVar10 != uVar8" identifier != identifier) )) ;) })) (expression_statement "*(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);" (assignment_expression "*(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18)" (pointer_expression "*(char *)param_2[4]" * (cast_expression "(char *)param_2[4]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[4]" identifier [ number_literal ]))) = (cast_expression "(char)(uVar10 + *param_2 + -4 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar10 + *param_2 + -4 >> 0x18)" ( (binary_expression "uVar10 + *param_2 + -4 >> 0x18" (binary_expression "uVar10 + *param_2 + -4" (binary_expression "uVar10 + *param_2" identifier + (pointer_expression "*param_2" * identifier)) + number_literal) >> number_literal) )))) ;) (expression_statement "*(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);" (assignment_expression "*(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10)" (pointer_expression "*(char *)(param_2[4] + 1)" * (cast_expression "(char *)(param_2[4] + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[4] + 1)" ( (binary_expression "param_2[4] + 1" (subscript_expression "param_2[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)(uVar10 + *param_2 + -4 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar10 + *param_2 + -4 >> 0x10)" ( (binary_expression "uVar10 + *param_2 + -4 >> 0x10" (binary_expression "uVar10 + *param_2 + -4" (binary_expression "uVar10 + *param_2" identifier + (pointer_expression "*param_2" * identifier)) + number_literal) >> number_literal) )))) ;) (expression_statement "*(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);" (assignment_expression "*(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8)" (pointer_expression "*(char *)(param_2[4] + 2)" * (cast_expression "(char *)(param_2[4] + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[4] + 2)" ( (binary_expression "param_2[4] + 2" (subscript_expression "param_2[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)(uVar10 + *param_2 + -4 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar10 + *param_2 + -4 >> 8)" ( (binary_expression "uVar10 + *param_2 + -4 >> 8" (binary_expression "uVar10 + *param_2 + -4" (binary_expression "uVar10 + *param_2" identifier + (pointer_expression "*param_2" * identifier)) + number_literal) >> number_literal) )))) ;) (expression_statement "unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);" (assignment_expression "unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4)" identifier = (cast_expression "(int *)((uVar10 & 0xff) + *param_2 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar10 & 0xff) + *param_2 + -4)" ( (binary_expression "(uVar10 & 0xff) + *param_2 + -4" (binary_expression "(uVar10 & 0xff) + *param_2" (parenthesized_expression "(uVar10 & 0xff)" ( (binary_expression "uVar10 & 0xff" identifier & number_literal) )) + (pointer_expression "*param_2" * identifier)) + number_literal) )))) ;) (expression_statement "*(char *)(param_2[4] + 3) = (char)unaff_s5;" (assignment_expression "*(char *)(param_2[4] + 3) = (char)unaff_s5" (pointer_expression "*(char *)(param_2[4] + 3)" * (cast_expression "(char *)(param_2[4] + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[4] + 3)" ( (binary_expression "param_2[4] + 3" (subscript_expression "param_2[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)unaff_s5" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0x60);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x60)" identifier = (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }" { (expression_statement "iVar3 = *(int *)(param_1 + 0x70);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x70)" identifier = (pointer_expression "*(int *)(param_1 + 0x70)" * (cast_expression "(int *)(param_1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = param_2[4];" (assignment_expression "iVar9 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (if_statement "if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }" { (expression_statement "iVar6 = uVar10 + *param_2;" (assignment_expression "iVar6 = uVar10 + *param_2" identifier = (binary_expression "uVar10 + *param_2" identifier + (pointer_expression "*param_2" * identifier))) ;) (if_statement "if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;" if (parenthesized_expression "(*(int *)(param_1 + 0x78) == 0)" ( (binary_expression "*(int *)(param_1 + 0x78) == 0" (pointer_expression "*(int *)(param_1 + 0x78)" * (cast_expression "(int *)(param_1 + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00033fb4;" goto statement_identifier ;)) (labeled_statement "LAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);" statement_identifier : (expression_statement "pcVar12 = *(code **)(iVar3 + 0xc);" (assignment_expression "pcVar12 = *(code **)(iVar3 + 0xc)" identifier = (pointer_expression "*(code **)(iVar3 + 0xc)" * (cast_expression "(code **)(iVar3 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));" statement_identifier : (expression_statement "(*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));" (call_expression "(*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x80)" * (cast_expression "(undefined4 *)(param_1 + 0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) , identifier , identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x1ac)" * (cast_expression "(undefined4 *)(param_1 + 0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1ac)" ( (binary_expression "param_1 + 0x1ac" identifier + number_literal) )))) ))) ;)) (expression_statement "iVar9 = param_2[4];" (assignment_expression "iVar9 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) })) }) (else_clause "else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }" else (compound_statement "{\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }" { (expression_statement "iVar9 = param_2[4];" (assignment_expression "iVar9 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (if_statement "if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }" if (parenthesized_expression "((*(uint *)(iVar5 + 0x30) & 2) == 0)" ( (binary_expression "(*(uint *)(iVar5 + 0x30) & 2) == 0" (parenthesized_expression "(*(uint *)(iVar5 + 0x30) & 2)" ( (binary_expression "*(uint *)(iVar5 + 0x30) & 2" (pointer_expression "*(uint *)(iVar5 + 0x30)" * (cast_expression "(uint *)(iVar5 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x30)" ( (binary_expression "iVar5 + 0x30" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }" { (expression_statement "iVar3 = *(int *)(param_1 + 0x70);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x70)" identifier = (pointer_expression "*(int *)(param_1 + 0x70)" * (cast_expression "(int *)(param_1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }" { (expression_statement "iVar6 = uVar10 + *param_2;" (assignment_expression "iVar6 = uVar10 + *param_2" identifier = (binary_expression "uVar10 + *param_2" identifier + (pointer_expression "*param_2" * identifier))) ;) (if_statement "if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }" if (parenthesized_expression "(*(int *)(param_1 + 0x78) != 0)" ( (binary_expression "*(int *)(param_1 + 0x78) != 0" (pointer_expression "*(int *)(param_1 + 0x78)" * (cast_expression "(int *)(param_1 + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }" { (labeled_statement "LAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);" statement_identifier : (expression_statement "(**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);" (call_expression "(**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4)" (parenthesized_expression "(**(code **)(iVar5 + 0x10))" ( (pointer_expression "**(code **)(iVar5 + 0x10)" * (pointer_expression "*(code **)(iVar5 + 0x10)" * (cast_expression "(code **)(iVar5 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x68)" * (cast_expression "(undefined4 *)(param_1 + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) , (binary_expression "iVar9 + 4" identifier + number_literal) , (binary_expression "iVar6 + -4" identifier + number_literal) ))) ;)) (expression_statement "iVar9 = param_2[4];" (assignment_expression "iVar9 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x70);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x70)" identifier = (pointer_expression "*(int *)(param_1 + 0x70)" * (cast_expression "(int *)(param_1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = uVar10 + *param_2;" (assignment_expression "iVar6 = uVar10 + *param_2" identifier = (binary_expression "uVar10 + *param_2" identifier + (pointer_expression "*param_2" * identifier))) ;) (goto_statement "goto LAB_00034110;" goto statement_identifier ;) })) (goto_statement "goto LAB_00033fb4;" goto statement_identifier ;) })) }) (else_clause "else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }" else (compound_statement "{\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }" { (expression_statement "(**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));" (call_expression "(**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac))" (parenthesized_expression "(**(code **)(iVar5 + 0x18))" ( (pointer_expression "**(code **)(iVar5 + 0x18)" * (pointer_expression "*(code **)(iVar5 + 0x18)" * (cast_expression "(code **)(iVar5 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x68)" * (cast_expression "(undefined4 *)(param_1 + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) , identifier , number_literal , (pointer_expression "*(undefined4 *)(param_1 + 0x1ac)" * (cast_expression "(undefined4 *)(param_1 + 0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1ac)" ( (binary_expression "param_1 + 0x1ac" identifier + number_literal) )))) ))) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x70);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x70)" identifier = (pointer_expression "*(int *)(param_1 + 0x70)" * (cast_expression "(int *)(param_1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }" { (expression_statement "iVar9 = param_2[4];" (assignment_expression "iVar9 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "iVar6 = uVar10 + *param_2;" (assignment_expression "iVar6 = uVar10 + *param_2" identifier = (binary_expression "uVar10 + *param_2" identifier + (pointer_expression "*param_2" * identifier))) ;) (if_statement "if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }" if (parenthesized_expression "(*(int *)(param_1 + 0x78) != 0)" ( (binary_expression "*(int *)(param_1 + 0x78) != 0" (pointer_expression "*(int *)(param_1 + 0x78)" * (cast_expression "(int *)(param_1 + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }" { (expression_statement "iVar5 = *(int *)(param_1 + 0x60);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x60)" identifier = (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 != 0) goto LAB_000340ec;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000340ec;" goto statement_identifier ;)) (expression_statement "pcVar12 = *(code **)(iVar3 + 0xc);" (assignment_expression "pcVar12 = *(code **)(iVar3 + 0xc)" identifier = (pointer_expression "*(code **)(iVar3 + 0xc)" * (cast_expression "(code **)(iVar3 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00034114;" goto statement_identifier ;) })) (labeled_statement "LAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;" statement_identifier : (expression_statement "(**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;" (call_expression "(**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))" (parenthesized_expression "(**(code **)(iVar3 + 0xc))" ( (pointer_expression "**(code **)(iVar3 + 0xc)" * (pointer_expression "*(code **)(iVar3 + 0xc)" * (cast_expression "(code **)(iVar3 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x80)" * (cast_expression "(undefined4 *)(param_1 + 0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) , identifier , identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x1ac)" * (cast_expression "(undefined4 *)(param_1 + 0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1ac)" ( (binary_expression "param_1 + 0x1ac" identifier + number_literal) )))) ))) ;)) })) (expression_statement "iVar5 = *(int *)(param_1 + 0x60);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x60)" identifier = (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = param_2[4];" (assignment_expression "iVar9 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (if_statement "if (iVar5 == 0) goto LAB_00033ff0;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00033ff0;" goto statement_identifier ;)) }))) (expression_statement "(**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);" (call_expression "(**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2)" (parenthesized_expression "(**(code **)(iVar5 + 0x10))" ( (pointer_expression "**(code **)(iVar5 + 0x10)" * (pointer_expression "*(code **)(iVar5 + 0x10)" * (cast_expression "(code **)(iVar5 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x68)" * (cast_expression "(undefined4 *)(param_1 + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) , identifier , (binary_expression "uVar10 + *param_2" identifier + (pointer_expression "*param_2" * identifier)) ))) ;) (expression_statement "iVar9 = param_2[4];" (assignment_expression "iVar9 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) }))) (labeled_statement "LAB_00033ff0:\n      iVar3 = *param_2;" statement_identifier : (expression_statement "iVar3 = *param_2;" (assignment_expression "iVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;)) (expression_statement "iVar5 = uVar10 + iVar3 + (int)unaff_s3;" (assignment_expression "iVar5 = uVar10 + iVar3 + (int)unaff_s3" identifier = (binary_expression "uVar10 + iVar3 + (int)unaff_s3" (binary_expression "uVar10 + iVar3" identifier + identifier) + (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;" (assignment_expression "*(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1" (pointer_expression "*(int *)(param_1 + 0x1ac)" * (cast_expression "(int *)(param_1 + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1ac)" ( (binary_expression "param_1 + 0x1ac" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x1ac) + 1" (pointer_expression "*(int *)(param_1 + 0x1ac)" * (cast_expression "(int *)(param_1 + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1ac)" ( (binary_expression "param_1 + 0x1ac" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "param_2[8] = uVar10 + iVar3;" (assignment_expression "param_2[8] = uVar10 + iVar3" (subscript_expression "param_2[8]" identifier [ number_literal ]) = (binary_expression "uVar10 + iVar3" identifier + identifier)) ;) (expression_statement "param_2[5] = iVar9;" (assignment_expression "param_2[5] = iVar9" (subscript_expression "param_2[5]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }" else (compound_statement "{\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }" { (expression_statement "*(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);" (assignment_expression "*(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18)" (pointer_expression "*(char *)(param_2[4] + 1)" * (cast_expression "(char *)(param_2[4] + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[4] + 1)" ( (binary_expression "param_2[4] + 1" (subscript_expression "param_2[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)((uint)(iVar5 + -5) >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)(iVar5 + -5) >> 0x18)" ( (binary_expression "(uint)(iVar5 + -5) >> 0x18" (call_expression "(uint)(iVar5 + -5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar5 + -5)" ( (binary_expression "iVar5 + -5" identifier + number_literal) ))) >> number_literal) )))) ;) (expression_statement "*(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);" (assignment_expression "*(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10)" (pointer_expression "*(char *)(param_2[4] + 2)" * (cast_expression "(char *)(param_2[4] + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[4] + 2)" ( (binary_expression "param_2[4] + 2" (subscript_expression "param_2[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)((uint)(*param_2 + -5) >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)(*param_2 + -5) >> 0x10)" ( (binary_expression "(uint)(*param_2 + -5) >> 0x10" (call_expression "(uint)(*param_2 + -5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*param_2 + -5)" ( (binary_expression "*param_2 + -5" (pointer_expression "*param_2" * identifier) + number_literal) ))) >> number_literal) )))) ;) (expression_statement "*(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);" (assignment_expression "*(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8)" (pointer_expression "*(char *)(param_2[4] + 3)" * (cast_expression "(char *)(param_2[4] + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[4] + 3)" ( (binary_expression "param_2[4] + 3" (subscript_expression "param_2[4]" identifier [ number_literal ]) + number_literal) )))) = (cast_expression "(char)((uint)(*param_2 + -5) >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)(*param_2 + -5) >> 8)" ( (binary_expression "(uint)(*param_2 + -5) >> 8" (call_expression "(uint)(*param_2 + -5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*param_2 + -5)" ( (binary_expression "*param_2 + -5" (pointer_expression "*param_2" * identifier) + number_literal) ))) >> number_literal) )))) ;) (expression_statement "*(char *)(param_2[4] + 4) = (char)*param_2 + -5;" (assignment_expression "*(char *)(param_2[4] + 4) = (char)*param_2 + -5" (pointer_expression "*(char *)(param_2[4] + 4)" * (cast_expression "(char *)(param_2[4] + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[4] + 4)" ( (binary_expression "param_2[4] + 4" (subscript_expression "param_2[4]" identifier [ number_literal ]) + number_literal) )))) = (binary_expression "(char)*param_2 + -5" (cast_expression "(char)*param_2" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_2" * identifier)) + number_literal)) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x1ac);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x1ac)" identifier = (pointer_expression "*(int *)(param_1 + 0x1ac)" * (cast_expression "(int *)(param_1 + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1ac)" ( (binary_expression "param_1 + 0x1ac" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *param_2 + -1;" (assignment_expression "iVar5 = *param_2 + -1" identifier = (binary_expression "*param_2 + -1" (pointer_expression "*param_2" * identifier) + number_literal)) ;) (expression_statement "param_2[5] = param_2[4] + 1;" (assignment_expression "param_2[5] = param_2[4] + 1" (subscript_expression "param_2[5]" identifier [ number_literal ]) = (binary_expression "param_2[4] + 1" (subscript_expression "param_2[4]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0x1ac) = iVar3 + 1;" (assignment_expression "*(int *)(param_1 + 0x1ac) = iVar3 + 1" (pointer_expression "*(int *)(param_1 + 0x1ac)" * (cast_expression "(int *)(param_1 + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1ac)" ( (binary_expression "param_1 + 0x1ac" identifier + number_literal) )))) = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) }))) (if_statement "if (local_2c == *(int *)puVar1) {\n      return iVar5;\n    }" if (parenthesized_expression "(local_2c == *(int *)puVar1)" ( (binary_expression "local_2c == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n      return iVar5;\n    }" { (return_statement "return iVar5;" return identifier ;) })) (expression_statement "iVar5 = local_2c;" (assignment_expression "iVar5 = local_2c" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000adca4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000adca4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000adca4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000adca4" * (cast_expression "(code *)PTR___stack_chk_fail_000adca4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_00034520:\n    param_2[6] = iVar5;" statement_identifier : (expression_statement "param_2[6] = iVar5;" (assignment_expression "param_2[6] = iVar5" (subscript_expression "param_2[6]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "piVar11 = unaff_s3;" (assignment_expression "piVar11 = unaff_s3" identifier = identifier) ;) (labeled_statement "LAB_0003420c:\n    FUN_0002fb84(param_2,piVar11,unaff_s5);" statement_identifier : (expression_statement "FUN_0002fb84(param_2,piVar11,unaff_s5);" (call_expression "FUN_0002fb84(param_2,piVar11,unaff_s5)" identifier (argument_list "(param_2,piVar11,unaff_s5)" ( identifier , identifier , identifier ))) ;)) (expression_statement "iVar5 = param_2[6];" (assignment_expression "iVar5 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "unaff_s3 = &iStack_28 + uVar7 * 3;" (assignment_expression "unaff_s3 = &iStack_28 + uVar7 * 3" identifier = (binary_expression "&iStack_28 + uVar7 * 3" (pointer_expression "&iStack_28" & identifier) + (binary_expression "uVar7 * 3" identifier * number_literal))) ;) (expression_statement "local_5c[uVar7 * 3 + 2] = 1;" (assignment_expression "local_5c[uVar7 * 3 + 2] = 1" (subscript_expression "local_5c[uVar7 * 3 + 2]" identifier [ (binary_expression "uVar7 * 3 + 2" (binary_expression "uVar7 * 3" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "local_5c[uVar7 * 3] = iVar5;" (assignment_expression "local_5c[uVar7 * 3] = iVar5" (subscript_expression "local_5c[uVar7 * 3]" identifier [ (binary_expression "uVar7 * 3" identifier * number_literal) ]) = identifier) ;) (expression_statement "FUN_0002fb84(param_2,piVar11,unaff_s5);" (call_expression "FUN_0002fb84(param_2,piVar11,unaff_s5)" identifier (argument_list "(param_2,piVar11,unaff_s5)" ( identifier , identifier , identifier ))) ;) (if_statement "if (local_64 != 0) {\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }" if (parenthesized_expression "(local_64 != 0)" ( (binary_expression "local_64 != 0" identifier != number_literal) )) (compound_statement "{\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }" { (expression_statement "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];" (assignment_expression "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3]" (subscript_expression "local_5c[uVar7 * 3 + 1]" identifier [ (binary_expression "uVar7 * 3 + 1" (binary_expression "uVar7 * 3" identifier * number_literal) + number_literal) ]) = (binary_expression "param_2[6] - local_5c[uVar7 * 3]" (subscript_expression "param_2[6]" identifier [ number_literal ]) - (subscript_expression "local_5c[uVar7 * 3]" identifier [ (binary_expression "uVar7 * 3" identifier * number_literal) ]))) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (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 IDENT ;) (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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (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))) ;) (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 IDENT (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + 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 IDENT (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 IDENT (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 (binary_expression IDENT + LIT) < IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (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 IDENT <= (binary_expression IDENT + LIT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;)) }))) (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) )))) ;) (return_statement return 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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return 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 ( ))) ;) (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 (pointer_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_00033c64(int param_1,int *param_2)\n\n{\n  undefined *puVar1;\n  undefined1 uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  int *unaff_s3;\n  int *piVar11;\n  int *unaff_s5;\n  code *pcVar12;\n  int local_64;\n  int local_60;\n  int local_5c [12];\n  int local_2c;\n  int iStack_28;\n  \n  puVar1 = PTR___stack_chk_guard_000adcd4;\n  iVar5 = *param_2;\n  local_2c = *(int *)PTR___stack_chk_guard_000adcd4;\n  if (*(int *)(param_1 + 0x18) == 0) goto LAB_00033da4;\n  uVar7 = *(uint *)(param_1 + 0x24c);\n  iVar3 = param_2[2];\n  param_2[6] = 0;\n  *param_2 = iVar5 - (param_2[5] - param_2[4]);\n  if ((uVar7 != 0) && (uVar7 = 0, iVar3 - 0x5eU < 2)) {\n    FUN_0002f068(param_2);\n    if (param_2[2] == 0x5f) {\n      FUN_0002f068();\n    }\n    local_5c[2] = 2;\n    local_5c[0] = param_2[6] + 4;\n    FUN_0002fb84(param_2,&local_64,&local_60);\n    if (local_64 == 0) {\n      iVar3 = param_2[2];\n      uVar7 = 0;\n    }\n    else {\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }\n  }\n  if (iVar3 == 0x32) {\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      unaff_s5 = &local_60;\n      unaff_s3 = &local_64;\n      param_2[6] = 0;\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }\n  if ((*(int *)(param_1 + 0x188) == 4) && (iVar3 == 0x3d)) {\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      param_2[6] = 0;\n      unaff_s5 = &local_60;\n      FUN_0002f068(param_2);\n      local_5c[uVar7 * 3] = param_2[6];\n      local_5c[uVar7 * 3 + 2] = 1;\n      do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n      unaff_s3 = &local_64;\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }\n  if ((iVar3 == 0x62) && (iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0))\n  {\n    param_2[6] = 0;\n    unaff_s5 = &local_60;\n    unaff_s3 = &local_64;\n    FUN_0002f068(param_2);\n    FUN_0002fb84();\n    if (local_60 == 7) {\n      iVar3 = param_2[6];\n      iVar5 = iVar3 + 1;\n      piVar11 = unaff_s3;\n      if (*param_2 - iVar3 < 1) goto LAB_0003420c;\n      if (*param_2 - iVar5 < 1) goto LAB_00034520;\n      param_2[6] = iVar3 + 2;\n      goto LAB_0003420c;\n    }\n  }\nLAB_00033d20:\n  do {\n    FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5));\n    log_packet(*(undefined4 *)(param_1 + 0x18),1);\n    iVar5 = (param_2[5] - param_2[4]) + *param_2;\n    *param_2 = iVar5;\nLAB_00033da4:\n    uVar7 = *(uint *)(param_1 + 0xec);\n    if (uVar7 == 0) {\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }\n    else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }\n    if (local_2c == *(int *)puVar1) {\n      return iVar5;\n    }\n    iVar5 = local_2c;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\nLAB_00034520:\n    param_2[6] = iVar5;\n    piVar11 = unaff_s3;\nLAB_0003420c:\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    iVar5 = param_2[6];\n    unaff_s3 = &iStack_28 + uVar7 * 3;\n    local_5c[uVar7 * 3 + 2] = 1;\n    local_5c[uVar7 * 3] = iVar5;\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    if (local_64 != 0) {\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }\n  } while( true );\n}" (primitive_type "int") (function_declarator "FUN_00033c64(int param_1,int *param_2)" (identifier "FUN_00033c64") (parameter_list "(int param_1,int *param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  undefined1 uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  int *unaff_s3;\n  int *piVar11;\n  int *unaff_s5;\n  code *pcVar12;\n  int local_64;\n  int local_60;\n  int local_5c [12];\n  int local_2c;\n  int iStack_28;\n  \n  puVar1 = PTR___stack_chk_guard_000adcd4;\n  iVar5 = *param_2;\n  local_2c = *(int *)PTR___stack_chk_guard_000adcd4;\n  if (*(int *)(param_1 + 0x18) == 0) goto LAB_00033da4;\n  uVar7 = *(uint *)(param_1 + 0x24c);\n  iVar3 = param_2[2];\n  param_2[6] = 0;\n  *param_2 = iVar5 - (param_2[5] - param_2[4]);\n  if ((uVar7 != 0) && (uVar7 = 0, iVar3 - 0x5eU < 2)) {\n    FUN_0002f068(param_2);\n    if (param_2[2] == 0x5f) {\n      FUN_0002f068();\n    }\n    local_5c[2] = 2;\n    local_5c[0] = param_2[6] + 4;\n    FUN_0002fb84(param_2,&local_64,&local_60);\n    if (local_64 == 0) {\n      iVar3 = param_2[2];\n      uVar7 = 0;\n    }\n    else {\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }\n  }\n  if (iVar3 == 0x32) {\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      unaff_s5 = &local_60;\n      unaff_s3 = &local_64;\n      param_2[6] = 0;\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }\n  if ((*(int *)(param_1 + 0x188) == 4) && (iVar3 == 0x3d)) {\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      param_2[6] = 0;\n      unaff_s5 = &local_60;\n      FUN_0002f068(param_2);\n      local_5c[uVar7 * 3] = param_2[6];\n      local_5c[uVar7 * 3 + 2] = 1;\n      do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n      unaff_s3 = &local_64;\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }\n  if ((iVar3 == 0x62) && (iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0))\n  {\n    param_2[6] = 0;\n    unaff_s5 = &local_60;\n    unaff_s3 = &local_64;\n    FUN_0002f068(param_2);\n    FUN_0002fb84();\n    if (local_60 == 7) {\n      iVar3 = param_2[6];\n      iVar5 = iVar3 + 1;\n      piVar11 = unaff_s3;\n      if (*param_2 - iVar3 < 1) goto LAB_0003420c;\n      if (*param_2 - iVar5 < 1) goto LAB_00034520;\n      param_2[6] = iVar3 + 2;\n      goto LAB_0003420c;\n    }\n  }\nLAB_00033d20:\n  do {\n    FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5));\n    log_packet(*(undefined4 *)(param_1 + 0x18),1);\n    iVar5 = (param_2[5] - param_2[4]) + *param_2;\n    *param_2 = iVar5;\nLAB_00033da4:\n    uVar7 = *(uint *)(param_1 + 0xec);\n    if (uVar7 == 0) {\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }\n    else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }\n    if (local_2c == *(int *)puVar1) {\n      return iVar5;\n    }\n    iVar5 = local_2c;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\nLAB_00034520:\n    param_2[6] = iVar5;\n    piVar11 = unaff_s3;\nLAB_0003420c:\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    iVar5 = param_2[6];\n    unaff_s3 = &iStack_28 + uVar7 * 3;\n    local_5c[uVar7 * 3 + 2] = 1;\n    local_5c[uVar7 * 3] = iVar5;\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    if (local_64 != 0) {\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }\n  } while( true );\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined1 uVar2;" (type_identifier "undefined1") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "int *unaff_s3;" (primitive_type "int") (pointer_declarator "*unaff_s3" (* "*") (identifier "unaff_s3")) (; ";")) (declaration "int *piVar11;" (primitive_type "int") (pointer_declarator "*piVar11" (* "*") (identifier "piVar11")) (; ";")) (declaration "int *unaff_s5;" (primitive_type "int") (pointer_declarator "*unaff_s5" (* "*") (identifier "unaff_s5")) (; ";")) (declaration "code *pcVar12;" (type_identifier "code") (pointer_declarator "*pcVar12" (* "*") (identifier "pcVar12")) (; ";")) (declaration "int local_64;" (primitive_type "int") (identifier "local_64") (; ";")) (declaration "int local_60;" (primitive_type "int") (identifier "local_60") (; ";")) (declaration "int local_5c [12];" (primitive_type "int") (array_declarator "local_5c [12]" (identifier "local_5c") ([ "[") (number_literal "12") (] "]")) (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (declaration "int iStack_28;" (primitive_type "int") (identifier "iStack_28") (; ";")) (expression_statement "puVar1 = PTR___stack_chk_guard_000adcd4;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000adcd4" (identifier "puVar1") (= "=") (identifier "PTR___stack_chk_guard_000adcd4")) (; ";")) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" (identifier "iVar5") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_000adcd4;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_000adcd4" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_000adcd4" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000adcd4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000adcd4")))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x18) == 0) goto LAB_00033da4;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x18) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x18) == 0" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00033da4;" (goto "goto") (statement_identifier "LAB_00033da4") (; ";"))) (expression_statement "uVar7 = *(uint *)(param_1 + 0x24c);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0x24c)" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)(param_1 + 0x24c)" (* "*") (cast_expression "(uint *)(param_1 + 0x24c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24c)" (( "(") (binary_expression "param_1 + 0x24c" (identifier "param_1") (+ "+") (number_literal "0x24c")) () ")"))))) (; ";")) (expression_statement "iVar3 = param_2[2];" (assignment_expression "iVar3 = param_2[2]" (identifier "iVar3") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "param_2[6] = 0;" (assignment_expression "param_2[6] = 0" (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_2 = iVar5 - (param_2[5] - param_2[4]);" (assignment_expression "*param_2 = iVar5 - (param_2[5] - param_2[4])" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "iVar5 - (param_2[5] - param_2[4])" (identifier "iVar5") (- "-") (parenthesized_expression "(param_2[5] - param_2[4])" (( "(") (binary_expression "param_2[5] - param_2[4]" (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) (- "-") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) () ")")))) (; ";")) (if_statement "if ((uVar7 != 0) && (uVar7 = 0, iVar3 - 0x5eU < 2)) {\n    FUN_0002f068(param_2);\n    if (param_2[2] == 0x5f) {\n      FUN_0002f068();\n    }\n    local_5c[2] = 2;\n    local_5c[0] = param_2[6] + 4;\n    FUN_0002fb84(param_2,&local_64,&local_60);\n    if (local_64 == 0) {\n      iVar3 = param_2[2];\n      uVar7 = 0;\n    }\n    else {\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }\n  }" (if "if") (parenthesized_expression "((uVar7 != 0) && (uVar7 = 0, iVar3 - 0x5eU < 2))" (( "(") (binary_expression "(uVar7 != 0) && (uVar7 = 0, iVar3 - 0x5eU < 2)" (parenthesized_expression "(uVar7 != 0)" (( "(") (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar7 = 0, iVar3 - 0x5eU < 2)" (( "(") (comma_expression "uVar7 = 0, iVar3 - 0x5eU < 2" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (, ",") (binary_expression "iVar3 - 0x5eU < 2" (binary_expression "iVar3 - 0x5eU" (identifier "iVar3") (- "-") (number_literal "0x5eU")) (< "<") (number_literal "2"))) () ")"))) () ")")) (compound_statement "{\n    FUN_0002f068(param_2);\n    if (param_2[2] == 0x5f) {\n      FUN_0002f068();\n    }\n    local_5c[2] = 2;\n    local_5c[0] = param_2[6] + 4;\n    FUN_0002fb84(param_2,&local_64,&local_60);\n    if (local_64 == 0) {\n      iVar3 = param_2[2];\n      uVar7 = 0;\n    }\n    else {\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }\n  }" ({ "{") (expression_statement "FUN_0002f068(param_2);" (call_expression "FUN_0002f068(param_2)" (identifier "FUN_0002f068") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";")) (if_statement "if (param_2[2] == 0x5f) {\n      FUN_0002f068();\n    }" (if "if") (parenthesized_expression "(param_2[2] == 0x5f)" (( "(") (binary_expression "param_2[2] == 0x5f" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0x5f")) () ")")) (compound_statement "{\n      FUN_0002f068();\n    }" ({ "{") (expression_statement "FUN_0002f068();" (call_expression "FUN_0002f068()" (identifier "FUN_0002f068") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "local_5c[2] = 2;" (assignment_expression "local_5c[2] = 2" (subscript_expression "local_5c[2]" (identifier "local_5c") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "2")) (; ";")) (expression_statement "local_5c[0] = param_2[6] + 4;" (assignment_expression "local_5c[0] = param_2[6] + 4" (subscript_expression "local_5c[0]" (identifier "local_5c") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "param_2[6] + 4" (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (+ "+") (number_literal "4"))) (; ";")) (expression_statement "FUN_0002fb84(param_2,&local_64,&local_60);" (call_expression "FUN_0002fb84(param_2,&local_64,&local_60)" (identifier "FUN_0002fb84") (argument_list "(param_2,&local_64,&local_60)" (( "(") (identifier "param_2") (, ",") (pointer_expression "&local_64" (& "&") (identifier "local_64")) (, ",") (pointer_expression "&local_60" (& "&") (identifier "local_60")) () ")"))) (; ";")) (if_statement "if (local_64 == 0) {\n      iVar3 = param_2[2];\n      uVar7 = 0;\n    }\n    else {\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }" (if "if") (parenthesized_expression "(local_64 == 0)" (( "(") (binary_expression "local_64 == 0" (identifier "local_64") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar3 = param_2[2];\n      uVar7 = 0;\n    }" ({ "{") (expression_statement "iVar3 = param_2[2];" (assignment_expression "iVar3 = param_2[2]" (identifier "iVar3") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }" (else "else") (compound_statement "{\n      uVar7 = 1;\n      iVar3 = param_2[2];\n    }" ({ "{") (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" (identifier "uVar7") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar3 = param_2[2];" (assignment_expression "iVar3 = param_2[2]" (identifier "iVar3") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}")))) (} "}"))) (if_statement "if (iVar3 == 0x32) {\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      unaff_s5 = &local_60;\n      unaff_s3 = &local_64;\n      param_2[6] = 0;\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }" (if "if") (parenthesized_expression "(iVar3 == 0x32)" (( "(") (binary_expression "iVar3 == 0x32" (identifier "iVar3") (== "==") (number_literal "0x32")) () ")")) (compound_statement "{\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      unaff_s5 = &local_60;\n      unaff_s3 = &local_64;\n      param_2[6] = 0;\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }" ({ "{") (expression_statement "iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);" (assignment_expression "iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b)" (identifier "iVar5") (= "=") (call_expression "conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b)" (identifier "conf_get_int") (argument_list "(*(undefined4 *)(param_1 + 0x248),0x7b)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x248)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x248)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x248)" (( "(") (binary_expression "param_1 + 0x248" (identifier "param_1") (+ "+") (number_literal "0x248")) () ")")))) (, ",") (number_literal "0x7b") () ")")))) (; ";")) (if_statement "if (iVar5 != 0) {\n      unaff_s5 = &local_60;\n      unaff_s3 = &local_64;\n      param_2[6] = 0;\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_00033d20;\n    }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      unaff_s5 = &local_60;\n      unaff_s3 = &local_64;\n      param_2[6] = 0;\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n      if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }\n      goto LAB_00033d20;\n    }" ({ "{") (expression_statement "unaff_s5 = &local_60;" (assignment_expression "unaff_s5 = &local_60" (identifier "unaff_s5") (= "=") (pointer_expression "&local_60" (& "&") (identifier "local_60"))) (; ";")) (expression_statement "unaff_s3 = &local_64;" (assignment_expression "unaff_s3 = &local_64" (identifier "unaff_s3") (= "=") (pointer_expression "&local_64" (& "&") (identifier "local_64"))) (; ";")) (expression_statement "param_2[6] = 0;" (assignment_expression "param_2[6] = 0" (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_0002fb84(param_2,unaff_s3,unaff_s5);" (call_expression "FUN_0002fb84(param_2,unaff_s3,unaff_s5)" (identifier "FUN_0002fb84") (argument_list "(param_2,unaff_s3,unaff_s5)" (( "(") (identifier "param_2") (, ",") (identifier "unaff_s3") (, ",") (identifier "unaff_s5") () ")"))) (; ";")) (expression_statement "FUN_0002fb84(param_2,unaff_s3,unaff_s5);" (call_expression "FUN_0002fb84(param_2,unaff_s3,unaff_s5)" (identifier "FUN_0002fb84") (argument_list "(param_2,unaff_s3,unaff_s5)" (( "(") (identifier "param_2") (, ",") (identifier "unaff_s3") (, ",") (identifier "unaff_s5") () ")"))) (; ";")) (expression_statement "FUN_0002fb84(param_2,unaff_s3,unaff_s5);" (call_expression "FUN_0002fb84(param_2,unaff_s3,unaff_s5)" (identifier "FUN_0002fb84") (argument_list "(param_2,unaff_s3,unaff_s5)" (( "(") (identifier "param_2") (, ",") (identifier "unaff_s3") (, ",") (identifier "unaff_s5") () ")"))) (; ";")) (if_statement "if (local_60 == 8) {\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "(local_60 == 8)" (( "(") (binary_expression "local_60 == 8" (identifier "local_60") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);\n        if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }\n      }" ({ "{") (expression_statement "iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);" (assignment_expression "iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8)" (identifier "iVar5") (= "=") (call_expression "(*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8)" (parenthesized_expression "(*(code *)PTR_memcmp_000adcb8)" (( "(") (pointer_expression "*(code *)PTR_memcmp_000adcb8" (* "*") (cast_expression "(code *)PTR_memcmp_000adcb8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcmp_000adcb8"))) () ")")) (argument_list "(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8)" (( "(") (identifier "local_64") (, ",") (binary_expression "PTR_DAT_000ad2c8 + -0x1d5c" (identifier "PTR_DAT_000ad2c8") (+ "+") (number_literal "-0x1d5c")) (, ",") (number_literal "8") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar5 = param_2[6];\n          if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }\n          local_5c[uVar7 * 3] = iVar5;\n          local_5c[uVar7 * 3 + 2] = 1;\n          FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n          if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }\n        }" ({ "{") (expression_statement "iVar5 = param_2[6];" (assignment_expression "iVar5 = param_2[6]" (identifier "iVar5") (= "=") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (; ";")) (if_statement "if (0 < *param_2 - iVar5) {\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }" (if "if") (parenthesized_expression "(0 < *param_2 - iVar5)" (( "(") (binary_expression "0 < *param_2 - iVar5" (number_literal "0") (< "<") (binary_expression "*param_2 - iVar5" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (- "-") (identifier "iVar5"))) () ")")) (compound_statement "{\n            iVar5 = iVar5 + 1;\n            param_2[6] = iVar5;\n          }" ({ "{") (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_2[6] = iVar5;" (assignment_expression "param_2[6] = iVar5" (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "iVar5")) (; ";")) (} "}"))) (expression_statement "local_5c[uVar7 * 3] = iVar5;" (assignment_expression "local_5c[uVar7 * 3] = iVar5" (subscript_expression "local_5c[uVar7 * 3]" (identifier "local_5c") ([ "[") (binary_expression "uVar7 * 3" (identifier "uVar7") (* "*") (number_literal "3")) (] "]")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "local_5c[uVar7 * 3 + 2] = 1;" (assignment_expression "local_5c[uVar7 * 3 + 2] = 1" (subscript_expression "local_5c[uVar7 * 3 + 2]" (identifier "local_5c") ([ "[") (binary_expression "uVar7 * 3 + 2" (binary_expression "uVar7 * 3" (identifier "uVar7") (* "*") (number_literal "3")) (+ "+") (number_literal "2")) (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_0002fb84(param_2,unaff_s3,unaff_s5);" (call_expression "FUN_0002fb84(param_2,unaff_s3,unaff_s5)" (identifier "FUN_0002fb84") (argument_list "(param_2,unaff_s3,unaff_s5)" (( "(") (identifier "param_2") (, ",") (identifier "unaff_s3") (, ",") (identifier "unaff_s5") () ")"))) (; ";")) (if_statement "if (local_64 != 0) {\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }" (if "if") (parenthesized_expression "(local_64 != 0)" (( "(") (binary_expression "local_64 != 0" (identifier "local_64") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            piVar11 = (int *)(uVar7 + 1);\n            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n            FUN_0002fb84(param_2,unaff_s3,unaff_s5);\n            unaff_s3 = piVar11;\n            if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }\n          }" ({ "{") (expression_statement "piVar11 = (int *)(uVar7 + 1);" (assignment_expression "piVar11 = (int *)(uVar7 + 1)" (identifier "piVar11") (= "=") (cast_expression "(int *)(uVar7 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar7 + 1)" (( "(") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];" (assignment_expression "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3]" (subscript_expression "local_5c[uVar7 * 3 + 1]" (identifier "local_5c") ([ "[") (binary_expression "uVar7 * 3 + 1" (binary_expression "uVar7 * 3" (identifier "uVar7") (* "*") (number_literal "3")) (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "param_2[6] - local_5c[uVar7 * 3]" (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (- "-") (subscript_expression "local_5c[uVar7 * 3]" (identifier "local_5c") ([ "[") (binary_expression "uVar7 * 3" (identifier "uVar7") (* "*") (number_literal "3")) (] "]")))) (; ";")) (expression_statement "FUN_0002fb84(param_2,unaff_s3,unaff_s5);" (call_expression "FUN_0002fb84(param_2,unaff_s3,unaff_s5)" (identifier "FUN_0002fb84") (argument_list "(param_2,unaff_s3,unaff_s5)" (( "(") (identifier "param_2") (, ",") (identifier "unaff_s3") (, ",") (identifier "unaff_s5") () ")"))) (; ";")) (expression_statement "unaff_s3 = piVar11;" (assignment_expression "unaff_s3 = piVar11" (identifier "unaff_s3") (= "=") (identifier "piVar11")) (; ";")) (if_statement "if (local_64 != 0) {\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }" (if "if") (parenthesized_expression "(local_64 != 0)" (( "(") (binary_expression "local_64 != 0" (identifier "local_64") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];\n            }" ({ "{") (expression_statement "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];" (assignment_expression "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3]" (subscript_expression "local_5c[uVar7 * 3 + 1]" (identifier "local_5c") ([ "[") (binary_expression "uVar7 * 3 + 1" (binary_expression "uVar7 * 3" (identifier "uVar7") (* "*") (number_literal "3")) (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "param_2[6] - local_5c[(int)piVar11 * 3]" (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (- "-") (subscript_expression "local_5c[(int)piVar11 * 3]" (identifier "local_5c") ([ "[") (binary_expression "(int)piVar11 * 3" (cast_expression "(int)piVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar11")) (* "*") (number_literal "3")) (] "]")))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (goto_statement "goto LAB_00033d20;" (goto "goto") (statement_identifier "LAB_00033d20") (; ";")) (} "}"))) (expression_statement "iVar3 = param_2[2];" (assignment_expression "iVar3 = param_2[2]" (identifier "iVar3") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}"))) (if_statement "if ((*(int *)(param_1 + 0x188) == 4) && (iVar3 == 0x3d)) {\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      param_2[6] = 0;\n      unaff_s5 = &local_60;\n      FUN_0002f068(param_2);\n      local_5c[uVar7 * 3] = param_2[6];\n      local_5c[uVar7 * 3 + 2] = 1;\n      do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n      unaff_s3 = &local_64;\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }" (if "if") (parenthesized_expression "((*(int *)(param_1 + 0x188) == 4) && (iVar3 == 0x3d))" (( "(") (binary_expression "(*(int *)(param_1 + 0x188) == 4) && (iVar3 == 0x3d)" (parenthesized_expression "(*(int *)(param_1 + 0x188) == 4)" (( "(") (binary_expression "*(int *)(param_1 + 0x188) == 4" (pointer_expression "*(int *)(param_1 + 0x188)" (* "*") (cast_expression "(int *)(param_1 + 0x188)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x188)" (( "(") (binary_expression "param_1 + 0x188" (identifier "param_1") (+ "+") (number_literal "0x188")) () ")")))) (== "==") (number_literal "4")) () ")")) (&& "&&") (parenthesized_expression "(iVar3 == 0x3d)" (( "(") (binary_expression "iVar3 == 0x3d" (identifier "iVar3") (== "==") (number_literal "0x3d")) () ")"))) () ")")) (compound_statement "{\n    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);\n    if (iVar5 != 0) {\n      param_2[6] = 0;\n      unaff_s5 = &local_60;\n      FUN_0002f068(param_2);\n      local_5c[uVar7 * 3] = param_2[6];\n      local_5c[uVar7 * 3 + 2] = 1;\n      do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n      unaff_s3 = &local_64;\n      goto LAB_00033d20;\n    }\n    iVar3 = param_2[2];\n  }" ({ "{") (expression_statement "iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);" (assignment_expression "iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b)" (identifier "iVar5") (= "=") (call_expression "conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b)" (identifier "conf_get_int") (argument_list "(*(undefined4 *)(param_1 + 0x248),0x7b)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x248)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x248)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x248)" (( "(") (binary_expression "param_1 + 0x248" (identifier "param_1") (+ "+") (number_literal "0x248")) () ")")))) (, ",") (number_literal "0x7b") () ")")))) (; ";")) (if_statement "if (iVar5 != 0) {\n      param_2[6] = 0;\n      unaff_s5 = &local_60;\n      FUN_0002f068(param_2);\n      local_5c[uVar7 * 3] = param_2[6];\n      local_5c[uVar7 * 3 + 2] = 1;\n      do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n      unaff_s3 = &local_64;\n      goto LAB_00033d20;\n    }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      param_2[6] = 0;\n      unaff_s5 = &local_60;\n      FUN_0002f068(param_2);\n      local_5c[uVar7 * 3] = param_2[6];\n      local_5c[uVar7 * 3 + 2] = 1;\n      do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n      unaff_s3 = &local_64;\n      goto LAB_00033d20;\n    }" ({ "{") (expression_statement "param_2[6] = 0;" (assignment_expression "param_2[6] = 0" (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "unaff_s5 = &local_60;" (assignment_expression "unaff_s5 = &local_60" (identifier "unaff_s5") (= "=") (pointer_expression "&local_60" (& "&") (identifier "local_60"))) (; ";")) (expression_statement "FUN_0002f068(param_2);" (call_expression "FUN_0002f068(param_2)" (identifier "FUN_0002f068") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";")) (expression_statement "local_5c[uVar7 * 3] = param_2[6];" (assignment_expression "local_5c[uVar7 * 3] = param_2[6]" (subscript_expression "local_5c[uVar7 * 3]" (identifier "local_5c") ([ "[") (binary_expression "uVar7 * 3" (identifier "uVar7") (* "*") (number_literal "3")) (] "]")) (= "=") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "local_5c[uVar7 * 3 + 2] = 1;" (assignment_expression "local_5c[uVar7 * 3 + 2] = 1" (subscript_expression "local_5c[uVar7 * 3 + 2]" (identifier "local_5c") ([ "[") (binary_expression "uVar7 * 3 + 2" (binary_expression "uVar7 * 3" (identifier "uVar7") (* "*") (number_literal "3")) (+ "+") (number_literal "2")) (] "]")) (= "=") (number_literal "1")) (; ";")) (do_statement "do {\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      } while (local_64 != 0);" (do "do") (compound_statement "{\n        FUN_0002fb84(param_2,&local_64,unaff_s5);\n      }" ({ "{") (expression_statement "FUN_0002fb84(param_2,&local_64,unaff_s5);" (call_expression "FUN_0002fb84(param_2,&local_64,unaff_s5)" (identifier "FUN_0002fb84") (argument_list "(param_2,&local_64,unaff_s5)" (( "(") (identifier "param_2") (, ",") (pointer_expression "&local_64" (& "&") (identifier "local_64")) (, ",") (identifier "unaff_s5") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_64 != 0)" (( "(") (binary_expression "local_64 != 0" (identifier "local_64") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];" (assignment_expression "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3]" (subscript_expression "local_5c[uVar7 * 3 + 1]" (identifier "local_5c") ([ "[") (binary_expression "uVar7 * 3 + 1" (binary_expression "uVar7 * 3" (identifier "uVar7") (* "*") (number_literal "3")) (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "param_2[6] - local_5c[uVar7 * 3]" (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (- "-") (subscript_expression "local_5c[uVar7 * 3]" (identifier "local_5c") ([ "[") (binary_expression "uVar7 * 3" (identifier "uVar7") (* "*") (number_literal "3")) (] "]")))) (; ";")) (expression_statement "unaff_s3 = &local_64;" (assignment_expression "unaff_s3 = &local_64" (identifier "unaff_s3") (= "=") (pointer_expression "&local_64" (& "&") (identifier "local_64"))) (; ";")) (goto_statement "goto LAB_00033d20;" (goto "goto") (statement_identifier "LAB_00033d20") (; ";")) (} "}"))) (expression_statement "iVar3 = param_2[2];" (assignment_expression "iVar3 = param_2[2]" (identifier "iVar3") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}"))) (if_statement "if ((iVar3 == 0x62) && (iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0))\n  {\n    param_2[6] = 0;\n    unaff_s5 = &local_60;\n    unaff_s3 = &local_64;\n    FUN_0002f068(param_2);\n    FUN_0002fb84();\n    if (local_60 == 7) {\n      iVar3 = param_2[6];\n      iVar5 = iVar3 + 1;\n      piVar11 = unaff_s3;\n      if (*param_2 - iVar3 < 1) goto LAB_0003420c;\n      if (*param_2 - iVar5 < 1) goto LAB_00034520;\n      param_2[6] = iVar3 + 2;\n      goto LAB_0003420c;\n    }\n  }" (if "if") (parenthesized_expression "((iVar3 == 0x62) && (iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0))" (( "(") (binary_expression "(iVar3 == 0x62) && (iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0)" (parenthesized_expression "(iVar3 == 0x62)" (( "(") (binary_expression "iVar3 == 0x62" (identifier "iVar3") (== "==") (number_literal "0x62")) () ")")) (&& "&&") (parenthesized_expression "(iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0)" (( "(") (comma_expression "iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0" (assignment_expression "iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b)" (identifier "iVar5") (= "=") (call_expression "conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b)" (identifier "conf_get_int") (argument_list "(*(undefined4 *)(param_1 + 0x248),0x7b)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x248)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x248)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x248)" (( "(") (binary_expression "param_1 + 0x248" (identifier "param_1") (+ "+") (number_literal "0x248")) () ")")))) (, ",") (number_literal "0x7b") () ")")))) (, ",") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    param_2[6] = 0;\n    unaff_s5 = &local_60;\n    unaff_s3 = &local_64;\n    FUN_0002f068(param_2);\n    FUN_0002fb84();\n    if (local_60 == 7) {\n      iVar3 = param_2[6];\n      iVar5 = iVar3 + 1;\n      piVar11 = unaff_s3;\n      if (*param_2 - iVar3 < 1) goto LAB_0003420c;\n      if (*param_2 - iVar5 < 1) goto LAB_00034520;\n      param_2[6] = iVar3 + 2;\n      goto LAB_0003420c;\n    }\n  }" ({ "{") (expression_statement "param_2[6] = 0;" (assignment_expression "param_2[6] = 0" (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "unaff_s5 = &local_60;" (assignment_expression "unaff_s5 = &local_60" (identifier "unaff_s5") (= "=") (pointer_expression "&local_60" (& "&") (identifier "local_60"))) (; ";")) (expression_statement "unaff_s3 = &local_64;" (assignment_expression "unaff_s3 = &local_64" (identifier "unaff_s3") (= "=") (pointer_expression "&local_64" (& "&") (identifier "local_64"))) (; ";")) (expression_statement "FUN_0002f068(param_2);" (call_expression "FUN_0002f068(param_2)" (identifier "FUN_0002f068") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";")) (expression_statement "FUN_0002fb84();" (call_expression "FUN_0002fb84()" (identifier "FUN_0002fb84") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (local_60 == 7) {\n      iVar3 = param_2[6];\n      iVar5 = iVar3 + 1;\n      piVar11 = unaff_s3;\n      if (*param_2 - iVar3 < 1) goto LAB_0003420c;\n      if (*param_2 - iVar5 < 1) goto LAB_00034520;\n      param_2[6] = iVar3 + 2;\n      goto LAB_0003420c;\n    }" (if "if") (parenthesized_expression "(local_60 == 7)" (( "(") (binary_expression "local_60 == 7" (identifier "local_60") (== "==") (number_literal "7")) () ")")) (compound_statement "{\n      iVar3 = param_2[6];\n      iVar5 = iVar3 + 1;\n      piVar11 = unaff_s3;\n      if (*param_2 - iVar3 < 1) goto LAB_0003420c;\n      if (*param_2 - iVar5 < 1) goto LAB_00034520;\n      param_2[6] = iVar3 + 2;\n      goto LAB_0003420c;\n    }" ({ "{") (expression_statement "iVar3 = param_2[6];" (assignment_expression "iVar3 = param_2[6]" (identifier "iVar3") (= "=") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "iVar5 = iVar3 + 1;" (assignment_expression "iVar5 = iVar3 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar11 = unaff_s3;" (assignment_expression "piVar11 = unaff_s3" (identifier "piVar11") (= "=") (identifier "unaff_s3")) (; ";")) (if_statement "if (*param_2 - iVar3 < 1) goto LAB_0003420c;" (if "if") (parenthesized_expression "(*param_2 - iVar3 < 1)" (( "(") (binary_expression "*param_2 - iVar3 < 1" (binary_expression "*param_2 - iVar3" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (- "-") (identifier "iVar3")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_0003420c;" (goto "goto") (statement_identifier "LAB_0003420c") (; ";"))) (if_statement "if (*param_2 - iVar5 < 1) goto LAB_00034520;" (if "if") (parenthesized_expression "(*param_2 - iVar5 < 1)" (( "(") (binary_expression "*param_2 - iVar5 < 1" (binary_expression "*param_2 - iVar5" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (- "-") (identifier "iVar5")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_00034520;" (goto "goto") (statement_identifier "LAB_00034520") (; ";"))) (expression_statement "param_2[6] = iVar3 + 2;" (assignment_expression "param_2[6] = iVar3 + 2" (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (= "=") (binary_expression "iVar3 + 2" (identifier "iVar3") (+ "+") (number_literal "2"))) (; ";")) (goto_statement "goto LAB_0003420c;" (goto "goto") (statement_identifier "LAB_0003420c") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00033d20:\n  do {\n    FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5));\n    log_packet(*(undefined4 *)(param_1 + 0x18),1);\n    iVar5 = (param_2[5] - param_2[4]) + *param_2;\n    *param_2 = iVar5;\nLAB_00033da4:\n    uVar7 = *(uint *)(param_1 + 0xec);\n    if (uVar7 == 0) {\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }\n    else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }\n    if (local_2c == *(int *)puVar1) {\n      return iVar5;\n    }\n    iVar5 = local_2c;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\nLAB_00034520:\n    param_2[6] = iVar5;\n    piVar11 = unaff_s3;\nLAB_0003420c:\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    iVar5 = param_2[6];\n    unaff_s3 = &iStack_28 + uVar7 * 3;\n    local_5c[uVar7 * 3 + 2] = 1;\n    local_5c[uVar7 * 3] = iVar5;\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    if (local_64 != 0) {\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }\n  } while( true );" (statement_identifier "LAB_00033d20") (: ":") (do_statement "do {\n    FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5));\n    log_packet(*(undefined4 *)(param_1 + 0x18),1);\n    iVar5 = (param_2[5] - param_2[4]) + *param_2;\n    *param_2 = iVar5;\nLAB_00033da4:\n    uVar7 = *(uint *)(param_1 + 0xec);\n    if (uVar7 == 0) {\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }\n    else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }\n    if (local_2c == *(int *)puVar1) {\n      return iVar5;\n    }\n    iVar5 = local_2c;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\nLAB_00034520:\n    param_2[6] = iVar5;\n    piVar11 = unaff_s3;\nLAB_0003420c:\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    iVar5 = param_2[6];\n    unaff_s3 = &iStack_28 + uVar7 * 3;\n    local_5c[uVar7 * 3 + 2] = 1;\n    local_5c[uVar7 * 3] = iVar5;\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    if (local_64 != 0) {\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }\n  } while( true );" (do "do") (compound_statement "{\n    FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5));\n    log_packet(*(undefined4 *)(param_1 + 0x18),1);\n    iVar5 = (param_2[5] - param_2[4]) + *param_2;\n    *param_2 = iVar5;\nLAB_00033da4:\n    uVar7 = *(uint *)(param_1 + 0xec);\n    if (uVar7 == 0) {\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }\n    else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }\n    if (local_2c == *(int *)puVar1) {\n      return iVar5;\n    }\n    iVar5 = local_2c;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\nLAB_00034520:\n    param_2[6] = iVar5;\n    piVar11 = unaff_s3;\nLAB_0003420c:\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    iVar5 = param_2[6];\n    unaff_s3 = &iStack_28 + uVar7 * 3;\n    local_5c[uVar7 * 3 + 2] = 1;\n    local_5c[uVar7 * 3] = iVar5;\n    FUN_0002fb84(param_2,piVar11,unaff_s5);\n    if (local_64 != 0) {\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }\n  }" ({ "{") (expression_statement "FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5));" (call_expression "FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5))" (identifier "FUN_00031e0c") (argument_list "(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),\n                 *(undefined1 *)(param_2[4] + 5))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x184)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x184)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x184)" (( "(") (binary_expression "param_1 + 0x184" (identifier "param_1") (+ "+") (number_literal "0x184")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x188)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x188)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x188)" (( "(") (binary_expression "param_1 + 0x188" (identifier "param_1") (+ "+") (number_literal "0x188")) () ")")))) (, ",") (pointer_expression "*(undefined1 *)(param_2[4] + 5)" (* "*") (cast_expression "(undefined1 *)(param_2[4] + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[4] + 5)" (( "(") (binary_expression "param_2[4] + 5" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "5")) () ")")))) () ")"))) (; ";")) (expression_statement "log_packet(*(undefined4 *)(param_1 + 0x18),1);" (call_expression "log_packet(*(undefined4 *)(param_1 + 0x18),1)" (identifier "log_packet") (argument_list "(*(undefined4 *)(param_1 + 0x18),1)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "iVar5 = (param_2[5] - param_2[4]) + *param_2;" (assignment_expression "iVar5 = (param_2[5] - param_2[4]) + *param_2" (identifier "iVar5") (= "=") (binary_expression "(param_2[5] - param_2[4]) + *param_2" (parenthesized_expression "(param_2[5] - param_2[4])" (( "(") (binary_expression "param_2[5] - param_2[4]" (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) (- "-") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) () ")")) (+ "+") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "*param_2 = iVar5;" (assignment_expression "*param_2 = iVar5" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "iVar5")) (; ";")) (labeled_statement "LAB_00033da4:\n    uVar7 = *(uint *)(param_1 + 0xec);" (statement_identifier "LAB_00033da4") (: ":") (expression_statement "uVar7 = *(uint *)(param_1 + 0xec);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0xec)" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)(param_1 + 0xec)" (* "*") (cast_expression "(uint *)(param_1 + 0xec)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xec)" (( "(") (binary_expression "param_1 + 0xec" (identifier "param_1") (+ "+") (number_literal "0xec")) () ")"))))) (; ";"))) (if_statement "if (uVar7 == 0) {\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }\n    else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }\n      if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }\n      iVar9 = *(int *)(param_1 + 0x70);\n      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      if (iVar3 == 0) {\n        trap(7);\n      }\n      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;\n      if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }\n      unaff_s3 = (int *)0x0;\n      if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }\n      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }\n      *(char *)(param_2[4] + 4) = (char)uVar10;\n      uVar8 = 0;\n      if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }\n      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);\n      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);\n      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);\n      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);\n      *(char *)(param_2[4] + 3) = (char)unaff_s5;\n      iVar5 = *(int *)(param_1 + 0x60);\n      if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }\nLAB_00033ff0:\n      iVar3 = *param_2;\n      iVar5 = uVar10 + iVar3 + (int)unaff_s3;\n      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;\n      param_2[8] = uVar10 + iVar3;\n      param_2[5] = iVar9;\n    }" ({ "{") (if_statement "if (*(int *)(param_1 + 0x88) != 0) {\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x88) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x88) != 0" (pointer_expression "*(int *)(param_1 + 0x88)" (* "*") (cast_expression "(int *)(param_1 + 0x88)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x88)" (( "(") (binary_expression "param_1 + 0x88" (identifier "param_1") (+ "+") (number_literal "0x88")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);\n        if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }\n      }" ({ "{") (expression_statement "iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60);" (assignment_expression "iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60)" (identifier "iVar5") (= "=") (call_expression "(**(code **)(*(int *)(param_1 + 0x88) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60)" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x88) + 0x10))" (( "(") (pointer_expression "**(code **)(*(int *)(param_1 + 0x88) + 0x10)" (* "*") (pointer_expression "*(code **)(*(int *)(param_1 + 0x88) + 0x10)" (* "*") (cast_expression "(code **)(*(int *)(param_1 + 0x88) + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x88) + 0x10)" (( "(") (binary_expression "*(int *)(param_1 + 0x88) + 0x10" (pointer_expression "*(int *)(param_1 + 0x88)" (* "*") (cast_expression "(int *)(param_1 + 0x88)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x88)" (( "(") (binary_expression "param_1 + 0x88" (identifier "param_1") (+ "+") (number_literal "0x88")) () ")")))) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,\n                           &local_60)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x90)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x90)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x90)" (( "(") (binary_expression "param_1 + 0x90" (identifier "param_1") (+ "+") (number_literal "0x90")) () ")")))) (, ",") (binary_expression "param_2[4] + 5" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "5")) (, ",") (binary_expression "iVar5 + -5" (identifier "iVar5") (+ "+") (number_literal "-5")) (, ",") (pointer_expression "&local_64" (& "&") (identifier "local_64")) (, ",") (pointer_expression "&local_60" (& "&") (identifier "local_60")) () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n          iVar5 = *param_2;\n        }\n        else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar5 = *param_2;\n        }" ({ "{") (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" (identifier "iVar5") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (} "}")) (else_clause "else {\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }" (else "else") (compound_statement "{\n          *param_2 = 5;\n          FUN_00033374(param_2,local_64,local_60);\n          safefree(local_64);\n          iVar5 = *param_2;\n        }" ({ "{") (expression_statement "*param_2 = 5;" (assignment_expression "*param_2 = 5" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "5")) (; ";")) (expression_statement "FUN_00033374(param_2,local_64,local_60);" (call_expression "FUN_00033374(param_2,local_64,local_60)" (identifier "FUN_00033374") (argument_list "(param_2,local_64,local_60)" (( "(") (identifier "param_2") (, ",") (identifier "local_64") (, ",") (identifier "local_60") () ")"))) (; ";")) (expression_statement "safefree(local_64);" (call_expression "safefree(local_64)" (identifier "safefree") (argument_list "(local_64)" (( "(") (identifier "local_64") () ")"))) (; ";")) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" (identifier "iVar5") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (} "}")))) (} "}"))) (if_statement "if (*(int *)(param_1 + 0x60) == 0) {\n        iVar3 = 8;\n      }\n      else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x60) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x60) == 0" (pointer_expression "*(int *)(param_1 + 0x60)" (* "*") (cast_expression "(int *)(param_1 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar3 = 8;\n      }" ({ "{") (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" (identifier "iVar3") (= "=") (number_literal "8")) (; ";")) (} "}")) (else_clause "else {\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }" (else "else") (compound_statement "{\n        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);\n        iVar3 = 8;\n        if (7 < iVar9) {\n          iVar3 = iVar9;\n        }\n      }" ({ "{") (expression_statement "iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);" (assignment_expression "iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(*(int *)(param_1 + 0x60) + 0x24)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x60) + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x60) + 0x24)" (( "(") (binary_expression "*(int *)(param_1 + 0x60) + 0x24" (pointer_expression "*(int *)(param_1 + 0x60)" (* "*") (cast_expression "(int *)(param_1 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")")))) (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" (identifier "iVar3") (= "=") (number_literal "8")) (; ";")) (if_statement "if (7 < iVar9) {\n          iVar3 = iVar9;\n        }" (if "if") (parenthesized_expression "(7 < iVar9)" (( "(") (binary_expression "7 < iVar9" (number_literal "7") (< "<") (identifier "iVar9")) () ")")) (compound_statement "{\n          iVar3 = iVar9;\n        }" ({ "{") (expression_statement "iVar3 = iVar9;" (assignment_expression "iVar3 = iVar9" (identifier "iVar3") (= "=") (identifier "iVar9")) (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar9 = *(int *)(param_1 + 0x70);" (assignment_expression "iVar9 = *(int *)(param_1 + 0x70)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(param_1 + 0x70)" (* "*") (cast_expression "(int *)(param_1 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x70)" (( "(") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (if_statement "if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }\n      else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }" (if "if") (parenthesized_expression "((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0))" (( "(") (binary_expression "(iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)" (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(param_1 + 0x78) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x78) == 0" (pointer_expression "*(int *)(param_1 + 0x78)" (* "*") (cast_expression "(int *)(param_1 + 0x78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x78)" (( "(") (binary_expression "param_1 + 0x78" (identifier "param_1") (+ "+") (number_literal "0x78")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        iVar4 = param_2[1];\n        iVar6 = iVar5;\n        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;\nLAB_0003405c:\n        iVar4 = 4;\n      }" ({ "{") (expression_statement "iVar4 = param_2[1];" (assignment_expression "iVar4 = param_2[1]" (identifier "iVar4") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar6 = iVar5;" (assignment_expression "iVar6 = iVar5" (identifier "iVar6") (= "=") (identifier "iVar5")) (; ";")) (if_statement "if (iVar5 + 4 < iVar4) goto LAB_00033e2c;" (if "if") (parenthesized_expression "(iVar5 + 4 < iVar4)" (( "(") (binary_expression "iVar5 + 4 < iVar4" (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4")) (< "<") (identifier "iVar4")) () ")")) (goto_statement "goto LAB_00033e2c;" (goto "goto") (statement_identifier "LAB_00033e2c") (; ";"))) (labeled_statement "LAB_0003405c:\n        iVar4 = 4;" (statement_identifier "LAB_0003405c") (: ":") (expression_statement "iVar4 = 4;" (assignment_expression "iVar4 = 4" (identifier "iVar4") (= "=") (number_literal "4")) (; ";"))) (} "}")) (else_clause "else {\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }" (else "else") (compound_statement "{\n        iVar4 = param_2[1];\n        iVar6 = iVar5 + -4;\n        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;\nLAB_00033e2c:\n        iVar4 = iVar4 - iVar5;\n      }" ({ "{") (expression_statement "iVar4 = param_2[1];" (assignment_expression "iVar4 = param_2[1]" (identifier "iVar4") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar6 = iVar5 + -4;" (assignment_expression "iVar6 = iVar5 + -4" (identifier "iVar6") (= "=") (binary_expression "iVar5 + -4" (identifier "iVar5") (+ "+") (number_literal "-4"))) (; ";")) (if_statement "if (iVar4 <= iVar5 + 4) goto LAB_0003405c;" (if "if") (parenthesized_expression "(iVar4 <= iVar5 + 4)" (( "(") (binary_expression "iVar4 <= iVar5 + 4" (identifier "iVar4") (<= "<=") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4"))) () ")")) (goto_statement "goto LAB_0003405c;" (goto "goto") (statement_identifier "LAB_0003405c") (; ";"))) (labeled_statement "LAB_00033e2c:\n        iVar4 = iVar4 - iVar5;" (statement_identifier "LAB_00033e2c") (: ":") (expression_statement "iVar4 = iVar4 - iVar5;" (assignment_expression "iVar4 = iVar4 - iVar5" (identifier "iVar4") (= "=") (binary_expression "iVar4 - iVar5" (identifier "iVar4") (- "-") (identifier "iVar5"))) (; ";"))) (} "}")))) (if_statement "if (iVar3 == 0) {\n        trap(7);\n      }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (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 (iVar3 == 0) {\n        trap(7);\n      }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (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 "uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;" (assignment_expression "uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4" (identifier "uVar10") (= "=") (binary_expression "(iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4" (binary_expression "(iVar3 - (iVar4 + iVar6) % iVar3) % iVar3" (parenthesized_expression "(iVar3 - (iVar4 + iVar6) % iVar3)" (( "(") (binary_expression "iVar3 - (iVar4 + iVar6) % iVar3" (identifier "iVar3") (- "-") (binary_expression "(iVar4 + iVar6) % iVar3" (parenthesized_expression "(iVar4 + iVar6)" (( "(") (binary_expression "iVar4 + iVar6" (identifier "iVar4") (+ "+") (identifier "iVar6")) () ")")) (% "%") (identifier "iVar3"))) () ")")) (% "%") (identifier "iVar3")) (+ "+") (identifier "iVar4"))) (; ";")) (if_statement "if (0xff < (int)uVar10) {\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }" (if "if") (parenthesized_expression "(0xff < (int)uVar10)" (( "(") (binary_expression "0xff < (int)uVar10" (number_literal "0xff") (< "<") (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10"))) () ")")) (compound_statement "{\n        iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);\n        return iVar5;\n      }" ({ "{") (expression_statement "iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80);" (assignment_expression "iVar5 = (*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80)" (identifier "iVar5") (= "=") (call_expression "(*(code *)PTR___assert_fail_000adb00)\n                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80)" (parenthesized_expression "(*(code *)PTR___assert_fail_000adb00)" (( "(") (pointer_expression "*(code *)PTR___assert_fail_000adb00" (* "*") (cast_expression "(code *)PTR___assert_fail_000adb00" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___assert_fail_000adb00"))) () ")")) (argument_list "(PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,\n                           PTR_DAT_000ad2c8 + 0xc80)" (( "(") (binary_expression "PTR_DAT_000ad2c8 + -0x2b60" (identifier "PTR_DAT_000ad2c8") (+ "+") (number_literal "-0x2b60")) (, ",") (binary_expression "PTR_DAT_000ad2c8 + -0x3c40" (identifier "PTR_DAT_000ad2c8") (+ "+") (number_literal "-0x3c40")) (, ",") (number_literal "0x92d") (, ",") (binary_expression "PTR_DAT_000ad2c8 + 0xc80" (identifier "PTR_DAT_000ad2c8") (+ "+") (number_literal "0xc80")) () ")")))) (; ";")) (return_statement "return iVar5;" (return "return") (identifier "iVar5") (; ";")) (} "}"))) (expression_statement "unaff_s3 = (int *)0x0;" (assignment_expression "unaff_s3 = (int *)0x0" (identifier "unaff_s3") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (iVar9 != 0) {\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        unaff_s3 = *(int **)(iVar9 + 0x2c);\n      }" ({ "{") (expression_statement "unaff_s3 = *(int **)(iVar9 + 0x2c);" (assignment_expression "unaff_s3 = *(int **)(iVar9 + 0x2c)" (identifier "unaff_s3") (= "=") (pointer_expression "*(int **)(iVar9 + 0x2c)" (* "*") (cast_expression "(int **)(iVar9 + 0x2c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar9 + 0x2c)" (( "(") (binary_expression "iVar9 + 0x2c" (identifier "iVar9") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {\n        FUN_000332e8(param_2);\n      }" (if "if") (parenthesized_expression "(param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3))" (( "(") (binary_expression "param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)" (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]")) (< "<") (cast_expression "(int)(uVar10 + iVar5 + (int)unaff_s3)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar10 + iVar5 + (int)unaff_s3)" (( "(") (binary_expression "uVar10 + iVar5 + (int)unaff_s3" (binary_expression "uVar10 + iVar5" (identifier "uVar10") (+ "+") (identifier "iVar5")) (+ "+") (cast_expression "(int)unaff_s3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s3"))) () ")")))) () ")")) (compound_statement "{\n        FUN_000332e8(param_2);\n      }" ({ "{") (expression_statement "FUN_000332e8(param_2);" (call_expression "FUN_000332e8(param_2)" (identifier "FUN_000332e8") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";")) (} "}"))) (expression_statement "*(char *)(param_2[4] + 4) = (char)uVar10;" (assignment_expression "*(char *)(param_2[4] + 4) = (char)uVar10" (pointer_expression "*(char *)(param_2[4] + 4)" (* "*") (cast_expression "(char *)(param_2[4] + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[4] + 4)" (( "(") (binary_expression "param_2[4] + 4" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "4")) () ")")))) (= "=") (cast_expression "(char)uVar10" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar10"))) (; ";")) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < (int)uVar10) {\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }" (if "if") (parenthesized_expression "(0 < (int)uVar10)" (( "(") (binary_expression "0 < (int)uVar10" (number_literal "0") (< "<") (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10"))) () ")")) (compound_statement "{\n        do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);\n      }" ({ "{") (do_statement "do {\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        } while (uVar10 != uVar8);" (do "do") (compound_statement "{\n          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();\n          iVar5 = param_2[4] + uVar8;\n          uVar8 = uVar8 + 1;\n          *(undefined1 *)(iVar5 + *param_2) = uVar2;\n          uVar7 = uVar8;\n        }" ({ "{") (expression_statement "uVar2 = (*(code *)PTR_random_byte_000ad6ac)();" (assignment_expression "uVar2 = (*(code *)PTR_random_byte_000ad6ac)()" (identifier "uVar2") (= "=") (call_expression "(*(code *)PTR_random_byte_000ad6ac)()" (parenthesized_expression "(*(code *)PTR_random_byte_000ad6ac)" (( "(") (pointer_expression "*(code *)PTR_random_byte_000ad6ac" (* "*") (cast_expression "(code *)PTR_random_byte_000ad6ac" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_random_byte_000ad6ac"))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar5 = param_2[4] + uVar8;" (assignment_expression "iVar5 = param_2[4] + uVar8" (identifier "iVar5") (= "=") (binary_expression "param_2[4] + uVar8" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (+ "+") (identifier "uVar8"))) (; ";")) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" (identifier "uVar8") (= "=") (binary_expression "uVar8 + 1" (identifier "uVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined1 *)(iVar5 + *param_2) = uVar2;" (assignment_expression "*(undefined1 *)(iVar5 + *param_2) = uVar2" (pointer_expression "*(undefined1 *)(iVar5 + *param_2)" (* "*") (cast_expression "(undefined1 *)(iVar5 + *param_2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + *param_2)" (( "(") (binary_expression "iVar5 + *param_2" (identifier "iVar5") (+ "+") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "uVar7 = uVar8;" (assignment_expression "uVar7 = uVar8" (identifier "uVar7") (= "=") (identifier "uVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar10 != uVar8)" (( "(") (binary_expression "uVar10 != uVar8" (identifier "uVar10") (!= "!=") (identifier "uVar8")) () ")")) (; ";")) (} "}"))) (expression_statement "*(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);" (assignment_expression "*(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18)" (pointer_expression "*(char *)param_2[4]" (* "*") (cast_expression "(char *)param_2[4]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")))) (= "=") (cast_expression "(char)(uVar10 + *param_2 + -4 >> 0x18)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar10 + *param_2 + -4 >> 0x18)" (( "(") (binary_expression "uVar10 + *param_2 + -4 >> 0x18" (binary_expression "uVar10 + *param_2 + -4" (binary_expression "uVar10 + *param_2" (identifier "uVar10") (+ "+") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (+ "+") (number_literal "-4")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "*(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);" (assignment_expression "*(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10)" (pointer_expression "*(char *)(param_2[4] + 1)" (* "*") (cast_expression "(char *)(param_2[4] + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[4] + 1)" (( "(") (binary_expression "param_2[4] + 1" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "1")) () ")")))) (= "=") (cast_expression "(char)(uVar10 + *param_2 + -4 >> 0x10)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar10 + *param_2 + -4 >> 0x10)" (( "(") (binary_expression "uVar10 + *param_2 + -4 >> 0x10" (binary_expression "uVar10 + *param_2 + -4" (binary_expression "uVar10 + *param_2" (identifier "uVar10") (+ "+") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (+ "+") (number_literal "-4")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);" (assignment_expression "*(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8)" (pointer_expression "*(char *)(param_2[4] + 2)" (* "*") (cast_expression "(char *)(param_2[4] + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[4] + 2)" (( "(") (binary_expression "param_2[4] + 2" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "2")) () ")")))) (= "=") (cast_expression "(char)(uVar10 + *param_2 + -4 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar10 + *param_2 + -4 >> 8)" (( "(") (binary_expression "uVar10 + *param_2 + -4 >> 8" (binary_expression "uVar10 + *param_2 + -4" (binary_expression "uVar10 + *param_2" (identifier "uVar10") (+ "+") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (+ "+") (number_literal "-4")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);" (assignment_expression "unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4)" (identifier "unaff_s5") (= "=") (cast_expression "(int *)((uVar10 & 0xff) + *param_2 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uVar10 & 0xff) + *param_2 + -4)" (( "(") (binary_expression "(uVar10 & 0xff) + *param_2 + -4" (binary_expression "(uVar10 & 0xff) + *param_2" (parenthesized_expression "(uVar10 & 0xff)" (( "(") (binary_expression "uVar10 & 0xff" (identifier "uVar10") (& "&") (number_literal "0xff")) () ")")) (+ "+") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (+ "+") (number_literal "-4")) () ")")))) (; ";")) (expression_statement "*(char *)(param_2[4] + 3) = (char)unaff_s5;" (assignment_expression "*(char *)(param_2[4] + 3) = (char)unaff_s5" (pointer_expression "*(char *)(param_2[4] + 3)" (* "*") (cast_expression "(char *)(param_2[4] + 3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[4] + 3)" (( "(") (binary_expression "param_2[4] + 3" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "3")) () ")")))) (= "=") (cast_expression "(char)unaff_s5" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "unaff_s5"))) (; ";")) (expression_statement "iVar5 = *(int *)(param_1 + 0x60);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x60)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 0x60)" (* "*") (cast_expression "(int *)(param_1 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (if_statement "if (iVar5 == 0) {\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }\n      else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar3 = *(int *)(param_1 + 0x70);\n        iVar9 = param_2[4];\n        if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }\n      }" ({ "{") (expression_statement "iVar3 = *(int *)(param_1 + 0x70);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x70)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 0x70)" (* "*") (cast_expression "(int *)(param_1 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x70)" (( "(") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (expression_statement "iVar9 = param_2[4];" (assignment_expression "iVar9 = param_2[4]" (identifier "iVar9") (= "=") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if (iVar3 != 0) {\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          iVar6 = uVar10 + *param_2;\n          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;\nLAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);\nLAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));\n          iVar9 = param_2[4];\n        }" ({ "{") (expression_statement "iVar6 = uVar10 + *param_2;" (assignment_expression "iVar6 = uVar10 + *param_2" (identifier "iVar6") (= "=") (binary_expression "uVar10 + *param_2" (identifier "uVar10") (+ "+") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x78) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x78) == 0" (pointer_expression "*(int *)(param_1 + 0x78)" (* "*") (cast_expression "(int *)(param_1 + 0x78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x78)" (( "(") (binary_expression "param_1 + 0x78" (identifier "param_1") (+ "+") (number_literal "0x78")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00033fb4;" (goto "goto") (statement_identifier "LAB_00033fb4") (; ";"))) (labeled_statement "LAB_00034110:\n          pcVar12 = *(code **)(iVar3 + 0xc);" (statement_identifier "LAB_00034110") (: ":") (expression_statement "pcVar12 = *(code **)(iVar3 + 0xc);" (assignment_expression "pcVar12 = *(code **)(iVar3 + 0xc)" (identifier "pcVar12") (= "=") (pointer_expression "*(code **)(iVar3 + 0xc)" (* "*") (cast_expression "(code **)(iVar3 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")"))))) (; ";"))) (labeled_statement "LAB_00034114:\n          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));" (statement_identifier "LAB_00034114") (: ":") (expression_statement "(*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));" (call_expression "(*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))" (parenthesized_expression "(*pcVar12)" (( "(") (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12")) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x80)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x80)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")")))) (, ",") (identifier "iVar9") (, ",") (identifier "iVar6") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x1ac)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1ac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1ac)" (( "(") (binary_expression "param_1 + 0x1ac" (identifier "param_1") (+ "+") (number_literal "0x1ac")) () ")")))) () ")"))) (; ";"))) (expression_statement "iVar9 = param_2[4];" (assignment_expression "iVar9 = param_2[4]" (identifier "iVar9") (= "=") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }" (else "else") (compound_statement "{\n        iVar9 = param_2[4];\n        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }\n        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);\n        iVar9 = param_2[4];\n      }" ({ "{") (expression_statement "iVar9 = param_2[4];" (assignment_expression "iVar9 = param_2[4]" (identifier "iVar9") (= "=") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }\n        else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }" (if "if") (parenthesized_expression "((*(uint *)(iVar5 + 0x30) & 2) == 0)" (( "(") (binary_expression "(*(uint *)(iVar5 + 0x30) & 2) == 0" (parenthesized_expression "(*(uint *)(iVar5 + 0x30) & 2)" (( "(") (binary_expression "*(uint *)(iVar5 + 0x30) & 2" (pointer_expression "*(uint *)(iVar5 + 0x30)" (* "*") (cast_expression "(uint *)(iVar5 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x30)" (( "(") (binary_expression "iVar5 + 0x30" (identifier "iVar5") (+ "+") (number_literal "0x30")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }\n        }" ({ "{") (expression_statement "iVar3 = *(int *)(param_1 + 0x70);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x70)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 0x70)" (* "*") (cast_expression "(int *)(param_1 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x70)" (( "(") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (if_statement "if (iVar3 != 0) {\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }\n            goto LAB_00033fb4;\n          }" ({ "{") (expression_statement "iVar6 = uVar10 + *param_2;" (assignment_expression "iVar6 = uVar10 + *param_2" (identifier "iVar6") (= "=") (binary_expression "uVar10 + *param_2" (identifier "uVar10") (+ "+") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x78) != 0) {\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x78) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x78) != 0" (pointer_expression "*(int *)(param_1 + 0x78)" (* "*") (cast_expression "(int *)(param_1 + 0x78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x78)" (( "(") (binary_expression "param_1 + 0x78" (identifier "param_1") (+ "+") (number_literal "0x78")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);\n              iVar9 = param_2[4];\n              iVar3 = *(int *)(param_1 + 0x70);\n              iVar6 = uVar10 + *param_2;\n              goto LAB_00034110;\n            }" ({ "{") (labeled_statement "LAB_000340ec:\n              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);" (statement_identifier "LAB_000340ec") (: ":") (expression_statement "(**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);" (call_expression "(**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4)" (parenthesized_expression "(**(code **)(iVar5 + 0x10))" (( "(") (pointer_expression "**(code **)(iVar5 + 0x10)" (* "*") (pointer_expression "*(code **)(iVar5 + 0x10)" (* "*") (cast_expression "(code **)(iVar5 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x10)" (( "(") (binary_expression "iVar5 + 0x10" (identifier "iVar5") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x68)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x68)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x68)" (( "(") (binary_expression "param_1 + 0x68" (identifier "param_1") (+ "+") (number_literal "0x68")) () ")")))) (, ",") (binary_expression "iVar9 + 4" (identifier "iVar9") (+ "+") (number_literal "4")) (, ",") (binary_expression "iVar6 + -4" (identifier "iVar6") (+ "+") (number_literal "-4")) () ")"))) (; ";"))) (expression_statement "iVar9 = param_2[4];" (assignment_expression "iVar9 = param_2[4]" (identifier "iVar9") (= "=") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "iVar3 = *(int *)(param_1 + 0x70);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x70)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 0x70)" (* "*") (cast_expression "(int *)(param_1 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x70)" (( "(") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (expression_statement "iVar6 = uVar10 + *param_2;" (assignment_expression "iVar6 = uVar10 + *param_2" (identifier "iVar6") (= "=") (binary_expression "uVar10 + *param_2" (identifier "uVar10") (+ "+") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (goto_statement "goto LAB_00034110;" (goto "goto") (statement_identifier "LAB_00034110") (; ";")) (} "}"))) (goto_statement "goto LAB_00033fb4;" (goto "goto") (statement_identifier "LAB_00033fb4") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }" (else "else") (compound_statement "{\n          (**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));\n          iVar3 = *(int *)(param_1 + 0x70);\n          if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }\n          iVar5 = *(int *)(param_1 + 0x60);\n          iVar9 = param_2[4];\n          if (iVar5 == 0) goto LAB_00033ff0;\n        }" ({ "{") (expression_statement "(**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));" (call_expression "(**(code **)(iVar5 + 0x18))\n                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac))" (parenthesized_expression "(**(code **)(iVar5 + 0x18))" (( "(") (pointer_expression "**(code **)(iVar5 + 0x18)" (* "*") (pointer_expression "*(code **)(iVar5 + 0x18)" (* "*") (cast_expression "(code **)(iVar5 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x18)" (( "(") (binary_expression "iVar5 + 0x18" (identifier "iVar5") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x68)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x68)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x68)" (( "(") (binary_expression "param_1 + 0x68" (identifier "param_1") (+ "+") (number_literal "0x68")) () ")")))) (, ",") (identifier "iVar9") (, ",") (number_literal "4") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x1ac)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1ac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1ac)" (( "(") (binary_expression "param_1 + 0x1ac" (identifier "param_1") (+ "+") (number_literal "0x1ac")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar3 = *(int *)(param_1 + 0x70);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x70)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 0x70)" (* "*") (cast_expression "(int *)(param_1 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x70)" (( "(") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (if_statement "if (iVar3 != 0) {\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar9 = param_2[4];\n            iVar6 = uVar10 + *param_2;\n            if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }\nLAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;\n          }" ({ "{") (expression_statement "iVar9 = param_2[4];" (assignment_expression "iVar9 = param_2[4]" (identifier "iVar9") (= "=") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "iVar6 = uVar10 + *param_2;" (assignment_expression "iVar6 = uVar10 + *param_2" (identifier "iVar6") (= "=") (binary_expression "uVar10 + *param_2" (identifier "uVar10") (+ "+") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x78) != 0) {\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x78) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x78) != 0" (pointer_expression "*(int *)(param_1 + 0x78)" (* "*") (cast_expression "(int *)(param_1 + 0x78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x78)" (( "(") (binary_expression "param_1 + 0x78" (identifier "param_1") (+ "+") (number_literal "0x78")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              iVar5 = *(int *)(param_1 + 0x60);\n              if (iVar5 != 0) goto LAB_000340ec;\n              pcVar12 = *(code **)(iVar3 + 0xc);\n              goto LAB_00034114;\n            }" ({ "{") (expression_statement "iVar5 = *(int *)(param_1 + 0x60);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x60)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 0x60)" (* "*") (cast_expression "(int *)(param_1 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (if_statement "if (iVar5 != 0) goto LAB_000340ec;" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000340ec;" (goto "goto") (statement_identifier "LAB_000340ec") (; ";"))) (expression_statement "pcVar12 = *(code **)(iVar3 + 0xc);" (assignment_expression "pcVar12 = *(code **)(iVar3 + 0xc)" (identifier "pcVar12") (= "=") (pointer_expression "*(code **)(iVar3 + 0xc)" (* "*") (cast_expression "(code **)(iVar3 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (goto_statement "goto LAB_00034114;" (goto "goto") (statement_identifier "LAB_00034114") (; ";")) (} "}"))) (labeled_statement "LAB_00033fb4:\n            (**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;" (statement_identifier "LAB_00033fb4") (: ":") (expression_statement "(**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))\n            ;" (call_expression "(**(code **)(iVar3 + 0xc))\n                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))" (parenthesized_expression "(**(code **)(iVar3 + 0xc))" (( "(") (pointer_expression "**(code **)(iVar3 + 0xc)" (* "*") (pointer_expression "*(code **)(iVar3 + 0xc)" (* "*") (cast_expression "(code **)(iVar3 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x80)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x80)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")")))) (, ",") (identifier "iVar9") (, ",") (identifier "iVar6") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x1ac)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1ac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1ac)" (( "(") (binary_expression "param_1 + 0x1ac" (identifier "param_1") (+ "+") (number_literal "0x1ac")) () ")")))) () ")"))) (; ";"))) (} "}"))) (expression_statement "iVar5 = *(int *)(param_1 + 0x60);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x60)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 0x60)" (* "*") (cast_expression "(int *)(param_1 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (expression_statement "iVar9 = param_2[4];" (assignment_expression "iVar9 = param_2[4]" (identifier "iVar9") (= "=") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if (iVar5 == 0) goto LAB_00033ff0;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00033ff0;" (goto "goto") (statement_identifier "LAB_00033ff0") (; ";"))) (} "}")))) (expression_statement "(**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);" (call_expression "(**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2)" (parenthesized_expression "(**(code **)(iVar5 + 0x10))" (( "(") (pointer_expression "**(code **)(iVar5 + 0x10)" (* "*") (pointer_expression "*(code **)(iVar5 + 0x10)" (* "*") (cast_expression "(code **)(iVar5 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x10)" (( "(") (binary_expression "iVar5 + 0x10" (identifier "iVar5") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x68)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x68)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x68)" (( "(") (binary_expression "param_1 + 0x68" (identifier "param_1") (+ "+") (number_literal "0x68")) () ")")))) (, ",") (identifier "iVar9") (, ",") (binary_expression "uVar10 + *param_2" (identifier "uVar10") (+ "+") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")"))) (; ";")) (expression_statement "iVar9 = param_2[4];" (assignment_expression "iVar9 = param_2[4]" (identifier "iVar9") (= "=") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (} "}")))) (labeled_statement "LAB_00033ff0:\n      iVar3 = *param_2;" (statement_identifier "LAB_00033ff0") (: ":") (expression_statement "iVar3 = *param_2;" (assignment_expression "iVar3 = *param_2" (identifier "iVar3") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";"))) (expression_statement "iVar5 = uVar10 + iVar3 + (int)unaff_s3;" (assignment_expression "iVar5 = uVar10 + iVar3 + (int)unaff_s3" (identifier "iVar5") (= "=") (binary_expression "uVar10 + iVar3 + (int)unaff_s3" (binary_expression "uVar10 + iVar3" (identifier "uVar10") (+ "+") (identifier "iVar3")) (+ "+") (cast_expression "(int)unaff_s3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s3")))) (; ";")) (expression_statement "*(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;" (assignment_expression "*(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1" (pointer_expression "*(int *)(param_1 + 0x1ac)" (* "*") (cast_expression "(int *)(param_1 + 0x1ac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1ac)" (( "(") (binary_expression "param_1 + 0x1ac" (identifier "param_1") (+ "+") (number_literal "0x1ac")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x1ac) + 1" (pointer_expression "*(int *)(param_1 + 0x1ac)" (* "*") (cast_expression "(int *)(param_1 + 0x1ac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1ac)" (( "(") (binary_expression "param_1 + 0x1ac" (identifier "param_1") (+ "+") (number_literal "0x1ac")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_2[8] = uVar10 + iVar3;" (assignment_expression "param_2[8] = uVar10 + iVar3" (subscript_expression "param_2[8]" (identifier "param_2") ([ "[") (number_literal "8") (] "]")) (= "=") (binary_expression "uVar10 + iVar3" (identifier "uVar10") (+ "+") (identifier "iVar3"))) (; ";")) (expression_statement "param_2[5] = iVar9;" (assignment_expression "param_2[5] = iVar9" (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "iVar9")) (; ";")) (} "}")) (else_clause "else {\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }" (else "else") (compound_statement "{\n      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);\n      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);\n      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);\n      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;\n      iVar3 = *(int *)(param_1 + 0x1ac);\n      iVar5 = *param_2 + -1;\n      param_2[5] = param_2[4] + 1;\n      *(int *)(param_1 + 0x1ac) = iVar3 + 1;\n    }" ({ "{") (expression_statement "*(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);" (assignment_expression "*(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18)" (pointer_expression "*(char *)(param_2[4] + 1)" (* "*") (cast_expression "(char *)(param_2[4] + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[4] + 1)" (( "(") (binary_expression "param_2[4] + 1" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "1")) () ")")))) (= "=") (cast_expression "(char)((uint)(iVar5 + -5) >> 0x18)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)(iVar5 + -5) >> 0x18)" (( "(") (binary_expression "(uint)(iVar5 + -5) >> 0x18" (call_expression "(uint)(iVar5 + -5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar5 + -5)" (( "(") (binary_expression "iVar5 + -5" (identifier "iVar5") (+ "+") (number_literal "-5")) () ")"))) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "*(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);" (assignment_expression "*(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10)" (pointer_expression "*(char *)(param_2[4] + 2)" (* "*") (cast_expression "(char *)(param_2[4] + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[4] + 2)" (( "(") (binary_expression "param_2[4] + 2" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "2")) () ")")))) (= "=") (cast_expression "(char)((uint)(*param_2 + -5) >> 0x10)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)(*param_2 + -5) >> 0x10)" (( "(") (binary_expression "(uint)(*param_2 + -5) >> 0x10" (call_expression "(uint)(*param_2 + -5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*param_2 + -5)" (( "(") (binary_expression "*param_2 + -5" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "-5")) () ")"))) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);" (assignment_expression "*(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8)" (pointer_expression "*(char *)(param_2[4] + 3)" (* "*") (cast_expression "(char *)(param_2[4] + 3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[4] + 3)" (( "(") (binary_expression "param_2[4] + 3" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "3")) () ")")))) (= "=") (cast_expression "(char)((uint)(*param_2 + -5) >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)(*param_2 + -5) >> 8)" (( "(") (binary_expression "(uint)(*param_2 + -5) >> 8" (call_expression "(uint)(*param_2 + -5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*param_2 + -5)" (( "(") (binary_expression "*param_2 + -5" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "-5")) () ")"))) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "*(char *)(param_2[4] + 4) = (char)*param_2 + -5;" (assignment_expression "*(char *)(param_2[4] + 4) = (char)*param_2 + -5" (pointer_expression "*(char *)(param_2[4] + 4)" (* "*") (cast_expression "(char *)(param_2[4] + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[4] + 4)" (( "(") (binary_expression "param_2[4] + 4" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "(char)*param_2 + -5" (cast_expression "(char)*param_2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (+ "+") (number_literal "-5"))) (; ";")) (expression_statement "iVar3 = *(int *)(param_1 + 0x1ac);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x1ac)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 0x1ac)" (* "*") (cast_expression "(int *)(param_1 + 0x1ac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1ac)" (( "(") (binary_expression "param_1 + 0x1ac" (identifier "param_1") (+ "+") (number_literal "0x1ac")) () ")"))))) (; ";")) (expression_statement "iVar5 = *param_2 + -1;" (assignment_expression "iVar5 = *param_2 + -1" (identifier "iVar5") (= "=") (binary_expression "*param_2 + -1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "param_2[5] = param_2[4] + 1;" (assignment_expression "param_2[5] = param_2[4] + 1" (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "param_2[4] + 1" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(int *)(param_1 + 0x1ac) = iVar3 + 1;" (assignment_expression "*(int *)(param_1 + 0x1ac) = iVar3 + 1" (pointer_expression "*(int *)(param_1 + 0x1ac)" (* "*") (cast_expression "(int *)(param_1 + 0x1ac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1ac)" (( "(") (binary_expression "param_1 + 0x1ac" (identifier "param_1") (+ "+") (number_literal "0x1ac")) () ")")))) (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (if_statement "if (local_2c == *(int *)puVar1) {\n      return iVar5;\n    }" (if "if") (parenthesized_expression "(local_2c == *(int *)puVar1)" (( "(") (binary_expression "local_2c == *(int *)puVar1" (identifier "local_2c") (== "==") (pointer_expression "*(int *)puVar1" (* "*") (cast_expression "(int *)puVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1")))) () ")")) (compound_statement "{\n      return iVar5;\n    }" ({ "{") (return_statement "return iVar5;" (return "return") (identifier "iVar5") (; ";")) (} "}"))) (expression_statement "iVar5 = local_2c;" (assignment_expression "iVar5 = local_2c" (identifier "iVar5") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000adca4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000adca4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000adca4)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000adca4" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000adca4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000adca4"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_00034520:\n    param_2[6] = iVar5;" (statement_identifier "LAB_00034520") (: ":") (expression_statement "param_2[6] = iVar5;" (assignment_expression "param_2[6] = iVar5" (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "iVar5")) (; ";"))) (expression_statement "piVar11 = unaff_s3;" (assignment_expression "piVar11 = unaff_s3" (identifier "piVar11") (= "=") (identifier "unaff_s3")) (; ";")) (labeled_statement "LAB_0003420c:\n    FUN_0002fb84(param_2,piVar11,unaff_s5);" (statement_identifier "LAB_0003420c") (: ":") (expression_statement "FUN_0002fb84(param_2,piVar11,unaff_s5);" (call_expression "FUN_0002fb84(param_2,piVar11,unaff_s5)" (identifier "FUN_0002fb84") (argument_list "(param_2,piVar11,unaff_s5)" (( "(") (identifier "param_2") (, ",") (identifier "piVar11") (, ",") (identifier "unaff_s5") () ")"))) (; ";"))) (expression_statement "iVar5 = param_2[6];" (assignment_expression "iVar5 = param_2[6]" (identifier "iVar5") (= "=") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "unaff_s3 = &iStack_28 + uVar7 * 3;" (assignment_expression "unaff_s3 = &iStack_28 + uVar7 * 3" (identifier "unaff_s3") (= "=") (binary_expression "&iStack_28 + uVar7 * 3" (pointer_expression "&iStack_28" (& "&") (identifier "iStack_28")) (+ "+") (binary_expression "uVar7 * 3" (identifier "uVar7") (* "*") (number_literal "3")))) (; ";")) (expression_statement "local_5c[uVar7 * 3 + 2] = 1;" (assignment_expression "local_5c[uVar7 * 3 + 2] = 1" (subscript_expression "local_5c[uVar7 * 3 + 2]" (identifier "local_5c") ([ "[") (binary_expression "uVar7 * 3 + 2" (binary_expression "uVar7 * 3" (identifier "uVar7") (* "*") (number_literal "3")) (+ "+") (number_literal "2")) (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "local_5c[uVar7 * 3] = iVar5;" (assignment_expression "local_5c[uVar7 * 3] = iVar5" (subscript_expression "local_5c[uVar7 * 3]" (identifier "local_5c") ([ "[") (binary_expression "uVar7 * 3" (identifier "uVar7") (* "*") (number_literal "3")) (] "]")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "FUN_0002fb84(param_2,piVar11,unaff_s5);" (call_expression "FUN_0002fb84(param_2,piVar11,unaff_s5)" (identifier "FUN_0002fb84") (argument_list "(param_2,piVar11,unaff_s5)" (( "(") (identifier "param_2") (, ",") (identifier "piVar11") (, ",") (identifier "unaff_s5") () ")"))) (; ";")) (if_statement "if (local_64 != 0) {\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }" (if "if") (parenthesized_expression "(local_64 != 0)" (( "(") (binary_expression "local_64 != 0" (identifier "local_64") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];\n    }" ({ "{") (expression_statement "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];" (assignment_expression "local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3]" (subscript_expression "local_5c[uVar7 * 3 + 1]" (identifier "local_5c") ([ "[") (binary_expression "uVar7 * 3 + 1" (binary_expression "uVar7 * 3" (identifier "uVar7") (* "*") (number_literal "3")) (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "param_2[6] - local_5c[uVar7 * 3]" (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (- "-") (subscript_expression "local_5c[uVar7 * 3]" (identifier "local_5c") ([ "[") (binary_expression "uVar7 * 3" (identifier "uVar7") (* "*") (number_literal "3")) (] "]")))) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}")))

/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

int function_1(type_1 ssh,type_2 *pkt)

{
  char *texttype;
  type_3 uVar2;
  type_4 *var_27;
  int var_20;
  int var_3;
  type_5 var_28;
  long lVar6;
  type_1 ssh_00;
  type_6 *var_16;
  type_2 *pPVar8;
  size_t n;
  type_3 *var_14;
  type_7 type;
  int var_10;
  type_3 **var_2;
  type_3 **var_26;
  type_3 **var_25;
  type_3 *var_18;
  type_3 **unaff_s3;
  int *piVar15;
  int *unaff_s5;
  int var_1;
  type_8 *p_Var16;
  type_9 *var_19;
  type_9 *pcVar18;
  type_10 uStackY_c0;
  type_10 uStackY_bc;
  type_2 *pPStackY_b4;
  type_3 **ppuStackY_b0;
  type_3 **ppuStackY_ac;
  type_3 **ppuStackY_a8;
  type_9 *pcStackY_a4;
  type_3 *var_6;
  int var_8;
  type_11 blanks [4];
  type_3 *puStack_28;
  
  var_14 = (type_3 *)pkt->length;
  piVar15 = *(int **)(var_1 + 0x7a070);
  var_20 = *piVar15;
  if (ssh->logctx == (void *)0x0) goto LAB_00033da4;
  var_2 = (type_3 **)ssh->logomitdata;
  var_3 = pkt->type;
  pkt->savedpos = 0;
  pkt->length = (int)var_14 - ((int)pkt->body - (int)pkt->data);
  if ((var_2 != (type_3 **)0x0) && (var_2 = (type_3 **)0x0, var_3 - 0x5eU < 2)) {
    pPVar8 = pkt;
    var_4(pkt);
    if (pkt->type == 0x5f) {
      var_4(pPVar8);
    }
    blanks[0].type = 2;
    blanks[0].offset = pkt->savedpos + 4;
    var_5(pkt,(char **)&var_6,&var_8);
    if (var_6 == (type_3 *)0x0) {
      var_3 = pkt->type;
      var_2 = (type_3 **)0x0;
    }
    else {
      var_2 = (type_3 **)0x1;
      var_3 = pkt->type;
    }
  }
  if (var_3 == 0x32) {
    var_3 = var_7(ssh->conf,0x7b);
    if (var_3 != 0) {
      unaff_s5 = &var_8;
      unaff_s3 = &var_6;
      pkt->savedpos = 0;
      var_5(pkt,(char **)unaff_s3,unaff_s5);
      var_5(pkt,(char **)unaff_s3,unaff_s5);
      var_5(pkt,(char **)unaff_s3,unaff_s5);
      if (var_8 == 8) {
        var_3 = (**(type_9 **)(var_1 + 0x7a054))(var_6,*(int *)(var_9 + var_1 + 4) + -0x1d5c,8);
        var_10 = pkt->length;
        var_25 = var_2;
        if (var_3 != 0) goto LAB_00033d20;
        var_3 = pkt->savedpos;
        if (0 < var_10 - var_3) {
          var_3 = var_3 + 1;
          pkt->savedpos = var_3;
        }
        blanks[(int)var_2].offset = var_3;
        blanks[(int)var_2].type = 1;
        var_5(pkt,(char **)unaff_s3,unaff_s5);
        if (var_6 != (type_3 *)0x0) {
          var_25 = (type_3 **)((int)var_2 + 1);
          blanks[(int)var_2].len = pkt->savedpos - blanks[(int)var_2].offset;
          var_5(pkt,(char **)unaff_s3,unaff_s5);
          unaff_s3 = var_25;
          if (var_6 == (type_3 *)0x0) {
            var_10 = pkt->length;
            goto LAB_00033d20;
          }
          var_10 = pkt->length;
          blanks[(int)var_2].len = pkt->savedpos - blanks[(int)var_25].offset;
          goto LAB_00033d20;
        }
      }
      goto LAB_00033d1c;
    }
    var_3 = pkt->type;
  }
  if ((ssh->pkt_actx == var_11) && (var_3 == 0x3d)) {
    var_3 = var_7(ssh->conf,0x7b);
    if (var_3 != 0) {
      pkt->savedpos = 0;
      unaff_s5 = &var_8;
      var_4(pkt);
      blanks[(int)var_2].offset = pkt->savedpos;
      blanks[(int)var_2].type = 1;
      do {
        var_5(pkt,(char **)&var_6,unaff_s5);
      } while (var_6 != (type_3 *)0x0);
      var_10 = pkt->length;
      blanks[(int)var_2].len = pkt->savedpos - blanks[(int)var_2].offset;
      var_25 = (type_3 **)((int)var_2 + 1);
      unaff_s3 = &var_6;
      goto LAB_00033d20;
    }
    var_3 = pkt->type;
  }
  if ((var_3 == 0x62) && (var_3 = var_7(ssh->conf,0x7b), var_3 != 0)) {
    pkt->savedpos = 0;
    unaff_s5 = &var_8;
    unaff_s3 = &var_6;
    pPVar8 = pkt;
    var_4(pkt);
    var_5(pPVar8,(char **)unaff_s3,unaff_s5);
    if (var_8 == 7) {
      var_10 = pkt->savedpos;
      var_3 = var_10 + 1;
      var_25 = unaff_s3;
      if (pkt->length - var_10 < 1) goto LAB_0003420c;
      if (pkt->length - var_3 < 1) goto LAB_00034520;
      pkt->savedpos = var_10 + 2;
      goto LAB_0003420c;
    }
  }
LAB_00033d1c:
  var_10 = pkt->length;
  var_25 = var_2;
LAB_00033d20:
  do {
    type = (type_7)pkt->data[5];
    texttype = var_12(ssh->pkt_kctx,ssh->pkt_actx,type);
    var_13(ssh->logctx,1,type,texttype,pkt->body,var_10,(int)var_25,blanks,
               &ssh->v2_outgoing_sequence,pkt->downstream_id,pkt->additional_log_text);
    var_14 = pkt->body + (pkt->length - (int)pkt->data);
    pkt->length = (long)var_14;
LAB_00033da4:
    var_2 = (type_3 **)ssh->bare_connection;
    if (var_2 == (type_3 **)0x0) {
      if (ssh->cscomp != (type_12 *)0x0) {
        var_3 = (*ssh->cscomp->compress)
                          (ssh->cs_comp_ctx,pkt->data + 5,(int)(var_14 + -5),&var_6,&var_8);
        if (var_3 != 0) {
                    /* WARNING: Subroutine does not return */
          pkt->length = 5;
          var_15(pkt,var_6,var_8);
        }
        var_14 = (type_3 *)pkt->length;
      }
      if (ssh->cscipher == (type_4 *)0x0) {
        var_3 = 8;
      }
      else {
        var_10 = ssh->cscipher->blksize;
        var_3 = 8;
        if (7 < var_10) {
          var_3 = var_10;
        }
      }
      var_16 = ssh->csmac;
      if ((var_16 == (type_6 *)0x0) || (ssh->csmac_etm == 0)) {
        var_10 = pkt->forcepad;
        var_18 = var_14;
        if ((int)(var_14 + 4) < var_10) goto LAB_00033e2c;
LAB_0003405c:
        var_10 = 4;
      }
      else {
        var_10 = pkt->forcepad;
        var_18 = var_14 + -4;
        if (var_10 <= (int)(var_14 + 4)) goto LAB_0003405c;
LAB_00033e2c:
        var_10 = var_10 - (int)var_14;
      }
      if (var_3 == 0) {
        var_17(7);
      }
      if (var_3 == 0) {
        var_17(7);
      }
      var_25 = (type_3 **)((var_3 - (int)(var_18 + var_10) % var_3) % var_3 + var_10);
      if (0xff < (int)var_25) {
        var_20 = 0x92d;
        var_19 = *(type_9 **)(var_1 + 0x79e9c);
        pPVar8 = (type_2 *)(*(int *)(var_9 + var_1 + 4) + -0x3c40);
        pcVar18 = ssh2_pkt_defer_noqueue;
        ssh_00 = (type_1)(*(int *)(var_9 + var_1 + 4) + -0x2b60);
        (*var_19)();
        uStackY_bc = **(type_10 **)(var_19 + 0x7978c);
        pPStackY_b4 = pkt;
        ppuStackY_b0 = var_2;
        ppuStackY_ac = var_25;
        ppuStackY_a8 = unaff_s3;
        pcStackY_a4 = pcVar18;
        if ((((ssh_00->cscipher != (type_4 *)0x0) && ((ssh_00->cscipher->flags & 1) != 0)) &&
            (var_20 == 0 && ssh_00->deferred_len == 0)) && ((ssh_00->remote_bugs & 0x200U) == 0)) {
          pPVar8 = var_21(2);
          uStackY_c0 = 0;
                    /* WARNING: Subroutine does not return */
          var_15(pPVar8,&uStackY_c0,4);
        }
        var_20 = function_1(ssh_00,pPVar8);
        var_3 = ssh_00->deferred_len;
        if (ssh_00->deferred_size < var_3 + var_20) {
          n = var_3 + var_20 + 0x80;
          ssh_00->deferred_size = n;
          var_14 = (type_3 *)var_22(ssh_00->deferred_send_data,n,1);
          var_3 = ssh_00->deferred_len;
          ssh_00->deferred_send_data = var_14;
        }
        else {
          var_14 = ssh_00->deferred_send_data;
        }
        (**(type_9 **)(var_19 + 0x79790))(var_14 + var_3,pPVar8->body,var_20);
        var_3 = pPVar8->encrypted_len;
        var_14 = pPVar8->data;
        ssh_00->deferred_len = ssh_00->deferred_len + var_20;
                    /* WARNING: Subroutine does not return */
        ssh_00->deferred_data_size = ssh_00->deferred_data_size + var_3;
        var_23(var_14);
      }
      unaff_s3 = (type_3 **)0x0;
      if (var_16 != (type_6 *)0x0) {
        unaff_s3 = (type_3 **)var_16->len;
      }
      if (pkt->maxlen < (int)((type_3 *)((int)var_25 + (int)var_14) + (int)unaff_s3)) {
        var_24(pkt,(int)((type_3 *)((int)var_25 + (int)var_14) + (int)unaff_s3));
      }
      pkt->data[4] = (type_3)var_25;
      var_26 = (type_3 **)0x0;
      if (0 < (int)var_25) {
        do {
          uVar2 = (**(type_9 **)(var_1 + 0x79a48))();
          var_14 = pkt->data + (int)var_26;
          var_26 = (type_3 **)((int)var_26 + 1);
          var_14[pkt->length] = uVar2;
          var_2 = var_26;
        } while (var_25 != var_26);
      }
      *pkt->data = (type_3)((type_7)((int)var_25 + pkt->length + -4) >> 0x18);
      pkt->data[1] = (type_3)((type_7)((int)var_25 + pkt->length + -4) >> 0x10);
      pkt->data[2] = (type_3)((type_7)((int)var_25 + pkt->length + -4) >> 8);
      unaff_s5 = (int *)(((type_7)var_25 & 0xff) + pkt->length + -4);
      pkt->data[3] = (type_3)unaff_s5;
      var_27 = ssh->cscipher;
      if (var_27 == (type_4 *)0x0) {
        var_16 = ssh->csmac;
        var_14 = pkt->data;
        if (var_16 != (type_6 *)0x0) {
          var_3 = (int)var_25 + pkt->length;
          if (ssh->csmac_etm == 0) goto LAB_00033fb4;
LAB_00034110:
          p_Var16 = var_16->generate;
LAB_00034114:
          (*p_Var16)(ssh->cs_mac_ctx,var_14,var_3,ssh->v2_outgoing_sequence);
          var_14 = pkt->data;
        }
      }
      else {
        var_14 = pkt->data;
        if ((var_27->flags & 2) == 0) {
          var_16 = ssh->csmac;
          if (var_16 != (type_6 *)0x0) {
            var_3 = (int)var_25 + pkt->length;
            if (ssh->csmac_etm != 0) {
LAB_000340ec:
              (*var_27->encrypt)(ssh->cs_cipher_ctx,var_14 + 4,var_3 + -4);
              var_14 = pkt->data;
              var_16 = ssh->csmac;
              var_3 = (int)var_25 + pkt->length;
              goto LAB_00034110;
            }
            goto LAB_00033fb4;
          }
        }
        else {
          (*var_27->encrypt_length)(ssh->cs_cipher_ctx,var_14,4,ssh->v2_outgoing_sequence);
          var_16 = ssh->csmac;
          if (var_16 != (type_6 *)0x0) {
            var_14 = pkt->data;
            var_3 = (int)var_25 + pkt->length;
            if (ssh->csmac_etm != 0) {
              var_27 = ssh->cscipher;
              if (var_27 != (type_4 *)0x0) goto LAB_000340ec;
              p_Var16 = var_16->generate;
              goto LAB_00034114;
            }
LAB_00033fb4:
            (*var_16->generate)(ssh->cs_mac_ctx,var_14,var_3,ssh->v2_outgoing_sequence);
          }
          var_27 = ssh->cscipher;
          var_14 = pkt->data;
          if (var_27 == (type_4 *)0x0) goto LAB_00033ff0;
        }
        (*var_27->encrypt)(ssh->cs_cipher_ctx,var_14,(int)var_25 + pkt->length);
        var_14 = pkt->data;
      }
LAB_00033ff0:
      var_10 = (int)var_25 + pkt->length;
      var_3 = var_10 + (int)unaff_s3;
      ssh->v2_outgoing_sequence = ssh->v2_outgoing_sequence + 1;
      pkt->encrypted_len = var_10;
      pkt->body = var_14;
    }
    else {
      pkt->data[1] = (type_3)((type_7)(var_14 + -5) >> 0x18);
      pkt->data[2] = (type_3)((type_7)(pkt->length + -5) >> 0x10);
      pkt->data[3] = (type_3)((type_7)(pkt->length + -5) >> 8);
      pkt->data[4] = (char)pkt->length + 0xfb;
      var_28 = ssh->v2_outgoing_sequence;
      var_3 = pkt->length + -1;
      pkt->body = pkt->data + 1;
      ssh->v2_outgoing_sequence = var_28 + 1;
    }
    if (var_20 == *piVar15) {
      return var_3;
    }
    var_3 = var_20;
    (**(type_9 **)(var_1 + 0x7a040))();
LAB_00034520:
    pkt->savedpos = var_3;
    var_25 = unaff_s3;
LAB_0003420c:
    var_5(pkt,(char **)var_25,unaff_s5);
    lVar6 = pkt->savedpos;
    unaff_s3 = &puStack_28 + (int)var_2 * 3;
    blanks[(int)var_2].type = 1;
    blanks[(int)var_2].offset = lVar6;
    var_5(pkt,(char **)var_25,unaff_s5);
    if (var_6 == (type_3 *)0x0) goto LAB_00033d1c;
    var_10 = pkt->length;
    blanks[(int)var_2].len = pkt->savedpos - blanks[(int)var_2].offset;
    var_25 = (type_3 **)((int)var_2 + 1);
  } while( true );
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) 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: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) 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: (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: (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))))) (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: (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))))) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (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: (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: (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))))) (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: (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)))) 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: (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))))) 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: (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)))))))) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal)))))) (return_statement (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) 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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) 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: (pointer_expression argument: (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)

{
  undefined *puVar1;
  undefined1 uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  int iVar9;
  uint uVar10;
  int *unaff_s3;
  int *piVar11;
  int *unaff_s5;
  code *pcVar12;
  int local_64;
  int local_60;
  int local_5c [12];
  int local_2c;
  int iStack_28;
  
  puVar1 = PTR___stack_chk_guard_000adcd4;
  iVar5 = *param_2;
  local_2c = *(int *)PTR___stack_chk_guard_000adcd4;
  if (*(int *)(param_1 + 0x18) == 0) goto LAB_00033da4;
  uVar7 = *(uint *)(param_1 + 0x24c);
  iVar3 = param_2[2];
  param_2[6] = 0;
  *param_2 = iVar5 - (param_2[5] - param_2[4]);
  if ((uVar7 != 0) && (uVar7 = 0, iVar3 - 0x5eU < 2)) {
    FUN_0002f068(param_2);
    if (param_2[2] == 0x5f) {
      FUN_0002f068();
    }
    local_5c[2] = 2;
    local_5c[0] = param_2[6] + 4;
    FUN_0002fb84(param_2,&local_64,&local_60);
    if (local_64 == 0) {
      iVar3 = param_2[2];
      uVar7 = 0;
    }
    else {
      uVar7 = 1;
      iVar3 = param_2[2];
    }
  }
  if (iVar3 == 0x32) {
    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);
    if (iVar5 != 0) {
      unaff_s5 = &local_60;
      unaff_s3 = &local_64;
      param_2[6] = 0;
      FUN_0002fb84(param_2,unaff_s3,unaff_s5);
      FUN_0002fb84(param_2,unaff_s3,unaff_s5);
      FUN_0002fb84(param_2,unaff_s3,unaff_s5);
      if (local_60 == 8) {
        iVar5 = (*(code *)PTR_memcmp_000adcb8)(local_64,PTR_DAT_000ad2c8 + -0x1d5c,8);
        if (iVar5 == 0) {
          iVar5 = param_2[6];
          if (0 < *param_2 - iVar5) {
            iVar5 = iVar5 + 1;
            param_2[6] = iVar5;
          }
          local_5c[uVar7 * 3] = iVar5;
          local_5c[uVar7 * 3 + 2] = 1;
          FUN_0002fb84(param_2,unaff_s3,unaff_s5);
          if (local_64 != 0) {
            piVar11 = (int *)(uVar7 + 1);
            local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];
            FUN_0002fb84(param_2,unaff_s3,unaff_s5);
            unaff_s3 = piVar11;
            if (local_64 != 0) {
              local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[(int)piVar11 * 3];
            }
          }
        }
      }
      goto LAB_00033d20;
    }
    iVar3 = param_2[2];
  }
  if ((*(int *)(param_1 + 0x188) == 4) && (iVar3 == 0x3d)) {
    iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b);
    if (iVar5 != 0) {
      param_2[6] = 0;
      unaff_s5 = &local_60;
      FUN_0002f068(param_2);
      local_5c[uVar7 * 3] = param_2[6];
      local_5c[uVar7 * 3 + 2] = 1;
      do {
        FUN_0002fb84(param_2,&local_64,unaff_s5);
      } while (local_64 != 0);
      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];
      unaff_s3 = &local_64;
      goto LAB_00033d20;
    }
    iVar3 = param_2[2];
  }
  if ((iVar3 == 0x62) && (iVar5 = conf_get_int(*(undefined4 *)(param_1 + 0x248),0x7b), iVar5 != 0))
  {
    param_2[6] = 0;
    unaff_s5 = &local_60;
    unaff_s3 = &local_64;
    FUN_0002f068(param_2);
    FUN_0002fb84();
    if (local_60 == 7) {
      iVar3 = param_2[6];
      iVar5 = iVar3 + 1;
      piVar11 = unaff_s3;
      if (*param_2 - iVar3 < 1) goto LAB_0003420c;
      if (*param_2 - iVar5 < 1) goto LAB_00034520;
      param_2[6] = iVar3 + 2;
      goto LAB_0003420c;
    }
  }
LAB_00033d20:
  do {
    FUN_00031e0c(*(undefined4 *)(param_1 + 0x184),*(undefined4 *)(param_1 + 0x188),
                 *(undefined1 *)(param_2[4] + 5));
    log_packet(*(undefined4 *)(param_1 + 0x18),1);
    iVar5 = (param_2[5] - param_2[4]) + *param_2;
    *param_2 = iVar5;
LAB_00033da4:
    uVar7 = *(uint *)(param_1 + 0xec);
    if (uVar7 == 0) {
      if (*(int *)(param_1 + 0x88) != 0) {
        iVar5 = (**(code **)(*(int *)(param_1 + 0x88) + 0x10))
                          (*(undefined4 *)(param_1 + 0x90),param_2[4] + 5,iVar5 + -5,&local_64,
                           &local_60);
        if (iVar5 == 0) {
          iVar5 = *param_2;
        }
        else {
          *param_2 = 5;
          FUN_00033374(param_2,local_64,local_60);
          safefree(local_64);
          iVar5 = *param_2;
        }
      }
      if (*(int *)(param_1 + 0x60) == 0) {
        iVar3 = 8;
      }
      else {
        iVar9 = *(int *)(*(int *)(param_1 + 0x60) + 0x24);
        iVar3 = 8;
        if (7 < iVar9) {
          iVar3 = iVar9;
        }
      }
      iVar9 = *(int *)(param_1 + 0x70);
      if ((iVar9 == 0) || (*(int *)(param_1 + 0x78) == 0)) {
        iVar4 = param_2[1];
        iVar6 = iVar5;
        if (iVar5 + 4 < iVar4) goto LAB_00033e2c;
LAB_0003405c:
        iVar4 = 4;
      }
      else {
        iVar4 = param_2[1];
        iVar6 = iVar5 + -4;
        if (iVar4 <= iVar5 + 4) goto LAB_0003405c;
LAB_00033e2c:
        iVar4 = iVar4 - iVar5;
      }
      if (iVar3 == 0) {
        trap(7);
      }
      if (iVar3 == 0) {
        trap(7);
      }
      uVar10 = (iVar3 - (iVar4 + iVar6) % iVar3) % iVar3 + iVar4;
      if (0xff < (int)uVar10) {
        iVar5 = (*(code *)PTR___assert_fail_000adb00)
                          (PTR_DAT_000ad2c8 + -0x2b60,PTR_DAT_000ad2c8 + -0x3c40,0x92d,
                           PTR_DAT_000ad2c8 + 0xc80);
        return iVar5;
      }
      unaff_s3 = (int *)0x0;
      if (iVar9 != 0) {
        unaff_s3 = *(int **)(iVar9 + 0x2c);
      }
      if (param_2[7] < (int)(uVar10 + iVar5 + (int)unaff_s3)) {
        FUN_000332e8(param_2);
      }
      *(char *)(param_2[4] + 4) = (char)uVar10;
      uVar8 = 0;
      if (0 < (int)uVar10) {
        do {
          uVar2 = (*(code *)PTR_random_byte_000ad6ac)();
          iVar5 = param_2[4] + uVar8;
          uVar8 = uVar8 + 1;
          *(undefined1 *)(iVar5 + *param_2) = uVar2;
          uVar7 = uVar8;
        } while (uVar10 != uVar8);
      }
      *(char *)param_2[4] = (char)(uVar10 + *param_2 + -4 >> 0x18);
      *(char *)(param_2[4] + 1) = (char)(uVar10 + *param_2 + -4 >> 0x10);
      *(char *)(param_2[4] + 2) = (char)(uVar10 + *param_2 + -4 >> 8);
      unaff_s5 = (int *)((uVar10 & 0xff) + *param_2 + -4);
      *(char *)(param_2[4] + 3) = (char)unaff_s5;
      iVar5 = *(int *)(param_1 + 0x60);
      if (iVar5 == 0) {
        iVar3 = *(int *)(param_1 + 0x70);
        iVar9 = param_2[4];
        if (iVar3 != 0) {
          iVar6 = uVar10 + *param_2;
          if (*(int *)(param_1 + 0x78) == 0) goto LAB_00033fb4;
LAB_00034110:
          pcVar12 = *(code **)(iVar3 + 0xc);
LAB_00034114:
          (*pcVar12)(*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac));
          iVar9 = param_2[4];
        }
      }
      else {
        iVar9 = param_2[4];
        if ((*(uint *)(iVar5 + 0x30) & 2) == 0) {
          iVar3 = *(int *)(param_1 + 0x70);
          if (iVar3 != 0) {
            iVar6 = uVar10 + *param_2;
            if (*(int *)(param_1 + 0x78) != 0) {
LAB_000340ec:
              (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9 + 4,iVar6 + -4);
              iVar9 = param_2[4];
              iVar3 = *(int *)(param_1 + 0x70);
              iVar6 = uVar10 + *param_2;
              goto LAB_00034110;
            }
            goto LAB_00033fb4;
          }
        }
        else {
          (**(code **)(iVar5 + 0x18))
                    (*(undefined4 *)(param_1 + 0x68),iVar9,4,*(undefined4 *)(param_1 + 0x1ac));
          iVar3 = *(int *)(param_1 + 0x70);
          if (iVar3 != 0) {
            iVar9 = param_2[4];
            iVar6 = uVar10 + *param_2;
            if (*(int *)(param_1 + 0x78) != 0) {
              iVar5 = *(int *)(param_1 + 0x60);
              if (iVar5 != 0) goto LAB_000340ec;
              pcVar12 = *(code **)(iVar3 + 0xc);
              goto LAB_00034114;
            }
LAB_00033fb4:
            (**(code **)(iVar3 + 0xc))
                      (*(undefined4 *)(param_1 + 0x80),iVar9,iVar6,*(undefined4 *)(param_1 + 0x1ac))
            ;
          }
          iVar5 = *(int *)(param_1 + 0x60);
          iVar9 = param_2[4];
          if (iVar5 == 0) goto LAB_00033ff0;
        }
        (**(code **)(iVar5 + 0x10))(*(undefined4 *)(param_1 + 0x68),iVar9,uVar10 + *param_2);
        iVar9 = param_2[4];
      }
LAB_00033ff0:
      iVar3 = *param_2;
      iVar5 = uVar10 + iVar3 + (int)unaff_s3;
      *(int *)(param_1 + 0x1ac) = *(int *)(param_1 + 0x1ac) + 1;
      param_2[8] = uVar10 + iVar3;
      param_2[5] = iVar9;
    }
    else {
      *(char *)(param_2[4] + 1) = (char)((uint)(iVar5 + -5) >> 0x18);
      *(char *)(param_2[4] + 2) = (char)((uint)(*param_2 + -5) >> 0x10);
      *(char *)(param_2[4] + 3) = (char)((uint)(*param_2 + -5) >> 8);
      *(char *)(param_2[4] + 4) = (char)*param_2 + -5;
      iVar3 = *(int *)(param_1 + 0x1ac);
      iVar5 = *param_2 + -1;
      param_2[5] = param_2[4] + 1;
      *(int *)(param_1 + 0x1ac) = iVar3 + 1;
    }
    if (local_2c == *(int *)puVar1) {
      return iVar5;
    }
    iVar5 = local_2c;
    (*(code *)PTR___stack_chk_fail_000adca4)();
LAB_00034520:
    param_2[6] = iVar5;
    piVar11 = unaff_s3;
LAB_0003420c:
    FUN_0002fb84(param_2,piVar11,unaff_s5);
    iVar5 = param_2[6];
    unaff_s3 = &iStack_28 + uVar7 * 3;
    local_5c[uVar7 * 3 + 2] = 1;
    local_5c[uVar7 * 3] = iVar5;
    FUN_0002fb84(param_2,piVar11,unaff_s5);
    if (local_64 != 0) {
      local_5c[uVar7 * 3 + 1] = param_2[6] - local_5c[uVar7 * 3];
    }
  } while( true );
}

